capabilities. This solve various mysterious slowdown especially
for fixed-rate ac97 soundcards.
Approved by: re (scottl), netchild (mentor)
Reviewed by: andreas
state and destroy it before anything else. This solve panic issue
during sound module unloading if the sound / mixer device being
held by external processes.
Approved by: re (scottl), netchild (mentor)
Reviewed by: andreas
cause a kernel compiled with ZERO_COPY_SOCKETS to panic under certain
circumstances:
sys/kern/uipc_cow.c: 1.24 - 1.26
sys/vm/vm_object.c: 1.351
Approved by: re (scottl)
Mempage size needs to be 1k rather than 4k. Prior versions of FreeBSD
used this value and it was recently increased to 4k. This broke the
two 16-bit card at boot scenario. Revert it back to 1k.
Approved by: re (scottl)
by default, to match the reality that these has been turned off on
the 6-STABLE branch since 6.0-BETA6.
This is a direct commit against RELENG_6 since it is not applicable
for HEAD.
Approved by: re (scottl)
- rev. 1.76. Removed FreeBSD 4.x code.
- rev. 1.77, 1.79. Together with rev. 1.71 (already merged) this
fixes problems when some code is executed in driver when
em_process_receive_interrupts() drops lock. This can occur
at runtime, when polling(4) mode is changed to interrupt driver
or vise versa, but more likely this can happen when administrator
issues some ifconfig commands.
- rev. 1.78. In em_process_receive_interrupts(), call bus_dmamap_sync()
for the descriptors set each time we modify one descriptor, instead
of doing it only at the function exit.
- rev. 1.80. Loop in em_intr() until interrupt cause register is clear,
don't mask overrun interrupt.
- rev. 1.81. Several locking and other fixes.
See particular revision logs for more detailed information.
Approved by: re
Rev: 1.261
Ensure that a thread stays on same CPU when calculating per CPU
TLB shootdown requirements. Otherwise a CPU may not get the needed
TLB invalidation.
The PTE valid and access flags can not be used here to avoid TLB
shootdowns unless sf->cpumask == all_cpus.
( Otherwise some CPUs may still hold an even older entry in the TLB)
Since sf_buf_alloc mappings are normally always used this is
also not really useful and presetting accessed and modified
allows the CPU to speculatively load the entry into the TLB.
Both bugs can cause random data corruption.
Rev: 1.262
Restore optimizations to reduce TLB shootdowns.
Alan Cox pointed out that they are really useful for
sendfile().
Rev: 1.263
Restore the UP optimization to reduce the number of TLB
invalidations. The
previous revision only restored the MP optimization.
Describe the optimization strategy for TLB invalidations in a comment.
Approved by: re@ (scottl)
> Use bridge_ifdetach() to notify the bridge that a member has been detached.
> The bridge can then remove it from its interface list and not try to send
> out via a dead pointer.
Approved by: re (scottl)
Original commit messages:
Modified files:
sys/ufs/ufs ufs_lookup.c
Log:
Close a race in the ufs_lookup() code that handles the ISDOTDOT
case by saving the value of dp->i_ino before unlocking the vnode
for the current directory and passing the saved value to VFS_VGET().
Without this change, another thread can overwrite dp->i_ino after
the current directory is unlocked, causing ufs_lookup() to lock
and return the wrong vnode in place of the vnode for its parent
directory. A deadlock can occur if dp->i_ino was changed to a
subdirectory of the current directory because the root to leaf vnode
lock ordering will be violated. A vnode lock can be leaked if
dp->i_ino was changed to point to the current directory, which
causes the current vnode lock for the current directory to be
recursed, which confuses lookup() into calling vrele() when it
should be calling vput().
The probability of this bug being triggered seems to be quite low
unless the sysctl variable debug.vfscache is set to 0.
Reviewed by: jhb
MFC after: 2 weeks
Revision Changes Path
1.78 +3 -1 src/sys/ufs/ufs/ufs_lookup.c
Modified files:
sys/ufs/ufs ufs_lookup.c
Log:
Correct the type of the temporary variable used by ufs_lookup.c:1.78
to fix the race condition in the ufs_lookup() ISDOTDOT code.
Noticed by: bde
MFC after: 12 days
Revision Changes Path
1.79 +1 -1 src/sys/ufs/ufs/ufs_lookup.c
Approved by: re (scottl)
Original commit message:
Modified files:
sys/fs/nwfs nwfs_vnops.c
Log:
Update nwfs_lookup() to match the current cache_lookup() API.
cache_lookup() has returned a ref'ed and locked vnode since
vfs_cache.c:1.96, dated Tue Mar 29 12:59:06 2005 UTC. This change
is similar to the change made to smbfs_lookup() in smbfs_vnops.c:1.58.
Tested by: "Antony Mawer" ant AT mawer.org
MFC after: 2 weeks
Revision Changes Path
1.42 +11 -26 src/sys/fs/nwfs/nwfs_vnops.c
Approved by: re (scottl)
> imp 2005-10-13 22:06:02 UTC
> Modified files:
> sys/dev/ed if_ed_rtl80x9.c
> Log:
> o Fix probing of rtl80x9 parts. We shouldn't be calling
> ed_probe_generic8390 where we're calling it. It will be done as part
> of ed_probe_Novel_generic after things are setup in a way that
> ed_probe_generic8390 will grok.
> o Fix operator precedence botch that causes a panic when setting the media
> type for 10baseT connections.
> o Save the type of device so that it prints with the rest of the probe.
>
> # this should make it work with qemu again, but only if it has my patches
> # to actually implement the RTL8029 specific registers.
> Revision Changes Path
> 1.2 +6 -5 src/sys/dev/ed/if_ed_rtl80x9.c
>
> Modified files:
> sys/dev/ed if_ed_pci.c
> Log:
> If we can't probe the RTL80x9 for some reason, fall back to probing it
> as a Novell NE-2000. This is necessary for unpatched qemu working
> correctly. qemu claims to be a RTL8029, but doesn't implement the
> RTL8029 specific registers at this time. I've created patches for
> that, but there's no reason we can't use qemu's emulation w/o these
> patches. This should make life easier for those folks that boot
> FreeBSD via qemu.
> Revision Changes Path
> 1.48 +9 -2 src/sys/dev/ed/if_ed_pci.c
Approved by: re@ (kensmith)
Add a default value for VM_BCACHE_SIZE_MAX of 400MB. This is copied from
amd64, and is a factor of 3 less than the value previously auto-sized on
a 12GB machine, which would cause an overflow in calculations involving the
maxbcache int, causing bufinit() to loop forever at boot.
Approved by: re (kensmith)
When performing a VOP_LOOKUP() as part of UFS1 extended attribute
auto-start, set cnp.cn_lkflags to LK_EXCLUSIVE. This flag must now
be set so that lockmgr knows what kind of lock to acquire, and it
will panic if not specified. This resulted in a panic when using
extended attributes on UFS1 as of locking work present in the 6.x
branch.
This is a RELENG_6_0 merge candidate.
Reported by: lofi
Approved by: re (kensmith)
MFC after: 1 day
Acquire Giant conditionally in in_addmulti() and in_delmulti() based on
whether the interface being accessed is IFF_NEEDSGIANT or not. This
avoids lock order reversals when calling into the interface ioctl
handler, which could potentially lead to deadlock.
The long term solution is to eliminate non-MPSAFE network drivers.
Discussed with: jhb
Unlock Giant symmetrically with respect to lock acquire order as that's
generally nicer.
Spotted by: johan
RELENG_6_0 candidate.
MFC after: 1 day
Approved by: re (kensmith)
| Correct bug that caused the completed "recovery" scb to have its
| timer reset rather than the timer of an SCB still pending on the
| controller after recovery completed. This should correct timeout
| loops seen in the field.
|
| Revision Changes Path
| 1.22 +2 -1 src/sys/dev/aic7xxx/aic79xx_osm.c
| 1.43 +2 -1 src/sys/dev/aic7xxx/aic7xxx_osm.c
Approved by: re (kensmith)
The RIAD5 code is not complete, it does not use nor maintain the parity, so
it does actually only do RAID0. This is not wanted for a production release.
Approved by: re@ (scottl)