freebsd-nq/sys/conf/options.i386
Robert Watson a632deec30 Add an "options MP_WATCHDOG" to i386. This option allows one of the
logical CPUs on a system to be used as a dedicated watchdog to cause a
drop to the debugger and/or generate an NMI to the boot processor if
the kernel ceases to respond.  A sysctl enables the watchdog running
out of the processor's idle thread; a callout is launched to reset a
timer in the watchdog.  If the callout fails to reset the timer for ten
seconds, the watchdog will fire.  The sysctl allows you to select which
CPU will run the watchdog.

A sample "debug.leak_schedlock" is included, which causes a sysctl to
spin holding sched_lock in order to trigger the watchdog.  On my Xeons,
the watchdog is able to detect this failure mode and break into the
debugger, which cannot otherwise be done without an NMI button.

This option does not currently work with sched_ule due to ule's push
notion of scheduling, similar to machdep.hlt_logical_cpus failing to
work with that scheduler.

On face value, this might seem somewhat inefficient, but there are a
lot of dual-processor Xeons with HTT around, so using one as a watchdog
for testing is not as inefficient as one might fear.
2004-08-15 18:02:09 +00:00

165 lines
4.1 KiB
Plaintext

# $FreeBSD$
# Options specific to the i386 platform kernels
AUTO_EOI_1 opt_auto_eoi.h
AUTO_EOI_2 opt_auto_eoi.h
BROKEN_KEYBOARD_RESET opt_reset.h
DISABLE_PG_G opt_pmap.h
DISABLE_PSE opt_pmap.h
I586_PMC_GUPROF opt_i586_guprof.h
MAXMEM
MPTABLE_FORCE_HTT
NO_MIXED_MODE
PERFMON
PMAP_SHPGPERPROC opt_pmap.h
POWERFAIL_NMI opt_trap.h
PPC_DEBUG opt_ppc.h
PPC_PROBE_CHIPSET opt_ppc.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_AOUT opt_dontuse.h
IBCS2 opt_dontuse.h
COMPAT_LINUX opt_dontuse.h
COMPAT_SVR4 opt_dontuse.h
DEBUG_SVR4 opt_svr4.h
NDISAPI opt_dontuse.h
PECOFF_DEBUG opt_pecoff.h
PECOFF_SUPPORT opt_dontuse.h
# Change KVM size. Changes things all over the kernel.
KVA_PAGES opt_global.h
# Physical address extensions and support for >4G ram. As above.
PAE opt_global.h
CLK_CALIBRATION_LOOP opt_clock.h
CLK_USE_I8254_CALIBRATION opt_clock.h
TIMER_FREQ opt_clock.h
CPU_ATHLON_SSE_HACK opt_cpu.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_ELAN opt_cpu.h
CPU_ELAN_PPS opt_cpu.h
CPU_ELAN_XTAL opt_cpu.h
CPU_ENABLE_LONGRUN opt_cpu.h
CPU_ENABLE_SSE opt_cpu.h
CPU_ENABLE_TCC 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.
I386_CPU opt_global.h
I486_CPU opt_global.h
I586_CPU opt_global.h
I686_CPU opt_global.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
VESA
VESA_DEBUG opt_vesa.h
PSM_DEBUG opt_psm.h
PSM_HOOKRESUME opt_psm.h
PSM_RESETAFTERSUSPEND opt_psm.h
ATKBD_DFLT_KEYMAP opt_atkbd.h
# pcvt(4) has a bunch of options
FAT_CURSOR opt_pcvt.h
PCVT_123GENERIC opt_pcvt.h
PCVT_24LINESDEF opt_pcvt.h
PCVT_CTRL_ALT_DEL opt_pcvt.h
PCVT_GREENSAVER opt_pcvt.h
PCVT_INHIBIT_NUMLOCK opt_pcvt.h
PCVT_META_ESC opt_pcvt.h
PCVT_NO_LED_UPDATE opt_pcvt.h
PCVT_NSCREENS opt_pcvt.h
PCVT_NULLCHARS opt_pcvt.h
PCVT_PRETTYSCRNS opt_pcvt.h
PCVT_SCANSET opt_pcvt.h
PCVT_SCREENSAVER opt_pcvt.h
PCVT_SETCOLOR opt_pcvt.h
PCVT_SHOWKEYS opt_pcvt.h
PCVT_SLOW_INTERRUPT opt_pcvt.h
PCVT_SYSBEEPF opt_pcvt.h
PCVT_UPDATEFAST opt_pcvt.h
PCVT_UPDATESLOW opt_pcvt.h
PCVT_USEKBDSEC opt_pcvt.h
PCVT_VT220KEYB opt_pcvt.h
XSERVER opt_pcvt.h
# Video spigot
SPIGOT_UNSECURE opt_spigot.h
# Enables NETGRAPH support for Cronyx adapters
NETGRAPH_CRONYX opt_ng_cronyx.h
# -------------------------------
# isdn4bsd: passive ISA cards
# -------------------------------
TEL_S0_8 opt_i4b.h
TEL_S0_16 opt_i4b.h
TEL_S0_16_3 opt_i4b.h
AVM_A1 opt_i4b.h
USR_STI opt_i4b.h
ITKIX1 opt_i4b.h
ELSA_PCC16 opt_i4b.h
# -------------------------------
# isdn4bsd: passive ISA PnP cards
# -------------------------------
CRTX_S0_P opt_i4b.h
DRN_NGO opt_i4b.h
TEL_S0_16_3_P opt_i4b.h
SEDLBAUER opt_i4b.h
DYNALINK opt_i4b.h
ASUSCOM_IPAC opt_i4b.h
ELSA_QS1ISA opt_i4b.h
SIEMENS_ISURF2 opt_i4b.h
EICON_DIVA opt_i4b.h
COMPAQ_M610 opt_i4b.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
# Device options
DEV_APIC opt_apic.h
DEV_NPX opt_npx.h