Andre Oppermann [Sat, 19 Nov 2005 17:04:52 +0000 (17:04 +0000)]
Remove 'ipprintfs' which were protected under DIAGNOSTIC. It doesn't
have any know to enable it from userland and could only be enabled by
either setting it to 1 at compile time or through the kernel debugger.
In the future it may be brought back as KTR tracing points.
Damien Bergamini [Sat, 19 Nov 2005 16:54:55 +0000 (16:54 +0000)]
Load firmware images directly from the filesystem (looks into /etc/firmware
directory by default) without requiring the user to load them by hand using
e.g iwicontrol. Get rid of the old ioctl crud.
Updated iwi-firmware port coming soon.
Joseph Koshy [Sat, 19 Nov 2005 12:21:11 +0000 (12:21 +0000)]
- Move the documentation for the ENABLE_WPA_SUPPLICANT_EAPOL knob to into
the list for 'world' builds.
- Increase the width of a bullet list.
- Use .Ss to name sub-sections of this file.
Ruslan Ermilov [Sat, 19 Nov 2005 06:45:44 +0000 (06:45 +0000)]
Add the NO_INCS knob to bsd.prog.mk and bsd.lib.mk to not include
bsd.incs.mk, and use it when installing 32-bit compat libraries
on amd64. This causes it to *not* overwrite native headers with
i386 versions, which was the case with <fenv.h> and <vgl.h>.
Bruce Evans [Sat, 19 Nov 2005 02:38:27 +0000 (02:38 +0000)]
Moved all the optimizations for |x| <= 9pi/2 from
__ieee754_rem_pio2f() to its 3 callers and manually inline them.
On Athlons, with favourable compiler flags and optimizations and
favourable pipeline conditions, this gives a speedup of 30-40 cycles
for cosf(), sinf() and tanf() on the range pi/4 < |x| <= 9pi/4, so
thes functions are now signifcantly faster than the hardware trig
functions in many cases. E.g., in a benchmark with uniformly distributed
x in [-2pi, 2pi], A64 hardware fcos took 72-129 cycles and cosf() took
37-55 cycles. Out-of-order execution is needed to get both of these
times. The optimizations in this commit apparently work more by
removing 1 serialization point than by reducing latency.
Craig Rodrigues [Fri, 18 Nov 2005 22:34:31 +0000 (22:34 +0000)]
Add "shortnames" and "longnames" mount options which are
synonyms for "shortname" and "longname" mount options. The old
(before nmount()) mount_msdosfs program accepted "shortnames" and "longnames",
but the kernel nmount() checked for "shortname" and "longname".
So, make the kernel accept "shortnames", "longnames", "shortname", "longname"
for forwards and backwarsd compatibility.
Discovered by: Rainer Hurling <rhurlin at gwdg dot de>
Ed Maste [Fri, 18 Nov 2005 19:41:55 +0000 (19:41 +0000)]
Add sanity checking for QUEUE(3) lists under INVARIANTS. Races may lead
to list corruption, which can be difficult to unravel in a post-mortem
analysis. These checks verify that prev and next pointers are consistent
when inserting or removing elements, thus catching any corruption earlier.
Also use TRASHIT to break LIST and SLIST link pointers on element removal,
from mlaier via -hackers.
John Baldwin [Fri, 18 Nov 2005 19:26:46 +0000 (19:26 +0000)]
- Always print the trap number so that we have something to start with for
mystery traps. If we don't have a message for a given trap, just use
UNKNOWN for the message.
- Add trap messages for T_XMMFLT and T_RESERVED.
Andre Oppermann [Fri, 18 Nov 2005 17:13:22 +0000 (17:13 +0000)]
Document CLOCK_UPTIME which returns the current uptime in SI seconds.
At the moment it is just an alias for CLOCK_MONOTONIC which reports
the same number.
Andre Oppermann [Fri, 18 Nov 2005 14:44:48 +0000 (14:44 +0000)]
In ip_forward() copy as much into the temporary error mbuf as we
have free space in it. Allocate correct mbuf from the beginning.
This allows icmp_error() to quote the entire TCP header in error
messages.
Craig Rodrigues [Fri, 18 Nov 2005 06:06:10 +0000 (06:06 +0000)]
- Add parsing for the following existing UFS/FFS mount options in the nmount()
callpath via vfs_getopt(), and set the appropriate MNT_* flag:
-> acls, async, force, multilabel, noasync, noatime,
-> noclusterr, noclusterw, snapshot, update
- Allow errmsg as a valid mount option via vfs_getopt(),
so we can later add a hook to propagate mount errors back
to userspace via vfs_mount_error().
John Polstra [Fri, 18 Nov 2005 02:43:49 +0000 (02:43 +0000)]
Fix a bug that caused some /dev entries to continue to exist after
the underlying drive had been hot-unplugged from the system. Here
is a specific example. Filesystem code had opened /dev/da1s1e.
Subsequently, the drive was hot-unplugged. This (correctly) caused
all of the associated /dev/da1* entries to be deleted. When the
filesystem later realized that the drive was gone it closed the
device, reducing the write-access counts to 0 on the geom providers
for da1s1e, da1s1, and da1. This caused geom to re-taste the
providers, resulting in the devices being created again. When the
drive was hot-plugged back in, it resulted in duplicate /dev entries
for da1s1e, da1s1, and da1.
This fix adds a new disk_gone() function which is called by CAM when a
drive goes away. It orphans all of the providers associated with the
drive, setting an error condition of ENXIO in each one. In addition,
we prevent a re-taste on last close for writing if an error condition
has been set in the provider.
Craig Rodrigues [Fri, 18 Nov 2005 01:31:10 +0000 (01:31 +0000)]
In vfs_nmount(), check to see if "update" mount option was passed
in, and if so, set MNT_UPDATE filesystem flag.
vfs_nmount() calls vfs_domount(), and there is special logic
inside vfs_domount() if MNT_UPDATE is set. This is very important
when we want to do an update mount of the root filesystem, using nmount().
Robert Watson [Thu, 17 Nov 2005 19:31:52 +0000 (19:31 +0000)]
Print (total - used) as the amount of available swap for a swap device
when printing swapinfo output, rather than (total), as that is (strictly
speaking) more accurate.
Pointed out by: Rob <spamrefuse at yahoo dot com>
MFC after: 3 days
Hartmut Brandt [Thu, 17 Nov 2005 12:19:19 +0000 (12:19 +0000)]
When a user is in more than 16 groups the call to authunix_create() will
result in abort() beeing called. This is because there is a limit of
the number of groups in the RPC which is 16. When the actual number of
groups is too large it results in xdr_array() returning an error which,
in turn, authunix_create() handles by just calling abort().
Fix this by passing only the first 16 groups to authunix_create().
Colin Percival [Thu, 17 Nov 2005 11:01:32 +0000 (11:01 +0000)]
Correctly handle a TCP connection being shutdown by the server while
we're reading response headers. (Handle it as a connection-killing
error, rather than entering an infinite loop reading zero bytes.)
Reported by: simon
Discovered thanks to: A not-very-transparent transparent HTTP proxy.
MFC after: 3 days
Gleb Smirnoff [Thu, 17 Nov 2005 10:13:18 +0000 (10:13 +0000)]
- Backout last change, since it is memory overkill for a non busy host or
for a notebook with em(4) adapter.
- Introduce tunables em.hw.txd and em.hw.rxd, which allow administrator
to configure number of transmit and receive descriptors.
- Check em.hw.txd and em.hw.rxd against hardware limits [*] and require
them to be multiple of 128.
[*] According to comments in if_em.h the 82540EM/82541ER chips can handle
more than 256 descriptors. Since we don't have this hardware to test,
we decided to mimic NetBSD wm(4) driver, that limits these chips to
256 descriptors.
Bruce Evans [Thu, 17 Nov 2005 03:53:22 +0000 (03:53 +0000)]
Minor cleanups:
s_cosf.c and s_sinf.c:
Use a non-bogus magic constant for the threshold of pi/4. It was 2 ulps
smaller than pi/4 rounded down, but its value is not critical so it should
be the result of natural rounding.
s_cosf.c and s_tanf.c:
Use a literal 0.0 instead of an unnecessary variable initialized to
[(float)]0.0. Let the function prototype convert to 0.0F.
Bruce Evans [Thu, 17 Nov 2005 02:20:04 +0000 (02:20 +0000)]
Rearranged the the optimizations for special cases to reduce the average
number of branches.
Use a non-bogus magic constant for the threshold of pi/4. It was 2 ulps
smaller than pi/4 rounded down, but its value is not critical so it should
be the result of natural rounding. Use "<=" comparisons with rounded-
down thresholds for all small multiples of pi/4.
Cleaned up previous commit:
- use static const variables instead of expressions for multiples of pi/2
to ensure that they are evaluated at compile time. gcc currently
evaluates them at compile time but C99 compilers are not required
to do so. We want compile time evaluation for optimization and don't
care about side effects.
- use M_PI_2 instead of a magic constant for pi/2. We need magic constants
related to pi/2 elsewhere but not here since we just want pi/2 rounded
to double and even prefer it to be rounded in the default rounding mode.
We can depend on the cmpiler being C99ish enough to round M_PI_2 correctly
just as much as we depended on it handling hex constants correctly. This
also fixes a harmless rounding error in the hex constant.
- keep using expressions n*<value for pi/2> in the initializers for the
static const variables. 2*M_PI_2 and 4*M_PI_2 are obviously rounded in
the same way as the corresponding infinite precision expressions for
multiples of pi/2, and 3*M_PI_2 happens to be rounded like this, so we
don't need magic constants for the multiples.
- fixed and/or updated some comments.
John Baldwin [Wed, 16 Nov 2005 20:58:40 +0000 (20:58 +0000)]
Revert a part of the previous commits to these files that made the NMI
IPI_STOP handling code use atomic_readandclear() to execute the restart
function on the first CPU to resume and restore the behavior of always
executing the restart function on the BSP since this is in fact what the
non-NMI IPI_STOP handler does. I did add back in a statement to clear
the restart function pointer after it is executed to match the behavior
of the non-NMI IPI_STOP handler.
John Baldwin [Wed, 16 Nov 2005 20:55:57 +0000 (20:55 +0000)]
Revert previous commit to these files. There isn't a race necessitating
an xchg instruction as we only try to execute the startup function if
the CPU ID is 0 (i.e. the BSP). I missed this earlier.
John Baldwin [Wed, 16 Nov 2005 20:29:29 +0000 (20:29 +0000)]
Fix a typo in the check for an invalid APIC. If we are told about an
I/O APIC that doesn't exist, then a read of the version register is going
to return -1 which is 0xffffffff not 0xffffff.
Tested on: i386
Tested by: Nikos Ntarmos ntarmos at ceid dot upatras dot gr
MFC after: 1 week
SUZUKI Shinsuke [Wed, 16 Nov 2005 12:36:08 +0000 (12:36 +0000)]
fixed a kernel crash due to an improper removal of callout-timer
(ToDo: similar fix is necessary for other NDP-related callout-timers
in netinet6/nd6*.c)
Sync as close as possible with NetBSD.
This includes fixes and cleanups listed below:
- If a process dissappears while we are signalling it, don't count it as a
match/error.
- Better handling of errors and messages.
- Downgrade failure to kill(2) (other than ESRCH) from fatal error to a
warning; otherwise processing aborts and possibly matching killees would
remain unsignalled. This makes pkill match the Solaris behavior.
- Exit with 2 on usage errors as documented.
Obtained from: NetBSD
Glanced at by: maintainer (gad) [a bit different version of this patch]
Yaroslav Tykhiy [Wed, 16 Nov 2005 10:45:19 +0000 (10:45 +0000)]
Avoid invoking the current script again when we need
to issue sub-commands, e.g., restart = stop + start.
By calling run_rc_command instead, we provide rc.d
scripts with full control over their configuration
variables.
For an example problem the former approach caused, see
http://lists.freebsd.org/pipermail/freebsd-rc/2005-October/000311.html
To speed such operation up, add -I option which works like rm(1)'s -i
option (unfortunately -i is already used in pkill(1)), ie. pkill will
ask for confirmation before killing each matching process.
After adding -j, -F, -i, -S, -o and -L options and other improvements,
I think I can add myself to the copyright header.
Ruslan Ermilov [Wed, 16 Nov 2005 07:13:37 +0000 (07:13 +0000)]
Having three options (-a, -A, -I) controlling the output of dotted
files is too much and hard to follow. Instead, make the -I option
just mean "do not automatically set -A for root". That is, if -A
is explicitly set, -I is ignored. Also, document -I in usage().
(The ls.c diff is better viewed relative to rev. 1.80.)
No objection: mux
Silence from: mnag
MFC after: 3 days
Maksim Yevmenkin [Tue, 15 Nov 2005 20:36:26 +0000 (20:36 +0000)]
Revise hcsecd(8) and sdpd(8) rc.d scripts.
- Have both scripts automatically kldload ng_btsocket(4). I did not want to
do it, but its easier for users and it seems other scripts do similar things;
- Assign few variables after load_rc_config, so the /etc/rc.conf overrides
actually work;
Damien Bergamini [Tue, 15 Nov 2005 17:58:16 +0000 (17:58 +0000)]
Add some initial bits (currently unused) for upcoming AMRR support.
AMRR = Adaptive Multi Rate Retry algorithm
More information: http://www-sop.inria.fr/rapports/sophia/RR-5208.html
Damien Bergamini [Tue, 15 Nov 2005 17:48:49 +0000 (17:48 +0000)]
Add some initial bits (currently unused) for upcoming AMRR support.
AMRR = Adaptive Multi Rate Retry algorithm
More information: http://www-sop.inria.fr/rapports/sophia/RR-5208.html
Sam Leffler [Tue, 15 Nov 2005 05:47:20 +0000 (05:47 +0000)]
bandaid inconsistent state handling: the rate index map may be
stale when called to reset rate control state causing us to
pickup an invalid index, check for this and skip 'em (things
will eventually get fixed up so this is not harmful)
Hajimu UMEMOTO [Tue, 15 Nov 2005 03:40:15 +0000 (03:40 +0000)]
The KAME's getipnodebyaddr() code honor the MULTI_PTRS_ARE_ALIASES
define also, but res_config.h was not included into libc/net/name6.c.
So getipnodebyaddr() ignored the multiple PTRs.
PR: kern/88241
Submitted by: Dan Lukes <dan__at__obluda.cz>
MFC after: 3 days