freebsd-dev/sys/mips/mips
Attilio Rao be1057174e MFC r196196:
* 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.
* Add 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:54:11 +00:00
..
autoconf.c
busdma_machdep.c Fix copyrights to reflect the origin of these files. 2009-06-29 16:45:50 +00:00
cache_mipsNN.c
cache.c This file shows signs of heavy borrowing from NetBSD's cache.c file, 2008-04-15 05:35:00 +00:00
copystr.S Add copyright notice and license to reflect origin of most of the 2008-04-15 05:31:19 +00:00
cpu.c o Move $FreeBSD$ from comment to __FBSDID macro 2009-01-14 20:16:44 +00:00
db_disasm.c
db_interface.c
db_trace.c
dump_machdep.c Fix copyrights to reflect the origin of these files. 2009-06-29 16:45:50 +00:00
elf64_machdep.c Fix KBI breakage by r190520 which affects older linux.ko binaries: 2009-04-05 09:27:19 +00:00
elf_machdep.c Implement a facility for dynamic per-cpu variables. 2009-06-23 22:42:39 +00:00
exception.S
fp.S
gdb_machdep.c
genassym.c
in_cksum.c - Fix in_cksum for big-endian MIPS: use correct compile-time check. 2009-02-08 23:43:36 +00:00
intr_machdep.c Fix copyrights to reflect the origin of these files. 2009-06-29 16:45:50 +00:00
locore.S
machdep.c Add cpu_flush_dcache() for use after non-DMA based I/O so that a 2009-05-18 18:37:18 +00:00
mainbus.c Fix MALTA build; some prototypes were wrong and blew up when kobj method 2009-06-12 22:49:35 +00:00
mem.c Replace all calls to minor() with dev2unit(). 2008-09-27 08:51:18 +00:00
mp_machdep.c MFC r196196: 2009-08-13 17:54:11 +00:00
nexus.c o Make debug output conditional 2009-01-14 20:36:58 +00:00
pm_machdep.c - Fix spelling. 2009-05-16 15:21:08 +00:00
pmap.c Add a new type of VM object: OBJT_SG. An OBJT_SG object is very similar to 2009-07-24 13:50:29 +00:00
psraccess.S
stack_machdep.c
support.S The kernel implemented 'memcmp' is an alias for 'bcmp'. However, memcmp 2008-09-23 14:45:10 +00:00
swtch.S
tick.c Document a few sysctls. 2008-08-03 14:11:06 +00:00
tlb.S
trap.c Fix comments to relate to FreeBSD's current interrupt blocking 2008-09-28 03:50:34 +00:00
uio_machdep.c
vm_machdep.c