freebsd-nq/sys/powerpc/include
Attilio Rao dc6fbf6545 * Completely Remove the option STOP_NMI from the kernel. This option
has proven to have a good effect when entering KDB by using a NMI,
but it completely violates all the good rules about interrupts
disabled while holding a spinlock in other occasions.  This can be the
cause of deadlocks on events where a normal IPI_STOP is expected.
* Adds an new IPI called IPI_STOP_HARD on all the supported architectures.
This IPI is responsible for sending a stop message among CPUs using a
privileged channel when disponible. In other cases it just does match a
normal IPI_STOP.
Right now the IPI_STOP_HARD functionality uses a NMI on ia32 and amd64
architectures, while on the other has a normal IPI_STOP effect. It is
responsibility of maintainers to eventually implement an hard stop
when necessary and possible.
* Use the new IPI facility in order to implement a new userend SMP kernel
function called stop_cpus_hard(). That is specular to stop_cpu() but
it does use the privileged channel for the stopping facility.
* Let KDB use the newly introduced function stop_cpus_hard() and leave
stop_cpus() for all the other cases
* Disable interrupts on CPU0 when starting the process of APs suspension.
* Style cleanup and comments adding

This patch should fix the reboot/shutdown deadlocks many users are
constantly reporting on mailing lists.

Please don't forget to update your config file with the STOP_NMI
option removal

Reviewed by:	jhb
Tested by:	pho, bz, rink
Approved by:	re (kib)
2009-08-13 17:09:45 +00:00
..
_bus.h
_inttypes.h
_limits.h
_stdint.h
_types.h
altivec.h Add Altivec support for supported CPUs. This is derived from the FPU support 2009-02-20 17:48:40 +00:00
asm.h Align functions to 16-byte boundaries due to profiling granularity. 2008-04-03 17:40:20 +00:00
atomic.h Unbreak previous commit. 2008-11-22 22:15:34 +00:00
bat.h
bootinfo.h Obtain TSEC h/w address from the parent bus (OCP) and not rely blindly on what 2008-03-12 16:32:08 +00:00
bus_dma.h
bus.h
clock.h The "free-lance" timer in the i8254 is only used for the speaker 2008-03-26 20:09:21 +00:00
cpu.h Declare btext and etext. Needed by sys/kern/subr_prof.c for 2008-10-27 00:26:07 +00:00
cpufunc.h Improve style(9) 2009-05-14 16:56:56 +00:00
db_machdep.h
dbdma.h Expand the DBDMA API to allow setting device-dependent control bits. While 2008-09-27 15:41:16 +00:00
elf.h Add AT_EXECPATH ELF auxinfo entry type. The value's a_ptr is a pointer 2009-03-17 12:50:16 +00:00
endian.h Add support for little-endian compilations to this file. 2008-10-30 03:31:33 +00:00
exec.h
float.h Define LDBL_EPSILON, LDBL_MAX and LDBL_MIN as long double constants. 2008-11-16 19:20:29 +00:00
floatingpoint.h
fpu.h
frame.h Make Book-E debug register state part of the PCB context. 2009-02-27 12:08:24 +00:00
gdb_machdep.h Make remote GDB work for AIM processors. For BookE, the kernel 2008-03-17 00:46:52 +00:00
hid.h Centralize setting HID0/1 for E500. Rename HID defines which are specific 2009-04-22 13:11:38 +00:00
ieee.h
ieeefp.h
in_cksum.h
intr_machdep.h Add suppport for ISA and ISA interrupts to make the ATA 2009-04-24 03:51:11 +00:00
intr.h First round of cleanups. There's a lot of NetBSDism in this header. 2009-04-04 22:03:19 +00:00
kdb.h Unify and generalize PowerPC headers, adjust AIM code accordingly. 2008-03-02 17:05:57 +00:00
limits.h
md_var.h PowerPC common SMP startup and time base rework. 2009-05-14 16:48:25 +00:00
memdev.h Remove the unused M_MEMDEV from the kernel. 2008-06-25 07:52:10 +00:00
metadata.h Define the bootinfo structure for FreeBSD. It is not used on 2008-02-23 18:01:45 +00:00
mmuvar.h Initial support for Freescale PowerQUICC III MPC85xx system-on-chip family. 2008-03-03 17:17:00 +00:00
mutex.h Initial support for SMP on PowerPC MPC85xx. 2009-05-21 11:43:37 +00:00
ocpbus.h Initial version of the sec(4) driver for the integrated security engine found 2009-06-06 09:37:55 +00:00
ofw_machdep.h Factor out platform dependent things unrelated to device drivers into a 2009-05-14 00:34:26 +00:00
openpicreg.h Add PIC support for IPIs. When registering an interrupt handler, 2008-02-12 18:14:46 +00:00
openpicvar.h Add support for the BUS_CONFIG_INTR() method to the platform and to 2008-03-07 22:08:43 +00:00
param.h Cleanup ALIGNED_POINTER: 2009-07-05 17:45:48 +00:00
pcb.h Make Book-E debug register state part of the PCB context. 2009-02-27 12:08:24 +00:00
pcpu.h Initial support for SMP on PowerPC MPC85xx. 2009-05-21 11:43:37 +00:00
pio.h Provide 64-bit big endian bus space operations for PowerPC. They are required 2009-06-06 09:33:32 +00:00
platform.h Factor out platform dependent things unrelated to device drivers into a 2009-05-14 00:34:26 +00:00
platformvar.h Factor out platform dependent things unrelated to device drivers into a 2009-05-14 00:34:26 +00:00
pmap.h Add support to the virtual memory system for configuring machine- 2009-07-12 23:31:20 +00:00
pmc_mdep.h
proc.h
profile.h Add support for kernel profiling for both AIM and BookE. 2008-10-27 02:36:03 +00:00
psl.h Rework and extend PowerPC headers definitons towards Book-E/e500 CPUs support. 2008-03-03 13:20:52 +00:00
pte.h Remove PTE_FAKE and PTE_ISFAKE(). 2009-04-24 02:55:20 +00:00
ptrace.h
reg.h
reloc.h
resource.h
runq.h
sc_machdep.h
setjmp.h
sf_buf.h Add support for 64-bit PowerPC CPUs operating in the 64-bit bridge mode 2009-04-04 00:22:44 +00:00
sigframe.h
signal.h
smp.h * Completely Remove the option STOP_NMI from the kernel. This option 2009-08-13 17:09:45 +00:00
spr.h Fix copy/paste typo in last revision. PMC0 control should be shifted 8 2009-06-23 04:02:36 +00:00
sr.h
stack.h
stdarg.h
sysarch.h Add sysarch.h. It's included by drm(4). 2009-04-04 22:05:36 +00:00
tlb.h Rework BookE pmap towards multi-core support. 2009-01-13 15:41:58 +00:00
trap_aim.h Fix a typo in the SRR1 comparison for program exceptions. While here, 2009-04-19 06:30:00 +00:00
trap_booke.h Rework and extend PowerPC headers definitons towards Book-E/e500 CPUs support. 2008-03-03 13:20:52 +00:00
trap.h Rework and extend PowerPC headers definitons towards Book-E/e500 CPUs support. 2008-03-03 13:20:52 +00:00
ucontext.h
varargs.h
vm.h Add support to the virtual memory system for configuring machine- 2009-07-12 23:31:20 +00:00
vmparam.h Lower VM_MAX_KERNEL_ADDRESS to 0xf8000000. We actually have 2009-04-21 17:08:02 +00:00