freebsd-skq/sys/kern
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
..
bus_if.m Add a new bus method, BUS_ADJUST_RESOURCE() that is intended to be a 2011-04-29 21:36:45 +00:00
capabilities.conf Continue to introduce Capsicum Capability Mode support: 2011-03-01 13:28:27 +00:00
clock_if.m
cpufreq_if.m
device_if.m
genassym.sh
imgact_aout.c Add accounting for most of the memory-related resources. 2011-04-05 20:23:59 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Add accounting for most of the memory-related resources. 2011-04-05 20:23:59 +00:00
imgact_gzip.c Add accounting for most of the memory-related resources. 2011-04-05 20:23:59 +00:00
imgact_shell.c The execution of the shebang script requires putting interpreter path, 2011-03-06 22:59:30 +00:00
inflate.c
init_main.c Enable accounting for RACCT_NPROC and RACCT_NTHR. 2011-03-31 19:22:11 +00:00
init_sysent.c Regen. 2011-04-18 16:32:47 +00:00
kern_acct.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
kern_alq.c - Rework the underlying ALQ storage to be a circular buffer, which amongst other 2010-04-26 13:48:22 +00:00
kern_clock.c Fix several places to ignore processes that are not yet fully constructed. 2011-04-06 17:47:22 +00:00
kern_clocksource.c better integrate cyclic module with clocksource/eventtimer subsystem 2011-05-16 15:29:59 +00:00
kern_condvar.c
kern_conf.c Add make_dev_alias_p() function. It is similar to make_dev_alias(), 2011-05-03 18:54:18 +00:00
kern_cons.c Add descriptions to a handful of sysctl nodes. 2010-08-09 14:48:31 +00:00
kern_context.c Clear the padding when returning context to the usermode, for 2011-02-05 15:10:27 +00:00
kern_cpu.c cpufreq: allocate long-lived buffer for handling of sysctl requests 2010-07-23 16:46:42 +00:00
kern_cpuset.c When constructing a new cpuset, apply the parent cpuset's mask to the new 2011-03-08 14:18:21 +00:00
kern_ctf.c
kern_descrip.c - Do no try to drop a NULL filedesc pointer. 2011-05-12 10:56:33 +00:00
kern_dtrace.c Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
kern_environment.c To avoid duplicated warning, move WITNESS_WARN() added in r221597 to the 2011-05-07 17:59:07 +00:00
kern_et.c sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:54:19 +00:00
kern_event.c After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
kern_exec.c Introduce preliminary support of the show description of the ABI of 2011-02-25 22:05:33 +00:00
kern_exit.c Remove stale M_ZOMBIE malloc type. 2011-04-14 14:25:47 +00:00
kern_fail.c Initialize fp_location for explicitly managed fail points, and push 2010-12-21 18:23:03 +00:00
kern_fork.c Enable accounting for RACCT_NPROC and RACCT_NTHR. 2011-03-31 19:22:11 +00:00
kern_gzio.c Do not set IO_NODELOCKED while writing to vnodes as our consumers 2010-04-30 03:10:53 +00:00
kern_hhook.c Staticize malloc types. 2011-04-13 11:28:46 +00:00
kern_idle.c Split P_NOLOAD into a per-thread flag (TDF_NOLOAD). 2009-11-03 16:46:52 +00:00
kern_intr.c - Catch up to falloc() changes. 2011-04-26 07:30:52 +00:00
kern_jail.c Change the way rctl interfaces with jails by introducing prison_racct 2011-05-03 07:32:58 +00:00
kern_khelp.c Use the full and proper company name for Swinburne University of Technology 2011-04-12 08:13:18 +00:00
kern_kthread.c - Properly initialize the base priority (td_base_pri) of thread0 to PVM 2011-01-06 22:26:00 +00:00
kern_ktr.c Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
kern_ktrace.c Fix several places to ignore processes that are not yet fully constructed. 2011-04-06 17:47:22 +00:00
kern_linker.c Provide compat32 shims for kldstat(2). 2011-03-30 14:46:12 +00:00
kern_lock.c Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
kern_lockf.c In lf_iteratelocks_vnode, increment state->ls_threads around iterating 2009-06-25 18:54:56 +00:00
kern_lockstat.c Add the OpenSolaris dtrace lockstat provider. The lockstat provider 2009-05-26 20:28:22 +00:00
kern_loginclass.c Add racct. It's an API to keep per-process, per-jail, per-loginclass 2011-03-29 17:47:25 +00:00
kern_malloc.c Modestly increase the maximum allowed size of the kmem map on i386. 2011-03-23 16:38:29 +00:00
kern_mbuf.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
kern_mib.c sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:54:19 +00:00
kern_module.c Style fix. 2010-11-22 15:28:54 +00:00
kern_mtxpool.c
kern_mutex.c - Remove <machine/mutex.h>. Most of the headers were empty, and the 2010-11-09 20:46:41 +00:00
kern_ntptime.c Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
kern_osd.c Make the rmlock(9) interface a bit more like the rwlock(9) interface: 2009-05-29 10:52:37 +00:00
kern_physio.c Account i/o done on cdevs. 2010-11-25 20:05:11 +00:00
kern_pmc.c Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
kern_poll.c Rather than fix questionable ifnet list locking in the implementation of 2009-08-15 23:07:43 +00:00
kern_priv.c Add an extra comment to the SDT probes definition. This allows us to get 2010-08-22 11:18:57 +00:00
kern_proc.c - Commit work from libprocstat project. These patches add support for runtime 2011-05-12 10:11:39 +00:00
kern_prot.c Notify racct when process credentials change. 2011-03-31 18:12:04 +00:00
kern_racct.c Change the way rctl interfaces with jails by introducing prison_racct 2011-05-03 07:32:58 +00:00
kern_rctl.c Change the way rctl interfaces with jails by introducing prison_racct 2011-05-03 07:32:58 +00:00
kern_resource.c Fix several places to ignore processes that are not yet fully constructed. 2011-04-06 17:47:22 +00:00
kern_rmlock.c No need to include sys/systm.h twice. 2010-11-16 14:08:21 +00:00
kern_rwlock.c Print the pointer to the lock with the panic message. The previous 2010-03-24 19:21:26 +00:00
kern_sdt.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
kern_sema.c
kern_shutdown.c Add the watchdogs patting during the (shutdown time) disk syncing and 2011-04-28 16:02:05 +00:00
kern_sig.c ktrace: Log the code for all signals (PSIG events). 2011-04-17 14:38:11 +00:00
kern_switch.c Update several places that iterate over CPUs to use CPU_FOREACH(). 2010-06-11 18:46:34 +00:00
kern_sx.c - Merge changes to the base system to support OFED. These include 2011-03-21 09:40:01 +00:00
kern_synch.c Use a name instead of a magic number for kern_yield(9) when the priority 2011-05-13 05:27:58 +00:00
kern_syscalls.c Call chainevh callback when we are invoked with neither MOD_LOAD nor 2010-10-21 20:31:50 +00:00
kern_sysctl.c Use a name instead of a magic number for kern_yield(9) when the priority 2011-05-13 05:27:58 +00:00
kern_tc.c Introduce signed and unsigned version of CTLTYPE_QUAD, renaming 2011-01-19 23:00:25 +00:00
kern_thr.c Enable accounting for RACCT_NPROC and RACCT_NTHR. 2011-03-31 19:22:11 +00:00
kern_thread.c Fix some locking nits with the p_state field of struct proc: 2011-03-24 18:40:11 +00:00
kern_time.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +00:00
kern_timeout.c Reintroduce the fix already discussed in r216805 (please check its history 2011-04-08 18:48:57 +00:00
kern_umtx.c Expose the umtx_key structure and API to the rest of the kernel. 2011-02-23 13:19:14 +00:00
kern_uuid.c Rework global locks for interface list and index management, correcting 2009-08-23 20:40:19 +00:00
kern_xxx.c Place hostnames and similar information fully under the prison system. 2009-05-29 21:27:12 +00:00
ksched.c Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
link_elf_obj.c Remove malloc(9) return value checks when M_WAITOK is used. 2011-04-16 16:20:51 +00:00
link_elf.c Remove malloc(9) return value checks when M_WAITOK is used. 2011-04-16 16:20:51 +00:00
linker_if.m strict kobj signatures: linker_if fixes 2009-06-11 17:05:45 +00:00
Make.tags.inc
Makefile Continue to introduce Capsicum Capability Mode support: 2011-03-01 13:28:27 +00:00
makesyscalls.sh add DTrace systrace support for linux32 and freebsd32 on amd64 syscalls 2011-03-12 08:51:43 +00:00
md4c.c
md5c.c
p1003_1b.c Set various POSIX capability sysctls to the version of the API that is 2010-11-19 17:56:16 +00:00
posix4_mib.c Set various POSIX capability sysctls to the version of the API that is 2010-11-19 17:56:16 +00:00
sched_4bsd.c Merge r221278 from largeSMP project: 2011-05-16 23:20:12 +00:00
sched_ule.c Clearing the flag when preempting will let the preempted thread run 2011-03-31 13:59:47 +00:00
serdev_if.m
stack_protector.c Random number generator initialization cleanup: 2009-10-20 16:36:51 +00:00
subr_acl_nfs4.c Make UFS use PSARC/2010/029 NFSv4 ACL semantics by default, bringing 2011-03-22 19:52:29 +00:00
subr_acl_posix1e.c execve(2) has a special check for file permissions: a file must have at 2010-08-30 16:30:18 +00:00
subr_autoconf.c Retire PCONFIG and leave the priority of thread0 alone when waiting for 2011-01-06 22:09:37 +00:00
subr_blist.c
subr_bufring.c Switch to our preferred 2-clause BSD license. 2010-05-05 20:39:02 +00:00
subr_bus.c Add a new bus method, BUS_ADJUST_RESOURCE() that is intended to be a 2011-04-29 21:36:45 +00:00
subr_clock.c Improve style and wording of comments and sysctl descriptions [1]. 2011-01-09 14:34:56 +00:00
subr_devstat.c Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
subr_disk.c Correct bioq_disksort so that bioq_insert_tail() offers barrier semantic. 2010-09-02 19:40:28 +00:00
subr_eventhandler.c Split eventhandler_register() into an internal part and a wrapper function 2010-03-19 19:51:03 +00:00
subr_fattime.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
subr_firmware.c Bump up the firmware_table from 30 to 50. bwn needs more than 30, it 2010-03-07 22:37:35 +00:00
subr_hash.c Decompose the most lousy named file in sys/kern; kern_subr.c. 2010-02-21 19:53:33 +00:00
subr_hints.c
subr_kdb.c Modify kdb_trap() so that it re-calls the dbbe_trap function as long as 2011-02-18 22:25:11 +00:00
subr_kobj.c sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly. 2011-01-12 19:54:19 +00:00
subr_lock.c Explicitly wire the user buffer rather than doing it implicitly in 2011-01-27 00:34:12 +00:00
subr_log.c Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
subr_mbpool.c
subr_mchain.c Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
subr_module.c Provide convenience function for obtaining MODINFO_ADDR and MODINFO_SIZE 2011-02-09 19:08:21 +00:00
subr_msgbuf.c
subr_param.c Modestly increase the maximum allowed size of the kmem map on i386. 2011-03-23 16:38:29 +00:00
subr_pcpu.c Remove unneeded includes of <sys/linker_set.h>. Other headers that use 2011-01-11 13:59:06 +00:00
subr_power.c
subr_prf.c Use type-specific inline function imax() instead of deprecated macro MAX(). 2010-07-12 15:32:45 +00:00
subr_prof.c Revert r210225 - turns out I was wrong; the "/*-" is not license-only 2010-07-18 20:57:53 +00:00
subr_rman.c Extend the rman(9) API to support altering an existing resource. 2011-04-29 20:05:19 +00:00
subr_rtc.c Add the half of time-of-day clock resolution when we adjust system time from 2010-08-12 17:17:05 +00:00
subr_sbuf.c Use memset() instead of bzero() and memcpy() instead of bcopy(), there 2011-05-17 11:04:50 +00:00
subr_scanf.c
subr_sglist.c This patch fixes two bugs in sglist(9) and improves robustness of the API via 2009-08-21 02:59:07 +00:00
subr_sleepqueue.c Explicitly wire the user buffer rather than doing it implicitly in 2011-01-27 00:34:12 +00:00
subr_smp.c Fix a race in the SMP rendezvous code. Specifically, the write by the 2011-05-17 16:39:08 +00:00
subr_stack.c Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
subr_taskqueue.c Implement the delayed task execution extension to the taskqueue 2011-04-26 11:39:56 +00:00
subr_trap.c Continue introducing Capsicum capability mode support: 2011-03-01 13:32:07 +00:00
subr_turnstile.c Always assert that the turnstile chain lock is held in turnstile_wait() 2011-02-04 14:16:41 +00:00
subr_uio.c Fix the check for vm_map_remove() error. 2011-03-28 19:44:54 +00:00
subr_unit.c Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
subr_witness.c Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
sys_capability.c - Add a FEATURE for capsicum (security_capabilities). 2011-03-04 09:03:54 +00:00
sys_generic.c For some file types, select code registers two selfd structures. E.g., 2010-08-28 17:42:08 +00:00
sys_pipe.c After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
sys_process.c Add macro to test the sv_flags of any process. Change some places to test 2011-01-26 20:03:58 +00:00
sys_socket.c Mfp4 CH=177274,177280,177284-177285,177297,177324-177325 2011-02-16 21:29:13 +00:00
syscalls.c Regen. 2011-04-18 16:32:47 +00:00
syscalls.master Add the posix_fallocate(2) syscall. The default implementation in 2011-04-18 16:32:22 +00:00
systrace_args.c Regen. 2011-04-18 16:32:47 +00:00
sysv_ipc.c Move SysV IPC freebsd32 compat shims helpers from freebsd32_misc.c to 2010-03-19 11:01:51 +00:00
sysv_msg.c Style fix. 2011-04-06 19:08:50 +00:00
sysv_sem.c Style fix. 2011-04-06 19:08:50 +00:00
sysv_shm.c Style fix. 2011-04-06 19:08:50 +00:00
tty_compat.c Make TIOCSTI work again. 2010-01-04 20:59:52 +00:00
tty_info.c Print an extra newline when not at the first column already. 2009-05-17 16:17:48 +00:00
tty_inq.c Remove statistics from the TTY queues. 2010-02-07 15:42:15 +00:00
tty_outq.c Remove statistics from the TTY queues. 2010-02-07 15:42:15 +00:00
tty_pts.c Add accounting for RACCT_NPTS. 2011-04-02 15:02:42 +00:00
tty_tty.c Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
tty_ttydisc.c Print backspaces after echoing an EOF. 2009-10-17 08:59:41 +00:00
tty.c Finish r210923, 210926. Mark some devices as eternal. 2011-01-04 10:59:38 +00:00
uipc_accf.c (S)LIST_HEAD_INITIALIZER takes a (S)LIST_HEAD as an argument. 2009-12-28 22:56:30 +00:00
uipc_cow.c Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/ 2011-02-25 10:11:01 +00:00
uipc_debug.c Add missing socket options. 2009-05-26 09:19:21 +00:00
uipc_domain.c When registering a protocol to an existing protocol domain via 2009-08-24 10:03:41 +00:00
uipc_mbuf2.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
uipc_mbuf.c Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00
uipc_mqueue.c After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
uipc_sem.c After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
uipc_shm.c After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
uipc_sockbuf.c Revert r194662, since it breaks ng_ksocket(4) and may break 2011-04-14 14:54:22 +00:00
uipc_socket.c Mfp4 CH=177274,177280,177284-177285,177297,177324-177325 2011-02-16 21:29:13 +00:00
uipc_syscalls.c After the r219999 is merged to stable/8, rename fallocf(9) to falloc(9) 2011-04-01 13:28:34 +00:00
uipc_usrreq.c Mfp4 CH=177274,177280,177284-177285,177297,177324-177325 2011-02-16 21:29:13 +00:00
vfs_acl.c The 'acl_cnt' field is unsigned; no point in checking if it's >= 0. 2010-06-03 13:45:27 +00:00
vfs_aio.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +00:00
vfs_bio.c Use a name instead of a magic number for kern_yield(9) when the priority 2011-05-13 05:27:58 +00:00
vfs_cache.c Fix some more style(9) issues. 2010-11-14 16:10:15 +00:00
vfs_cluster.c The hardware has caught up; improvements are now observed even at 128, 2011-03-16 16:22:59 +00:00
vfs_default.c Allow VOP_ALLOCATE to be iterative, and have kern_posix_fallocate(9) 2011-04-19 16:36:24 +00:00
vfs_export.c Set the prison in NFS anon and GSS SVC creds. 2009-09-28 18:07:16 +00:00
vfs_extattr.c Revert r210225 - turns out I was wrong; the "/*-" is not license-only 2010-07-18 20:57:53 +00:00
vfs_hash.c
vfs_init.c
vfs_lookup.c Add an extra comment to the SDT probes definition. This allows us to get 2010-08-22 11:18:57 +00:00
vfs_mount.c Use a name instead of a magic number for kern_yield(9) when the priority 2011-05-13 05:27:58 +00:00
vfs_mountroot.c Make RB_CDROM work. This should probably check for a disc in cd1 and acd1 2011-01-08 19:50:13 +00:00
vfs_subr.c Use a name instead of a magic number for kern_yield(9) when the priority 2011-05-13 05:27:58 +00:00
vfs_syscalls.c Allow VOP_ALLOCATE to be iterative, and have kern_posix_fallocate(9) 2011-04-19 16:36:24 +00:00
vfs_vnops.c Use a name instead of a magic number for kern_yield(9) when the priority 2011-05-13 05:27:58 +00:00
vnode_if.src Correctly use INOUT for the offset/len parameters to vop_allocate. As 2011-05-13 14:29:28 +00:00