46969da5f8
as it could be and can do with some more cleanup. Currently its under options LAZY_SWITCH. What this does is avoid %cr3 reloads for short context switches that do not involve another user process. ie: we can take an interrupt, switch to a kthread and return to the user without explicitly flushing the tlb. However, this isn't as exciting as it could be, the interrupt overhead is still high and too much blocks on Giant still. There are some debug sysctls, for stats and for an on/off switch. The main problem with doing this has been "what if the process that you're running on exits while we're borrowing its address space?" - in this case we use an IPI to give it a kick when we're about to reclaim the pmap. Its not compiled in unless you add the LAZY_SWITCH option. I want to fix a few more things and get some more feedback before turning it on by default. This is NOT a replacement for Bosko's lazy interrupt stuff. This was more meant for the kthread case, while his was for interrupts. Mine helps a little for interrupts, but his helps a lot more. The stats are enabled with options SWTCH_OPTIM_STATS - this has been a pseudo-option for years, I just added a bunch of stuff to it. One non-trivial change was to select a new thread before calling cpu_switch() in the first place. This allows us to catch the silly case of doing a cpu_switch() to the current process. This happens uncomfortably often. This simplifies a bit of the asm code in cpu_switch (no longer have to call choosethread() in the middle). This has been implemented on i386 and (thanks to jake) sparc64. The others will come soon. This is actually seperate to the lazy switch stuff. Glanced at by: jake, jhb
190 lines
4.7 KiB
Plaintext
190 lines
4.7 KiB
Plaintext
# $FreeBSD$
|
|
# Options specific to the i386 platform kernels
|
|
|
|
MATH_EMULATE opt_math_emulate.h
|
|
GPL_MATH_EMULATE opt_math_emulate.h
|
|
DISABLE_PSE opt_pmap.h
|
|
PMAP_SHPGPERPROC opt_pmap.h
|
|
DISABLE_PG_G opt_pmap.h
|
|
LAZY_SWITCH opt_swtch.h
|
|
SWTCH_OPTIM_STATS opt_swtch.h
|
|
PPC_PROBE_CHIPSET opt_ppc.h
|
|
PPC_DEBUG opt_ppc.h
|
|
MAXMEM
|
|
PERFMON opt_perfmon.h
|
|
POWERFAIL_NMI opt_trap.h
|
|
AUTO_EOI_1 opt_auto_eoi.h
|
|
AUTO_EOI_2 opt_auto_eoi.h
|
|
I586_PMC_GUPROF opt_i586_guprof.h
|
|
COMPAT_OLDISA
|
|
BROKEN_KEYBOARD_RESET opt_reset.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
|
|
PECOFF_SUPPORT opt_dontuse.h
|
|
PECOFF_DEBUG opt_pecoff.h
|
|
# i386 SMP options
|
|
APIC_IO opt_global.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
|
|
CLK_USE_TSC_CALIBRATION opt_clock.h
|
|
TIMER_FREQ opt_clock.h
|
|
|
|
NO_F00F_HACK opt_cpu.h
|
|
CPU_BLUELIGHTNING_FPU_OP_CACHE opt_cpu.h
|
|
CPU_BLUELIGHTNING_3X 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_ELAN opt_cpu.h
|
|
CPU_FASTER_5X86_FPU 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_SUSP_HLT opt_cpu.h
|
|
CPU_UPGRADE_HW_CACHE opt_cpu.h
|
|
CPU_WT_ALLOC opt_cpu.h
|
|
CYRIX_CACHE_WORKS opt_cpu.h
|
|
CYRIX_CACHE_REALLY_WORKS opt_cpu.h
|
|
NO_MEMORY_HOLE opt_cpu.h
|
|
CPU_ENABLE_SSE opt_cpu.h
|
|
CPU_ATHLON_SSE_HACK opt_cpu.h
|
|
CPU_DISABLE_SSE opt_cpu.h
|
|
CPU_DISABLE_CMPXCHG opt_global.h
|
|
|
|
# Options for the AMD Elan CPU
|
|
ELAN_PPS opt_cpu.h
|
|
ELAN_XTAL 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
|
|
|
|
MAXCONS opt_syscons.h
|
|
SC_ALT_MOUSE_IMAGE opt_syscons.h
|
|
SC_CUT_SPACES2TABS opt_syscons.h
|
|
SC_CUT_SEPCHARS opt_syscons.h
|
|
SC_DEBUG_LEVEL opt_syscons.h
|
|
SC_DFLT_FONT opt_syscons.h
|
|
SC_DISABLE_DDBKEY opt_syscons.h
|
|
SC_DISABLE_REBOOT opt_syscons.h
|
|
SC_HISTORY_SIZE opt_syscons.h
|
|
SC_KERNEL_CONS_ATTR opt_syscons.h
|
|
SC_KERNEL_CONS_REV_ATTR opt_syscons.h
|
|
SC_MOUSE_CHAR opt_syscons.h
|
|
SC_NO_CUTPASTE opt_syscons.h
|
|
SC_NO_FONT_LOADING opt_syscons.h
|
|
SC_NO_HISTORY opt_syscons.h
|
|
SC_NO_SYSMOUSE opt_syscons.h
|
|
SC_NORM_ATTR opt_syscons.h
|
|
SC_NORM_REV_ATTR opt_syscons.h
|
|
SC_PIXEL_MODE opt_syscons.h
|
|
SC_RENDER_DEBUG opt_syscons.h
|
|
SC_TWOBUTTON_MOUSE opt_syscons.h
|
|
SC_NO_SUSPEND_VTYSWITCH opt_syscons.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 opt_vesa.h
|
|
VESA_DEBUG opt_vesa.h
|
|
|
|
PSM_HOOKRESUME opt_psm.h
|
|
PSM_RESETAFTERSUSPEND opt_psm.h
|
|
PSM_DEBUG opt_psm.h
|
|
|
|
ATKBD_DFLT_KEYMAP opt_atkbd.h
|
|
|
|
KBD_DISABLE_KEYMAP_LOAD opt_kbd.h
|
|
KBD_INSTALL_CDEV opt_kbd.h
|
|
KBD_MAXRETRY opt_kbd.h
|
|
KBD_MAXWAIT opt_kbd.h
|
|
KBD_RESETDELAY opt_kbd.h
|
|
KBDIO_DEBUG opt_kbd.h
|
|
|
|
EISA_SLOTS opt_eisa.h
|
|
|
|
# pcvt(4) has a bunch of options
|
|
FAT_CURSOR opt_pcvt.h
|
|
XSERVER opt_pcvt.h
|
|
PCVT_24LINESDEF opt_pcvt.h
|
|
PCVT_CTRL_ALT_DEL opt_pcvt.h
|
|
PCVT_META_ESC opt_pcvt.h
|
|
PCVT_NSCREENS opt_pcvt.h
|
|
PCVT_PRETTYSCRNS opt_pcvt.h
|
|
PCVT_SCANSET opt_pcvt.h
|
|
PCVT_SCREENSAVER opt_pcvt.h
|
|
PCVT_USEKBDSEC opt_pcvt.h
|
|
PCVT_VT220KEYB opt_pcvt.h
|
|
PCVT_GREENSAVER opt_pcvt.h
|
|
|
|
# Video spigot
|
|
SPIGOT_UNSECURE opt_spigot.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_NPX opt_npx.h
|
|
DEV_SPLASH opt_splash.h
|
|
|
|
# -------------------------------
|
|
# EOF
|
|
# -------------------------------
|