When writing to PCI configuration registers, don't immediately
read the same register back. It can cause hangs or machine
checks in certain cases. One particular case is with bge(4)
when a reset is initiated for the controller.
John Baldwin [Sat, 31 Mar 2007 23:23:42 +0000 (23:23 +0000)]
Optimize sx locks to use simple atomic operations for the common cases of
obtaining and releasing shared and exclusive locks. The algorithms for
manipulating the lock cookie are very similar to that rwlocks. This patch
also adds support for exclusive locks using the same algorithm as mutexes.
A new sx_init_flags() function has been added so that optional flags can be
specified to alter a given locks behavior. The flags include SX_DUPOK,
SX_NOWITNESS, SX_NOPROFILE, and SX_QUITE which are all identical in nature
to the similar flags for mutexes.
Adaptive spinning on select locks may be enabled by enabling the
ADAPTIVE_SX kernel option. Only locks initialized with the SX_ADAPTIVESPIN
flag via sx_init_flags() will adaptively spin.
The common cases for sx_slock(), sx_sunlock(), sx_xlock(), and sx_xunlock()
are now performed inline in non-debug kernels. As a result, <sys/sx.h> now
requires <sys/lock.h> to be included prior to <sys/sx.h>.
The new kernel option SX_NOINLINE can be used to disable the aforementioned
inlining in non-debug kernels.
The size of struct sx has changed, so the kernel ABI is probably greatly
disturbed.
Colin Percival [Sat, 31 Mar 2007 22:59:43 +0000 (22:59 +0000)]
Provide a dummy compression-layer skip function which just reads data and
discards it, for use when the compression layer code doesn't know how to
skip data (e.g., everything other than the "none" compressor). This makes
format level code simpler because that code can now assume that the
compression layer always knows how to skip and will always skip exactly
the requested number of bytes.
John Baldwin [Sat, 31 Mar 2007 21:39:02 +0000 (21:39 +0000)]
Add constants for the fields in a BAR. Also, add two new macros
PCI_BAR_(IO|MEM)() that return true if the passed in value from a BAR
is for an IO or memory BAR, respectively.
John Baldwin [Sat, 31 Mar 2007 20:59:11 +0000 (20:59 +0000)]
Forced commit to note that the previous commit log was wrong for this
file. The previous commit fixed a bug in pci_pending_msix() where it
mis-calculated the word in the PBA to read to see if a message was
pending. Nothing actually uses pci_pending_msix() yet though, so this
didn't result in any visible problems.
Add a pseudo-entry for "Birth of FreeBSD"
Add entries for the six persons listed in the first version of
commit.allow in the old FreeBSD 1 CVS repo.
Correct joergs date, and link him to jkh.
Add my own entry.
Robert Watson [Sat, 31 Mar 2007 19:36:51 +0000 (19:36 +0000)]
Flesh out some information on my mentees and indirect mentees. Flesh out
jake's family tree a bit also, since he's inactive these days but
mentored quite a few interesting people.
Warner Losh [Sat, 31 Mar 2007 19:21:43 +0000 (19:21 +0000)]
Add all my mentees, both formal as well as the ones that I may have
just been the trigger man for core@'s approval in access. Who knew
there were 21 of them...
Warner Losh [Sat, 31 Mar 2007 18:52:29 +0000 (18:52 +0000)]
Add myself and my mentor apparent (jkh), although there was no mentoring
at the time, as such. I'll add my mentees as soon as I can tease that
information from cvs.
Robert Watson [Sat, 31 Mar 2007 16:08:50 +0000 (16:08 +0000)]
Rather than ignoring any error return from getnewvnode() in nameiinit(),
explicitly test and panic. This should not ever happen, but if it does,
this is a preferred failure mode to a NULL pointer dereference in kernel.
Coverity CID: 1716
Found with: Coverity Prevent(tm)
Bruce A. Mah [Sat, 31 Mar 2007 14:29:39 +0000 (14:29 +0000)]
Add myself. nik@ was my doc/ mentor, I never had a mentor for my
now-returned ports/ commit bit, and my src/ mentors (imp / rwatson)
aren't in committers-src.dot yet.
Randall Stewart [Sat, 31 Mar 2007 11:47:30 +0000 (11:47 +0000)]
- Found bug in min split point bundling which caused
incorrect, non-bundlable fragmentation.
- Added min residual to better control split points for
both how big a msg must be as well as how much needs
to be left over.
- With our new algo in place, we need to implicitly
set "end of msg" on the sp-> structure otherwise we
end up with "hung" associations.
- Room reserved up front in IP header by pushing IP
header to back of mbuf.
- Fix so FR's peg count of retransmissions needed.
- Fix so an unlucky chunk that never gets across
will kill the assoc via the kill timer and send an
abort too.
- Fix bug in sctp_input which can result in a crash.
- Do not strip off IP options anymore.
- Clean up sctp_calculate_rto().
- Get rid of unused sysctl.
- Fixed so we discard all M-Cast
- Fixed so port check done AFTER checksum
- Fixed bug in fragmentation code that prevented
us from fragmenting a small complete message when
we needed to.
- Window probes were not marked back to unsent and
flight adjusted when a sack came in with no
window change or accepting of the probe data.
We now fix this with having a mark on the net and
the chunk so we can clear it out when the sack arrives
forcing it to retran just like it was "new" this
improves the handling of window probes, which were
dropped by the receiver.
- Tighten AUTH protocol error checks during INIT/INIT-ACK exchange
Add my mentees bsam and ariff, my mentors steve (date not determined) and
joerg (to the ports file only, he is already listed in the src one) and
myself.
Colin Percival [Sat, 31 Mar 2007 10:14:03 +0000 (10:14 +0000)]
Split the append_archive function (used for processing @<archive> directives)
into separate append_archive and append_archive_filename functions; the first
takes a "struct archive *" as input, while the second takes a filename, opens
the archive, and calls the first.
There should be no changes in behaviour as a result of this commit; it simply
reorganizes code to make more sense. At some point in the future it may be
possible to share code between append_archive and read_archive, but not yet.
John Baldwin [Fri, 30 Mar 2007 18:07:24 +0000 (18:07 +0000)]
- Use lock_init/lock_destroy() to setup the lock_object inside of lockmgr.
We can now use LOCK_CLASS() as a stronger check in lockmgr_chain() as a
result. This required putting back lk_flags as lockmgr's use of flags
conflicted with other flags in lo_flags otherwise.
- Tweak 'show lock' output for lockmgr to match sx, rw, and mtx.
Jung-uk Kim [Fri, 30 Mar 2007 17:56:44 +0000 (17:56 +0000)]
Use underlying structures instead of kernel_sysctlbyname() for msginfo and
seminfo because kernel_sysctlbyname() is slow. There is no dependency
problem since linux module depends on both sysvmsg and sysvsem and linprocfs
depends on it in turn.