freebsd-skq/sys/kern
avg 55173efe7f generic_stop_cpus: prevent parallel execution
This is based on the same approach as used in panic().
In theory parallel execution of generic_stop_cpus()  could lead to two CPUs
stopping each other and everyone else, and thus a total system halt.
Also, in theory, we should have some smarter locking here, because two
(or more CPUs) could be stopping unrelated sets of CPUs.
But in practice, it seems, this function is only used to stop
"all other" CPUs.

Additionally, I took this opportunity to make amd64-specific suspend_cpus()
function use generic_stop_cpus() instead of rolling out essentially
duplicate code.

This code is based on code by Sandvine Incorporated.

Suggested by:	mdf
Reviewed by:	jhb, jkim (earlier version)
MFC after:	2 weeks
2010-10-12 17:40:45 +00:00
..
bus_if.m bus_add_child: add specialized default implementation that calls panic 2010-09-13 08:34:20 +00:00
clock_if.m
cpufreq_if.m
device_if.m
genassym.sh
imgact_aout.c Reorganize syscall entry and leave handling. 2010-05-23 18:32:02 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Supply some useful information to the started image using ELF aux vectors. 2010-08-17 08:55:45 +00:00
imgact_gzip.c
imgact_shell.c Fix exec_imgact_shell()'s handling of two error cases: (1) Previously, if 2010-09-21 16:24:51 +00:00
inflate.c
init_main.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +00:00
init_sysent.c Regen 2010-08-30 14:26:02 +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 Make kern_tc.c provide minimum frequency of tc_ticktock() calls, required 2010-09-14 08:48:06 +00:00
kern_clocksource.c If kernel built with DEVICE_POLLING, keep one CPU always in active state 2010-09-22 05:32:37 +00:00
kern_condvar.c Remove unused variables p' and unneeded assignments of rval'. 2009-02-26 13:00:13 +00:00
kern_conf.c Check the device name validity on device registration. 2010-10-07 18:00:55 +00:00
kern_cons.c Add descriptions to a handful of sysctl nodes. 2010-08-09 14:48:31 +00:00
kern_context.c Move prototypes for kern_sigtimedwait() and kern_sigprocmask() to 2010-06-30 18:03:42 +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 Another nit that both I and ispell missed. 2009-10-26 18:32:06 +00:00
kern_ctf.c
kern_descrip.c Remove one zero from the double-0. 2010-04-23 14:32:58 +00:00
kern_dtrace.c Bump KDTRACE_THREAD_ZERO and use M_ZERO as a malloc flag instead of 2010-08-22 11:09:53 +00:00
kern_environment.c Merge change r198561 from projects/mips to head: 2010-01-10 22:34:18 +00:00
kern_et.c Refactor timer management code with priority to one-shot operation mode. 2010-09-13 07:25:35 +00:00
kern_event.c Defer freeing a kevent list until after dropping kqueue locks. 2010-03-30 18:31:55 +00:00
kern_exec.c execve(2) has a special check for file permissions: a file must have at 2010-08-30 16:30:18 +00:00
kern_exit.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +00:00
kern_fail.c Remove extraneous semicolons, no functional changes. 2010-01-07 21:01:37 +00:00
kern_fork.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +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_idle.c Split P_NOLOAD into a per-thread flag (TDF_NOLOAD). 2009-11-03 16:46:52 +00:00
kern_intr.c Store interrupt trap frame into struct thread. It allows interrupt handler 2010-06-10 16:14:05 +00:00
kern_jail.c Don't exit kern_jail_set without freeing options when enforce_statfs 2010-09-10 21:45:42 +00:00
kern_kthread.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +00:00
kern_ktr.c Probabilly defaulting to KTR_GEN is not the right decision when KTR_MASK 2010-07-21 10:14:04 +00:00
kern_ktrace.c Fix a whitespace nit and remove a questioning comment. STAILQ_CONCAT() 2010-08-19 16:38:58 +00:00
kern_linker.c kdb_backtrace: use stack_print_ddb instead of stack_print 2010-09-22 06:45:07 +00:00
kern_lock.c Add dedicated routines to toggle lockmgr flags such as LK_NOSHARE and 2010-08-20 19:46:50 +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_malloc.c add kmem_map_free sysctl: query largest contiguous free range in kmem_map 2010-10-09 09:03:17 +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 When compat32 binary asks for the value of hw.machine_arch, report the 2010-07-22 09:13:49 +00:00
kern_module.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
kern_mtxpool.c
kern_mutex.c Right now, WITNESS just blindly pipes all the output to the 2010-05-11 18:24:22 +00:00
kern_ntptime.c there must be only one SYSINIT with SI_SUB_RUN_SCHEDULER+SI_ORDER_ANY order 2010-09-30 17:05:23 +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
kern_pmc.c
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 Make a thread's address available via the kern proc sysctl, just like the 2010-10-08 00:44:53 +00:00
kern_prot.c Revert r210225 - turns out I was wrong; the "/*-" is not license-only 2010-07-18 20:57:53 +00:00
kern_resource.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +00:00
kern_rmlock.c rmlock(9) two additions and one change/fix: 2010-09-01 19:50:03 +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 panic_cpu variable should be volatile 2010-10-09 08:07:49 +00:00
kern_sig.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +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 Fix a sign bug that caused adaptive spinning in sx_xlock() to not work 2010-06-08 16:17:47 +00:00
kern_synch.c Add new msleep(9) flag PBDY that shall be specified together with 2009-07-14 22:52:46 +00:00
kern_syscalls.c Count number of threads that enter and leave dynamically registered 2010-06-28 18:06:46 +00:00
kern_sysctl.c Re-add r212370 now that the LOR in powerpc64 has been resolved: 2010-09-16 16:13:12 +00:00
kern_tc.c Until hardclock() and respectively tc_windup() called first time, system 2010-09-21 08:02:02 +00:00
kern_thr.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +00:00
kern_thread.c Add a flag TDF_TIDHASH to prevent a thread from being 2010-10-12 00:36:56 +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 Fix panic on NULL dereference possible after r212541. 2010-09-14 10:26:49 +00:00
kern_umtx.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +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 sched_getparam was just plain broke for time-share 2010-03-03 21:46:51 +00:00
link_elf_obj.c Release the vnode lock and close the linker file vnode earlier in 2010-10-02 16:04:50 +00:00
link_elf.c Release the vnode lock and close the linker file vnode earlier in 2010-10-02 16:04:50 +00:00
linker_if.m strict kobj signatures: linker_if fixes 2009-06-11 17:05:45 +00:00
Make.tags.inc Catch up with the disappearance of sys/dev/hfa. 2008-12-01 14:34:42 +00:00
Makefile Adjust the all target message (but maybe all: sysent is better? 2010-10-02 22:12:41 +00:00
makesyscalls.sh Count number of threads that enter and leave dynamically registered 2010-06-28 18:06:46 +00:00
md4c.c
md5c.c
p1003_1b.c - kern_sched_rr_get_interval should return interval for thread 1 in 2010-09-29 07:31:05 +00:00
posix4_mib.c Add a facility to dynamically adjust or unconfigure p1003_1b mib. 2010-06-02 09:59:05 +00:00
sched_4bsd.c Refactor timer management code with priority to one-shot operation mode. 2010-09-13 07:25:35 +00:00
sched_ule.c Comment nit, set TDF_NEEDRESCHED after the comment describing why it is 2010-09-21 19:12:22 +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 First step at adopting FreeBSD to support PSARC/2010/029. This makes 2010-09-20 17:10:06 +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 Allow interrupt driven config hooks to be registered from config hook callbacks. 2010-08-12 19:50:40 +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 By popular demand, kill all the non GIANT related interrupt messages. 2010-09-17 16:05:25 +00:00
subr_clock.c
subr_devstat.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +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 debug.kdb.stop_cpus sysctl: hint that this is also a tunable 2010-09-30 16:47:01 +00:00
subr_kobj.c Use NULL in preference to 0 in pointer contexts. 2009-02-03 07:54:42 +00:00
subr_lock.c Re-add r212370 now that the LOR in powerpc64 has been resolved: 2010-09-16 16:13:12 +00:00
subr_log.c Make /dev/klog and kern.msgbuf* MPSAFE. 2009-11-03 21:06:19 +00:00
subr_mbpool.c
subr_mchain.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
subr_module.c Use ISO C99 integer types in sys/kern where possible. 2010-06-21 09:55:56 +00:00
subr_msgbuf.c
subr_param.c Add Xen to the list of virtual vendors. In the non PV (HVM) case this fixes 2010-08-06 15:04:40 +00:00
subr_pcpu.c Update several places that iterate over CPUs to use CPU_FOREACH(). 2010-06-11 18:46:34 +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 sysctl_rman: report shared resources to devinfo 2009-05-19 14:08:21 +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 Re-add r212370 now that the LOR in powerpc64 has been resolved: 2010-09-16 16:13:12 +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 Re-add r212370 now that the LOR in powerpc64 has been resolved: 2010-09-16 16:13:12 +00:00
subr_smp.c generic_stop_cpus: prevent parallel execution 2010-10-12 17:40:45 +00:00
subr_stack.c kdb_backtrace: use stack_print_ddb instead of stack_print 2010-09-22 06:45:07 +00:00
subr_taskqueue.c Run all tasks from a proper context, with proper priority, etc. 2010-08-28 08:38:03 +00:00
subr_trap.c Remove extra braces for style(9) (found while cleaning up an old work tree). 2010-09-28 01:36:01 +00:00
subr_turnstile.c Introduce the new kernel thread called "deadlock resolver". 2010-01-09 01:46:38 +00:00
subr_uio.c Push down the page queues into vm_page_cache(), vm_page_try_to_cache(), and 2010-05-08 20:34:01 +00:00
subr_unit.c Remove redundant high >= 0. 2010-07-09 10:57:55 +00:00
subr_witness.c Re-add r212370 now that the LOR in powerpc64 has been resolved: 2010-09-16 16:13:12 +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 Update a comment: It no longer makes sense to talk about the page queues 2010-05-08 23:01:47 +00:00
sys_process.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +00:00
sys_socket.c Send SIGPIPE to the thread that issued the offending system call 2010-06-29 20:44:19 +00:00
syscalls.c Regen 2010-08-30 14:26:02 +00:00
syscalls.master Make the syscalls reserved for AFS usable by OpenAFS port. 2010-08-30 14:24:44 +00:00
systrace_args.c Regen 2010-08-30 14:26:02 +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 Move SysV IPC freebsd32 compat shims from freebsd32_misc.c to corresponding 2010-03-19 11:04:42 +00:00
sysv_sem.c In another move to join with the age of the Fruitbat, increase SYSV 2010-06-11 09:27:33 +00:00
sysv_shm.c If i is going to be used in the loop unconditionally the declaration 2010-06-29 01:04:24 +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 Do not leak master pty or ptmx vnode. 2010-04-08 08:58:18 +00:00
tty_tty.c
tty_ttydisc.c Print backspaces after echoing an EOF. 2009-10-17 08:59:41 +00:00
tty.c Just make callout devices and /dev/console force CLOCAL on open(). 2010-09-19 16:35:42 +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 Remove page queues locking from all sf_buf_mext()-like functions. The page 2010-05-06 17:43:41 +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 Revert r210225 - turns out I was wrong; the "/*-" is not license-only 2010-07-18 20:57:53 +00:00
uipc_mqueue.c Create a global thread hash table to speed up thread lookup, use 2010-10-09 02:50:23 +00:00
uipc_sem.c Add a facility to dynamically adjust or unconfigure p1003_1b mib. 2010-06-02 09:59:05 +00:00
uipc_shm.c Minimize the use of the page queues lock for synchronizing access to the 2010-06-02 15:46:37 +00:00
uipc_sockbuf.c In sbappendstream_locked() demote all incoming packet mbufs (and 2009-06-22 21:46:40 +00:00
uipc_socket.c With reworking of the socket life cycle in 7.x, the need for a "sotryfree()" 2010-09-18 11:18:42 +00:00
uipc_syscalls.c Implement correct handling of address parameter and 2010-09-05 20:13:07 +00:00
uipc_usrreq.c Remove spurious '/*-' marks and fix some other style problems. 2010-07-22 05:42:29 +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 The buffers b_vflags field is not always properly protected by 2010-08-12 08:36:23 +00:00
vfs_cache.c Add an extra comment to the SDT probes definition. This allows us to get 2010-08-22 11:18:57 +00:00
vfs_cluster.c Bumping the read-ahead count once more, to value equivalent to 512 KiB on 2010-08-09 22:56:10 +00:00
vfs_default.c If we read zero bytes from the directory, early out with ENOENT 2010-08-25 18:09:51 +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 Expand the scope of the sysctllock sx lock to protect the sysctl tree itself. 2009-02-06 14:51:32 +00:00
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 The r184588 changed the layout of struct export_args, causing an ABI 2010-10-10 07:05:47 +00:00
vfs_mountroot.c Split the root mount logic from the (generic) mount code and move 2010-10-02 19:44:13 +00:00
vfs_subr.c Protect mnt_syncer with the sync_mtx. This prevents a (rare) vnode leak 2010-09-11 13:06:06 +00:00
vfs_syscalls.c Add an extra comment to the SDT probes definition. This allows us to get 2010-08-22 11:18:57 +00:00
vfs_vnops.c Correct arguments order. 2010-06-26 21:44:45 +00:00
vnode_if.src Add VOP_ADVLOCKPURGE so that the file system is called when purging 2010-05-12 21:24:46 +00:00