58553b9925
IPI_STOP IPIs. - Change the i386 and amd64 MD IPI code to send an NMI if STOP_NMI is enabled if an attempt is made to send an IPI_STOP IPI. If the kernel option is enabled, there is also a sysctl to change the behavior at runtime (debug.stop_cpus_with_nmi which defaults to enabled). This includes removing stop_cpus_nmi() and making ipi_nmi_selected() a private function for i386 and amd64. - Fix ipi_all(), ipi_all_but_self(), and ipi_self() on i386 and amd64 to properly handle bitmapped IPIs as well as IPI_STOP IPIs when STOP_NMI is enabled. - Fix ipi_nmi_handler() to execute the restart function on the first CPU that is restarted making use of atomic_readandclear() rather than assuming that the BSP is always included in the set of restarted CPUs. Also, the NMI handler didn't clear the function pointer meaning that subsequent stop and restarts could execute the function again. - Define a new macro HAVE_STOPPEDPCBS on i386 and amd64 to control the use of stoppedpcbs[] and always enable it for i386 and amd64 instead of being dependent on KDB_STOP_NMI. It works fine in both the NMI and non-NMI cases.
61 lines
1.5 KiB
Plaintext
61 lines
1.5 KiB
Plaintext
# $FreeBSD$
|
|
# Options specific to AMD64 platform kernels
|
|
|
|
AUTO_EOI_1 opt_auto_eoi.h
|
|
AUTO_EOI_2 opt_auto_eoi.h
|
|
MAXMEM
|
|
PERFMON opt_perfmon.h
|
|
PMAP_SHPGPERPROC opt_pmap.h
|
|
MP_WATCHDOG opt_mp_watchdog.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_IA32 opt_compat.h
|
|
#IBCS2 opt_dontuse.h
|
|
#COMPAT_LINUX opt_dontuse.h
|
|
COMPAT_LINUX32 opt_compat.h
|
|
#COMPAT_SVR4 opt_dontuse.h
|
|
#DEBUG_SVR4 opt_svr4.h
|
|
NDISAPI opt_dontuse.h
|
|
|
|
CLK_CALIBRATION_LOOP opt_clock.h
|
|
CLK_USE_I8254_CALIBRATION opt_clock.h
|
|
TIMER_FREQ opt_clock.h
|
|
|
|
VGA_ALT_SEQACCESS opt_vga.h
|
|
VGA_DEBUG opt_vga.h
|
|
VGA_NO_FONT_LOADING opt_vga.h
|
|
VGA_NO_MODE_CHANGE opt_vga.h
|
|
VGA_SLOW_IOACCESS opt_vga.h
|
|
VGA_WIDTH90 opt_vga.h
|
|
|
|
ATKBD_DFLT_KEYMAP opt_atkbd.h
|
|
|
|
# -------------------------------
|
|
# isdn4bsd: passive PCI cards
|
|
# -------------------------------
|
|
ELSA_QS1PCI opt_i4b.h
|
|
# -------------------------------
|
|
# isdn4bsd: misc options
|
|
# -------------------------------
|
|
# temporary workaround for SMP machines
|
|
I4B_SMP_WORKAROUND opt_i4b.h
|
|
# enable VJ compression code for ipr i/f
|
|
IPR_VJ opt_i4b.h
|
|
IPR_LOG opt_i4b.h
|
|
|
|
# -------------------------------
|
|
# EOF
|
|
# -------------------------------
|
|
HAMMER opt_cpu.h
|
|
PPC_PROBE_CHIPSET opt_ppc.h
|
|
PPC_DEBUG opt_ppc.h
|
|
PSM_HOOKRESUME opt_psm.h
|
|
PSM_RESETAFTERSUSPEND opt_psm.h
|
|
PSM_DEBUG opt_psm.h
|
|
DEV_ATPIC opt_atpic.h
|
|
|
|
# Debugging
|
|
STOP_NMI opt_cpu.h
|