Nik Clayton [Thu, 11 Nov 2004 19:47:55 +0000 (19:47 +0000)]
Switch over to a different, more flexible test output protocol that's
understood by Perl's Test::Harness module and prove(1) commands.
Update README to describe the new protocol. The work's broken down into
two main sets of changes.
First, update the existing test programs (shell scripts and C programs)
to produce output in the ok/not ok format, and to, where possible, also
produce a header describing the number of tests that are expected to be
run.
Second, provide the .t files that actually run the tests. In some cases
these are copies of, or very similar too, scripts that already existed.
I've kept the old scripts around so that it's possible to verify that
behaviour under this new system (in terms of whether or not a test fails)
is identical to the behaviour under the old system.
David E. O'Brien [Thu, 11 Nov 2004 07:45:01 +0000 (07:45 +0000)]
Don't attempt to claim what version of GCC we're documenting. The manpage
is still mostly the GCC 2.95 one, with faint attempts by me over the years
to document a few new switches. Thus, it is dubious to claim documentation
of specific modern GCC versions.
David E. O'Brien [Thu, 11 Nov 2004 01:09:56 +0000 (01:09 +0000)]
Compiling with 'strict-aliasing' optimization breaks some [notable] ports.
GCC turns on 'strict-aliasing' optimization at all levels above -O[1], so
explicitly turn it off when using compiling with the -O2 optimization level.
Peter Wemm [Wed, 10 Nov 2004 23:31:07 +0000 (23:31 +0000)]
Change WANT_LIB32 to WITH_LIB32. Sorry for the whiplash folks.
It was pointed out to me that the convention we have is to use WITH_
elsewhere in the system, eg: ports etc. This is all temporary anyway
and presumably will be inverted to a NO_LIB32 or something like it in
the future.
Olivier Houchard [Wed, 10 Nov 2004 22:08:27 +0000 (22:08 +0000)]
Add a new option, ARM32_NEW_VM_LAYOUT. When set, we try to put up to 4
L2 tables in one page, instead of the old 1 L2 table <=> 1 page behavior.
While I'm there, add ARM9_CACHE_WRITE_THROUGH, which I forgot last time.
Warner Losh [Wed, 10 Nov 2004 17:25:49 +0000 (17:25 +0000)]
sranddev() is not magic pixie dust. While it gives a good random
seed, the random number generator rand(3) still sucks and is unlikely
sufficient for crypto use. Correct what appears to be a cut and paste
error from the srandomdev() man page.
Remove hack which mounts the root filesystem R/W if the device is
named 'md<something>'. While convenient, it does not belong here,
if anywhere at all.
Pick up the inode number using VOP_GETATTR() rather than caching it
in all vnodes on the off chance that linprocfs needs it. If we can afford
to call vn_fullpath() we can afford the much cheaper VOP_GETATTR().
Before trying to update metadata (so open consumer for writing), be sure
that the events queue is empty. In other case we're able to hit the race
where for example da0s1 is tasted by some other class, which means that
da0 is open with exclusive bit set, which means that we can't open da0
for writing if it is our component.
Reported by: Attila Nagy <bra@fsn.hu> (and somebody else sometime ago,
but I cannot find who it was)
Introduce g_waitidlelock() function which is simlar to g_waitidle(),
but should be called with the topology lock held and returns with the
topology lock held and empty event queue.
Don't rely on DIRTY flag to be sure that consumer if open, because
DIRTY flag can be removed in idle process. Use consumer's acw field
instead to avoid opening consumer twice.
Stop pretending to have a vm_object backing the underlying disk vnode:
it isn't used for anything anywhere and the vnode_pager would explode
if we attempted to.
For BIO_READ check if provider is open for reading and for BIO_WRITE,
check if provider is open for writing.
This fixes panic when device is open only for writing and we send write
request.
Wilko Bulte [Tue, 9 Nov 2004 22:24:47 +0000 (22:24 +0000)]
Get in sync with reality: TurboLaser was never really well supported to
start with, so let it die in peace. While there, remove Multia-class
as 486-like performance will not buy us much when 6.x arrives.
Ian Dowse [Tue, 9 Nov 2004 20:51:32 +0000 (20:51 +0000)]
Attempt to fix a number of race conditions in the handling of
transfer timeouts that typically cause a transfer to be completed
twice, resulting in panics and page faults:
o A transfer completion interrupt could arrive while an abort_task
event was set up, so the transfer would be aborted after it had
completed. This is very easy to reproduce. Fix this by setting
the transfer status to USBD_TIMEOUT before scheduling the
abort_task so that the transfer completion code will ignore it.
o The transfer completion code could execute concurrently with the
timeout callout, leaving the callout blocked (e.g. waiting for
Giant) while the transfer completion code runs. In this case,
callout_stop() does not prevent the callout from running, so
again the timeout code would run after the transfer was complete.
Handle this case by checking the return value from callout_stop(),
and ignoring the transfer if the callout could not be removed.
o Finally, protect against a timeout callout occurring while a
transfer is being aborted by another process. Here we arrange
for the timeout processing to ignore the transfer, and use
callout_drain() to ensure that the callout has really gone before
completing the transfer.
This was tested by repeatedly performing USB transfers with a timeout
set to approximately the same as the normal transfer completion
time. In the PR below, apparently this occurred by accident with a
particular printer and the default timeout.
Robert Watson [Tue, 9 Nov 2004 11:28:40 +0000 (11:28 +0000)]
Bump MAC Framework version to 2 in preparation for the upcoming API/ABI
changes associated with adding System V IPC support. This will prevent
old modules from being used with the new kernel, and new modules from
being used with the old kernel.
Add two new rc.conf options: tmpmfs_flags and varmfs_flags.
These can be used to pass extra options to the mdmfs(8) utility,
to customize the finer details of the md file system creation
(i.e. to turn on/off softupdates, to specify a default owner for md
filesystem, etc).
Use these two new flags to mount tmpmfs and varmfs without
softupdates, since it doesn't make much sense to use SU on
malloc-backed file systems.
Reviewed by: mtm
Inspired by: J. D. Bronson, jbronson at wixb dot com
Scott Long [Tue, 9 Nov 2004 07:07:54 +0000 (07:07 +0000)]
First pass at replacing the single global bounce pool with sub-pools that are
appropriate for different tag requirements. With the former global pool,
bounce pages might get allocated that are appropriate for one tag, but not
appropriate for another, but the system had no way to distinguish between them.
Now zones with distinct attributes are created to hold pages, and each tag
that requires bouncing is associated with a zone. New zones are created as
needed if no existing zones can meet the requirements of the tag. Stats for
each zone are tracked via the hw.busdma sysctl node.
This should help drivers that are failing with mysterious data corruption.