freebsd-skq/sys/conf/options.pc98
attilio e85ca71aad * 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

102 lines
2.3 KiB
Plaintext

# $FreeBSD$
# Options specific to the pc98 platform kernels
AUTO_EOI_1 opt_auto_eoi.h
BROKEN_KEYBOARD_RESET opt_reset.h
COUNT_XINVLTLB_HITS opt_smp.h
COUNT_IPIS opt_smp.h
DISABLE_PG_G opt_pmap.h
DISABLE_PSE opt_pmap.h
I586_PMC_GUPROF opt_i586_guprof.h
MAXMEM
MPTABLE_FORCE_HTT
MP_WATCHDOG
PERFMON
PMAP_SHPGPERPROC opt_pmap.h
POWERFAIL_NMI opt_trap.h
# Options for emulators. These should only be used at config time, so
# they are handled like options for static filesystems
# (see src/sys/conf/options), except for broken debugging options.
COMPAT_AOUT opt_dontuse.h
IBCS2 opt_dontuse.h
COMPAT_LINUX opt_dontuse.h
COMPAT_SVR4 opt_dontuse.h
DEBUG_SVR4 opt_svr4.h
LINPROCFS opt_dontuse.h
LINSYSFS opt_dontuse.h
# Change KVM size. Changes things all over the kernel.
KVA_PAGES opt_global.h
TIMER_FREQ opt_clock.h
# options for serial support
COM_ESP opt_sio.h
COM_MULTIPORT opt_sio.h
CONSPEED opt_sio.h
GDBSPEED opt_sio.h
CPU_BLUELIGHTNING_3X opt_cpu.h
CPU_BLUELIGHTNING_FPU_OP_CACHE opt_cpu.h
CPU_BTB_EN opt_cpu.h
CPU_CYRIX_NO_LOCK opt_cpu.h
CPU_DIRECT_MAPPED_CACHE opt_cpu.h
CPU_DISABLE_5X86_LSSER opt_cpu.h
CPU_DISABLE_CMPXCHG opt_global.h # XXX global, unlike other CPU_*
CPU_DISABLE_SSE opt_cpu.h
CPU_FASTER_5X86_FPU opt_cpu.h
CPU_GEODE opt_cpu.h
CPU_I486_ON_386 opt_cpu.h
CPU_IORT opt_cpu.h
CPU_L2_LATENCY opt_cpu.h
CPU_LOOP_EN opt_cpu.h
CPU_PPRO2CELERON opt_cpu.h
CPU_RSTK_EN opt_cpu.h
CPU_SOEKRIS opt_cpu.h
CPU_SUSP_HLT opt_cpu.h
CPU_UPGRADE_HW_CACHE opt_cpu.h
CPU_WT_ALLOC opt_cpu.h
CYRIX_CACHE_REALLY_WORKS opt_cpu.h
CYRIX_CACHE_WORKS opt_cpu.h
NO_F00F_HACK opt_cpu.h
NO_MEMORY_HOLE opt_cpu.h
# The CPU type affects the endian conversion functions all over the kernel.
I486_CPU opt_global.h
I586_CPU opt_global.h
I686_CPU opt_global.h
GDC
# Video spigot
SPIGOT_UNSECURE opt_spigot.h
# Enables NETGRAPH support for Cronyx adapters
NETGRAPH_CRONYX opt_ng_cronyx.h
# ct driver options
CT_BUS_WEIGHT opt_ct.h
CT_USE_RELOCATE_OFFSET opt_ct.h
# npx options
FPU_ERROR_BROKEN opt_npx.h
# PC98 options
EPSON_BOUNCEDMA opt_pc98.h
EPSON_MEMWIN opt_pc98.h
LINE30 opt_syscons.h
PC98 opt_global.h
# Device options
DEV_APIC opt_apic.h
DEV_MECIA opt_mecia.h
DEV_NPX opt_npx.h
# Debugging
NPX_DEBUG opt_npx.h
AGP_DEBUG opt_agp.h
# BPF just-in-time compiler
BPF_JITTER opt_bpf.h