freebsd-skq/sys
John Baldwin f83e8b25c1 Fix a race in the SMP rendezvous code. Specifically, the write by the
last CPU to to finish the rendezvous action may become visible to
different CPUs at different times.  As a result, the CPU that initiated
the rendezvous may exit the rendezvous and drop the lock allowing another
rendezvous to be initiated on the same CPU or a different CPU.  In that
case the exit sentinel may be cleared before all CPUs have noticed causing
those CPUs to hang forever.

Workaround this by using a generation count to notice when this race
occurs and to exit the rendezvous in that case.

The problem was independently diagnosted by mlaier@ and avg@ as well.

Submitted by:	neel
Reviewed by:	avg, mlaier
Obtained from:	NetApp
MFC after:	1 week
2011-05-17 16:39:08 +00:00
..
amd64 Move the ZERO_REGION_SIZE to a machine-dependent file, as on many 2011-05-13 19:35:01 +00:00
arm Move the ZERO_REGION_SIZE to a machine-dependent file, as on many 2011-05-13 19:35:01 +00:00
boot Disconnect sun4v architecture from the three. 2011-05-14 01:53:38 +00:00
bsm Add ECAPMODE, "Not permitted in capability mode", a new kernel errno 2011-03-01 13:14:28 +00:00
cam scsi_cd: silence READ_TOC errors in CDIOREADTOCHEADER ioctl 2011-05-07 10:06:43 +00:00
cddl Revert accidentally committed local change in r221990 2011-05-16 15:36:11 +00:00
compat Commit the missing linux_videdev2_compat.h (lost somewhere between 2011-05-04 13:09:20 +00:00
conf Add I2C bus driver for the AMD Geode LX series CS5536 Companion 2011-05-15 14:01:23 +00:00
contrib Make pf compile without INET support by adding #ifdef INETs and 2011-04-27 19:34:01 +00:00
crypto Fix a bug in the result of manual assembly. 2011-03-02 14:56:58 +00:00
ddb Trim some additional unnecessary <linker_set.h> includes. 2011-04-28 17:59:33 +00:00
dev Fix the debugging code path to correctly support HAL_DEBUG_UNMASKABLE. 2011-05-17 16:30:34 +00:00
fs Change the sysctl naming for the old and new NFS clients 2011-05-15 20:52:43 +00:00
gdb Modify kdb_trap() so that it re-calls the dbbe_trap function as long as 2011-02-18 22:25:11 +00:00
geom Make diagnostic messages more specific. With bootverbose print out 2011-05-16 15:59:50 +00:00
gnu Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
i386 Add I2C bus driver for the AMD Geode LX series CS5536 Companion 2011-05-15 14:01:23 +00:00
ia64 Prefer switching the memory stack from user to kernel *before* switching 2011-05-14 14:55:15 +00:00
isa Move VT switching hack for suspend/resume from bus drivers to syscons.c 2011-05-09 18:46:49 +00:00
kern Fix a race in the SMP rendezvous code. Specifically, the write by the 2011-05-17 16:39:08 +00:00
kgssapi
libkern Fix typos - remove duplicate "is". 2011-02-23 09:22:33 +00:00
mips Move the ZERO_REGION_SIZE to a machine-dependent file, as on many 2011-05-13 19:35:01 +00:00
modules Add I2C bus driver for the AMD Geode LX series CS5536 Companion 2011-05-15 14:01:23 +00:00
net - Add 10baseT as an alias for 10baseT/UTP. 2011-05-15 12:58:29 +00:00
net80211 Fix up the net80211 alq logging - this commit makes it usable. 2011-05-11 17:20:35 +00:00
netatalk
netgraph LibAliasInit() should allocate memory with M_WAITOK flag. Modify it 2011-04-18 20:07:08 +00:00
netinet Copy out the mtu when calling getsockopt() with SCTP_GET_PEER_ADDR_INFO. 2011-05-17 15:57:31 +00:00
netinet6 Remove code with any effect. 2011-05-03 20:34:02 +00:00
netipsec Release SP's refcount in key_get_spdbyid(). 2011-05-09 13:16:21 +00:00
netipx
netnatm
netncp
netsmb Change some variables from int to size_t. This is more accurate since 2011-01-08 23:06:54 +00:00
nfs Change the sysctl naming for the old and new NFS clients 2011-05-15 20:52:43 +00:00
nfsclient Fix a comment that got missed by r221973 which changed 2011-05-16 13:12:09 +00:00
nfsserver Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
nlm sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:54:19 +00:00
ofed - Catch up to falloc() changes. 2011-04-26 07:30:52 +00:00
opencrypto After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
pc98 Move VT switching hack for suspend/resume from bus drivers to syscons.c 2011-05-09 18:46:49 +00:00
pci Do a sweep of the tree replacing calls to pci_find_extcap() with calls to 2011-03-23 13:10:15 +00:00
powerpc Fix a </<= mixup. This could result in suboptimal performance on the last 2011-05-16 15:20:54 +00:00
rpc This patch is believed to fix a problem in the kernel rpc for 2011-04-27 18:19:26 +00:00
security - Add a FEATURE for capsicum (security_capabilities). 2011-03-04 09:03:54 +00:00
sparc64 Recognize the eeprom device found in Fujitsu PRIMEPOWER650 and 900. 2011-05-15 13:25:26 +00:00
sys Merge r221278 from largeSMP project: 2011-05-16 23:20:12 +00:00
teken Add proper build infrastructure for teken. 2011-05-09 16:27:39 +00:00
tools GNU awk does not output escaped newlines in multi-line printc statements. This 2011-03-31 21:33:33 +00:00
ufs Use a name instead of a magic number for kern_yield(9) when the priority 2011-05-13 05:27:58 +00:00
vm Move the ZERO_REGION_SIZE to a machine-dependent file, as on many 2011-05-13 19:35:01 +00:00
x86 Implement boot-time TSC synchronization test for SMP. This test is executed 2011-05-09 17:34:00 +00:00
xdr
xen Fix a few more SYSCTL_PROC() that were missing a CTLFLAG type specifier. 2011-01-19 00:57:58 +00:00
Makefile Disconnect sun4v architecture from the three. 2011-05-14 01:53:38 +00:00