Peter Wemm [Mon, 14 Jan 2008 22:53:01 +0000 (22:53 +0000)]
Update the KVA_PAGES comments for the effect that PAE has on it. It
becomes a unit size of 2MB instead of 4MB and must be a multiple of 8 to
get a valid KERNBASE.
Alan Cox [Mon, 14 Jan 2008 21:25:06 +0000 (21:25 +0000)]
Make pmap_is_prefaultable() more TLB friendly. Specifically, make it use
the kernel's direct map instead of the pmap's recursive mapping to access
the lowest level in the page table. The direct map is preferable for two
reasons: (1) The TLB is more likely to hold the required direct mapping
because pmap_enter() has already used the direct map to access a nearby
PTE and (2) loading a direct mapping into the TLB involves walking only 2
or 3 levels of the page table instead of 4.
David Schultz [Mon, 14 Jan 2008 09:21:34 +0000 (09:21 +0000)]
Changing 'r' to a size_t in the previous commit turned quicksort
into slowsort for some sequences because different parts of the
code used 'r' to store two different things, one of which was
signed. Clean things up by splitting 'r' into two variables, and
use a more meaningful name.
Pyun YongHyeon [Mon, 14 Jan 2008 07:16:48 +0000 (07:16 +0000)]
Implement WOL capability.
- Turn on WOL bits in suspend/shutdown method.
- WOL is disabled in resume routine as WOL can interfere normal
Rx operation.
- Move stge_reset() to stge_init_locked() as resetting hardware
clears configured Rx information which in turn results in
non-working Rx module after suspend/shutdown operation.
David Schultz [Mon, 14 Jan 2008 02:18:00 +0000 (02:18 +0000)]
Tests for lrintl() and llrintl(). I didn't add anything specially
tailored for the long double format; instead, I just modified the existing
tests to test lrintl() and llrintl() as well.
Tim Kientzle [Sun, 13 Jan 2008 23:50:30 +0000 (23:50 +0000)]
Since the tar bidder can never get called more than once, it
doesn't need to compensate for this situation.
While here, fix a minor longstanding bug that empty tar archives
(which begin with at least 512 zero bytes) never properly reported
their format. In particular, this fixes the output of:
bsdtar tvvf /dev/zero
And, of course, a new test to verify that libarchive correctly
recognizes the format of such files.
Attilio Rao [Sun, 13 Jan 2008 14:44:15 +0000 (14:44 +0000)]
VOP_LOCK1() (and so VOP_LOCK()) and VOP_UNLOCK() are only used in
conjuction with 'thread' argument passing which is always curthread.
Remove the unuseful extra-argument and pass explicitly curthread to lower
layer functions, when necessary.
KPI results broken by this change, which should affect several ports, so
version bumping and manpage update will be further committed.
Tested by: kris, pho, Diego Sardina <siarodx at gmail dot com>
Unbreak detection of cryptodev support for FreeBSD which was broken
with OpenSSL 0.9.8 import.
Note that this does not enable cryptodev by default, as it was the
case with OpenSSL 0.9.7 in FreeBSD base, but this change makes it
possible to enable cryptodev at all.
This has been submitted upstream as:
http://rt.openssl.org/Ticket/Display.html?id=1624
David E. O'Brien [Sun, 13 Jan 2008 09:45:53 +0000 (09:45 +0000)]
Use our standard verbose spelling of rules variables.
(as a nice side affect, this will make gnu/usr.bin/cvs/contrib/Makefile
have a later date than contrib/cvs/contrib/Makefile.in - which will help
the build break after the 1.11.22 CVS import...)
David E. O'Brien [Sun, 13 Jan 2008 06:14:29 +0000 (06:14 +0000)]
Merge what 1.11.17 -> 1.11.22 ../doc/cvs.1 changes I could.
We never merged in the 1.11.15 -> 1.11.17 changes - due to the moving
of cvs.1 from man/ to doc/ and being auto generated.
David E. O'Brien [Sun, 13 Jan 2008 06:12:27 +0000 (06:12 +0000)]
Merge rev 1.28 (CAN-2005-0753 / FreeBSD-SA-05:05.cvs fixes),
rev 1.27 ("iso8601" option keyword) revs 1.12/1.10/1.5/1.4 ($CVSHeader$
support) rev 1.2 ($CVS_LOCAL_BRANCH_NUM support for local commit
feature of cvsup) into version 1.11.22.
Note rev 1.21 ("-D date" checkout bug relating to 1.1.1.1 vs 1.1
revisions), rev 1.13 (allow -D'date' with -r'branch' on a checkout),
rev 1.6 (use xstrdup rather than strdup) are fixed in the vendor sources
David E. O'Brien [Sun, 13 Jan 2008 06:10:58 +0000 (06:10 +0000)]
Merge rev 1.2 (extensions to the $CVSROOT/config syntax) and
rev 1.4 (1.12 CVSROOT/config keyword expansion forward compatability)
into version 1.11.22.
David E. O'Brien [Sun, 13 Jan 2008 06:08:17 +0000 (06:08 +0000)]
Merge rev 1.3 (catch write-lock attempts immediately if running in
read-only mode) & rev 1.2 (check out from read-only repository support)
into version 1.11.22.
David E. O'Brien [Sun, 13 Jan 2008 06:06:15 +0000 (06:06 +0000)]
Toss all of our local changes - they are OBE.
However, stay with version 1.9.26's buflen of BUFSIZ as we have in the
past vs. going with the 1.10+ limited length of 128.
David E. O'Brien [Sun, 13 Jan 2008 06:04:43 +0000 (06:04 +0000)]
Change default from rsh to ssh. (moved from client.c).
Merge rev 1.14: comprehensive -T CVS/Template support, rev 1.9: new long
flag that causes cvs to ignore the CVSROOT/passwd file, rev 1.3: support
for checking out from a read-only repository, rev. 1.2: support for local
$Id$ keyword into cvs 1.11.22.
Note that rev 1.4 (make verifymsg extra useful) is OBE.
David E. O'Brien [Sun, 13 Jan 2008 06:02:28 +0000 (06:02 +0000)]
Merge rev 1.7: always upload new files, even if the timestamps match,
rev 1.4: flip the default for CVS_RSH to "ssh", rev 1.2: fix a problem
sometimes seen when doing checkouts from a local repo and committing
via remote cvs (a cvs -d override of the mismatched CVS/Root files was
missing) into cvs 1.11.22.
- Add support for using swap backed md(4) devices for building the
disk image. In some cases this can be a significant speed-up, if
most of the image can be kept in RAM while being populated.
On the 2GB image I'm currently working with, the build time,
excluding buildworld/buildkernel, goes from ~17 minutes to ~6
minutes.
This is not enabled by default, as it might have the opposite effect
on low-memory systems.
- During the generation of the image file be a bit more verbose in the
log file so it is possible to see what's being done.
- Add a NANO_DISKIMGDIR variable which makes it possibly to place the
final images somewhere other than ${MAKEOBJDIRPREFIX}. The default
value for NANO_DISKIMGDIR is $MAKEOBJDIRPREFIX.
Nate Lawson [Sat, 12 Jan 2008 22:13:12 +0000 (22:13 +0000)]
Fix GPE livelock that occurs on HP/Compaq laptops, mostly in the thermal
zone code. The GPE handler method (i.e. _L00) generates various Notify
events that need to be run to completion before the GPE is re-enabled.
In ACPI-CA, we queue an asynch callback at the same priority as a Notify
so that it will only run after all Notify handlers have completed. The
callback re-enables the GPE afterwards. We also changed the priority of
Notifies to be the same as GPEs, given the possibility that another GPE
could arrive before the Notifies have completed and we don't want it to
get queued ahead of the rest.
The ACPI-CA change was submitted by Alexey Starikovskiy (SUSE) and will
appear in a later release. Special thanks to him for helping track this
bug down.
Nate Lawson [Sat, 12 Jan 2008 22:13:12 +0000 (22:13 +0000)]
Fix GPE livelock that occurs on HP/Compaq laptops, mostly in the thermal
zone code. The GPE handler method (i.e. _L00) generates various Notify
events that need to be run to completion before the GPE is re-enabled.
In ACPI-CA, we queue an asynch callback at the same priority as a Notify
so that it will only run after all Notify handlers have completed. The
callback re-enables the GPE afterwards. We also changed the priority of
Notifies to be the same as GPEs, given the possibility that another GPE
could arrive before the Notifies have completed and we don't want it to
get queued ahead of the rest.
The ACPI-CA change was submitted by Alexey Starikovskiy (SUSE) and will
appear in a later release. Special thanks to him for helping track this
bug down.
Olivier Houchard [Sat, 12 Jan 2008 21:11:43 +0000 (21:11 +0000)]
Back when I committed the arm port, I've been asked to move
memcpy/memset/memcmp and friends from libkern/arm to arm/arm/support.S, and so
I did, but in the process, I didn't add the appropriate copyrights.
This is a major oversight from me, and I apology to the NetBSD people for it.
Maxim Konovalov [Sat, 12 Jan 2008 20:52:30 +0000 (20:52 +0000)]
o From the Problem Report: the TCP_DROP_SYNFIN kernel option is now
included in the kernel by default. Remove reference to this option
from defaults/rc.conf and rc.conf(5).
Xin LI [Sat, 12 Jan 2008 00:11:26 +0000 (00:11 +0000)]
- Handle the case where interface from "middle" is missing by
more carefully inspecting the return value from sysctl(3). [1]
- Use calloc instead of malloc+memset of zero.
John Baldwin [Fri, 11 Jan 2008 23:57:39 +0000 (23:57 +0000)]
The previous revision broke the case of reconnecting to a TCP NFS server
via a new socket during an NFS operation as that reconnect takes place in
the context of an arbitrary thread with an arbitrary credential. Ideally
we would like to use the mount point's credential for the entire process
of setting up the socket to connect to the NFS server. Since some of the
APIs (sobind(), etc.) only take a thread pointer and infer the credential
from that instead of a direct credential, work around the problem by
temporarily changing the current thread's credential to that of the mount
point while connecting the socket and then reverting back to the original
credential when we are done.
Reviewed by: rwatson
Tested on: UDP, TCP, TCP with forced reconnect
Bruce Evans [Fri, 11 Jan 2008 18:59:35 +0000 (18:59 +0000)]
MFamd64 (everything possible up to 1.19; mainly the amd64 implementations
of fpget*() and fpset*()).
The i386 fpget*() were efficient but a bit obfuscated (using macros
and a case statement to demultiplex them through a single inline).
The demultiplexing mainly gave smaller source code.
The i386 fpset*() were obfuscated in the same way and were very
inefficient due to the case statement not having enough cases or
complexity so all cases used the FP environment.
This also fixes a harmless bug in rev.1.12. fpsetmask() extracted the
old value from the bit-field twice, but the doubled shift was harmless
since the shift count is 0.
All fp*() interfaces are now inline functions on i386. They used to
be macros that call (a different set of) inline functions. This is a
small ABI change which shouldn't cause problems since cases where
inlining fails (mainly -O0) only give (working) static functions.
Bruce Evans [Fri, 11 Jan 2008 18:27:01 +0000 (18:27 +0000)]
Separate fpresetsticky() from the other fpset functions so that the
others can be replaced cleanly by the amd64 versions. There is no
current amd64 version to merge, but there is an old one which is
similar.
Fix the following bugs in fpresetsticky():
- garbage args clobbered non-sticky bits in the status register
- the return value was usually garbage since it was masked with the
arg instead of with the field selector.
Optimize fpresetsticky() to avoid using the environment as in
feclearexcept() (use only fnclex() if possible) and also to avoid
using fnclex() for null changes. The second of these optimizations
might not be so good since its branch might cost more than it saves.
Bruce Evans [Fri, 11 Jan 2008 17:54:20 +0000 (17:54 +0000)]
MFamd64 1.15-1.18 (cosmetic changes, mainly to comments). The inline
functions haven't been cleaned up here because the amd64 cleanups
don't apply directly and the functions here will be merged or rewritten
later.
Bruce Evans [Fri, 11 Jan 2008 17:11:32 +0000 (17:11 +0000)]
Fix fpset*() to not trap if there is a currently unmasked exception.
Unmasked exceptions (which can be fixed up using fpset*() before they
trap) are very rare, especially on amd64 since SSE exceptions trap
synchronously, but I want to merge the faster amd64 implementations of
fpset*() back to i386 without introducing the bug on i386.
The i386 implementation has always avoided the trap automatically by
changing things using load/store of the FP environment, but this is
very slow. Most changes only affect the control word, so they can
usually be done much more efficiently, and amd64 has always done this,
but loading the control word can trap.
This version use the fast method only in the usual case where it will
not trap. This only costs a couple of integer instructions (including
one branch which I haven't optimized carefully yet) in the usual case,
but bloats the inlines a lot. The inlines were already a bit too large
to handle both the FPU and SSE.
The wakeup() line from the rev. 1.319 is wrong and reintroduces
a panic race on module unload. The wakeup() is internal to
kproc_exit/kthread_exit. The correct fix is to fix the msleep() in
detach to sleep on fdc->fdc_thread instead of &fdc->fdc_thread.
Noted and reviewed by: jhb
Pointy hat to: kib
MFC after: 1 week
Attilio Rao [Fri, 11 Jan 2008 16:38:12 +0000 (16:38 +0000)]
lockmgr() function will return successfully when trying to work under
panic but it won't actually lock anything.
This can lead some paths to reach lockmgr_disown() with inconsistent
lock which will let trigger the relative assertions.
Fix those in order to recognize panic situation and to not trigger.
Bruce Evans [Fri, 11 Jan 2008 14:11:46 +0000 (14:11 +0000)]
Fix some style bugs:
- fix a previous style fix: shifts should be in the correct direction even
if they are null.
- restore a comment about namespace pollution from floatingpoint.h 1.12 and
update it.
- remove unused namespace pollution FP_*REG.
- improve some comments.
- sort macro definitions for entry points.
- don't use underscores for macro args.
Wakeup the thread doing the fdc_detach() when the fdc worker thread exits [1].
Write access to the write-protected floppy shall call device_unbusy() to
pair the device_busy() in the fd_access() [2].
David Schultz [Fri, 11 Jan 2008 04:18:25 +0000 (04:18 +0000)]
- Correct the range check in the double version to catch negative values
that would overflow.
- Style fixes and improved handling of NaNs suggested by bde.
Kip Macy [Thu, 10 Jan 2008 23:51:34 +0000 (23:51 +0000)]
If we're not running with multiqueue enabled we need to wait to acquire the
rspq lock. Not doing so was causing us to skip re-enabling the interrupt.
- remove duplicate credits sysctl
- add support for dumping hardware context of the txq
- decrement budget_left when we break out of the process_responses loop
John Baldwin [Thu, 10 Jan 2008 23:43:47 +0000 (23:43 +0000)]
Work around problems with the ppbus(4)'s interesting way of managing
interrupt handlers for child devices by adding a dummy handler that is
always present so that the underlying interrupt thread is always around
avoiding panics from stray interrupts.
John Baldwin [Thu, 10 Jan 2008 23:36:00 +0000 (23:36 +0000)]
Pass curthread to various socket routines (socreate(), sobind(), and
soconnect()) instead of &thread0 when establishing a connection to the NFS
server. Otherwise inconsistent credentials may be used when setting up
the NFS socket.
Robert Watson [Thu, 10 Jan 2008 22:11:20 +0000 (22:11 +0000)]
Don't zero td_runtime when billing thread CPU usage to the process;
maintain a separate td_incruntime to hold unbilled CPU usage for
the thread that has the previous properties of td_runtime.
When thread information is requested using the thread monitoring
sysctls, export thread td_runtime instead of process rusage runtime
in kinfo_proc.
This restores the display of individual ithread and other kernel
thread CPU usage since inception in ps -H and top -SH, as well for
libthr user threads, valuable debugging information lost with the
move to try kthreads since they are no longer independent processes.
There is universal agreement that we should rewrite the process and
thread export sysctls, but this commit gets things going a bit
better in the mean time. Likewise, there are resevations about the
continued validity of statclock given the speed of modern processors.