# IA32-specific X86 subarchitecture options # Copyright (c) 2019 Intel Corp. # SPDX-License-Identifier: Apache-2.0 if !X86_64 config NESTED_INTERRUPTS bool "Nested interrupts" default y help This option enables support for nested interrupts. menu "Memory Layout Options" config IDT_NUM_VECTORS int "Number of IDT vectors" default 256 range 32 256 help This option specifies the number of interrupt vector entries in the Interrupt Descriptor Table (IDT). By default all 256 vectors are supported in an IDT requiring 2048 bytes of memory. config SET_GDT bool "Setup GDT as part of boot process" default y help This option sets up the GDT as part of the boot process. However, this may conflict with some security scenarios where the GDT is already appropriately set by an earlier bootloader stage, in which case this should be disabled. If disabled, the global _gdt pointer will not be available. config GDT_DYNAMIC bool "Store GDT in RAM so that it can be modified" depends on SET_GDT help This option stores the GDT in RAM instead of ROM, so that it may be modified at runtime at the expense of some memory. config GDT_RESERVED_NUM_ENTRIES int "Number of reserved GDT entry place holders" depends on GDT_DYNAMIC default 0 help This option defines the number of GDT entry place holders revserved that can be filled at runtime. endmenu menu "Processor Capabilities" config X86_ENABLE_TSS bool help This hidden option enables defining a Task State Segment (TSS) for kernel execution. This is needed to handle double-faults or do privilege elevation. It also defines a special TSS and handler for correctly handling double-fault exceptions, instead of just letting the system triple-fault and reset. config X86_STACK_PROTECTION bool default y if HW_STACK_PROTECTION select THREAD_STACK_INFO select SET_GDT select GDT_DYNAMIC select X86_ENABLE_TSS imply THREAD_STACK_MEM_MAPPED if !DEMAND_PAGING help This option leverages the MMU to cause a system fatal error if the bounds of the current process stack are overflowed. This is done by preceding all stack areas with a 4K guard page. config X86_USERSPACE bool default y if USERSPACE select THREAD_STACK_INFO select SET_GDT select GDT_DYNAMIC select X86_ENABLE_TSS help This option enables APIs to drop a thread's privileges down to ring 3, supporting user-level threads that are protected from each other and from crashing the kernel. config X86_PAE bool "Use PAE page tables" default y depends on X86_MMU help If enabled, use PAE-style page tables instead of 32-bit page tables. The advantage is support for the Execute Disable bit, at a cost of more memory for paging structures. menu "Architecture Floating Point Options" if CPU_HAS_FPU config SSE bool "SSE registers" depends on FPU select X86_SSE help This option is deprecated. Please use CONFIG_X86_SSE instead. config SSE_FP_MATH bool "Compiler-generated SSEx instructions" depends on X86_SSE select X86_SSE_FP_MATH help This option is deprecated. Please use CONFIG_X86_SSE_FP_MATH instead. config EAGER_FPU_SHARING bool depends on FPU depends on USERSPACE default y if !X86_NO_LAZY_FP help This hidden option unconditionally saves/restores the FPU/SIMD register state on every context switch. Mitigates CVE-2018-3665, but incurs a performance hit. For vulnerable systems that process sensitive information in the FPU register set, should be used any time CONFIG_FPU is enabled, regardless if the FPU is used by one thread or multiple. config LAZY_FPU_SHARING bool depends on FPU depends on !EAGER_FPU_SHARING depends on FPU_SHARING default y if X86_NO_LAZY_FP || !USERSPACE help This hidden option allows multiple threads to use the floating point registers, using logic to lazily save/restore the floating point register state on context switch. On Intel Core processors, may be vulnerable to exploits which allows malware to read the contents of all floating point registers, see CVE-2018-3665. endif # CPU_HAS_FPU config X86_FP_USE_SOFT_FLOAT bool default y if !FPU help Enable using software floating point operations. endmenu config X86_DYNAMIC_IRQ_STUBS int "Number of dynamic interrupt stubs" depends on DYNAMIC_INTERRUPTS default 4 help Installing interrupt handlers with irq_connect_dynamic() requires some stub code to be generated at build time, one stub per dynamic interrupt. endmenu config ARCH_HAS_STACKWALK bool default y select DEBUG_INFO select THREAD_STACK_INFO depends on !OMIT_FRAME_POINTER help Internal config to indicate that the arch_stack_walk() API is implemented and it can be enabled. config X86_USE_THREAD_LOCAL_STORAGE bool default y if THREAD_LOCAL_STORAGE select SET_GDT select GDT_DYNAMIC help Internal config to enable thread local storage. config X86_MFENCE_INSTRUCTION_SUPPORTED bool "X86 MFENCE instruction supported" default y depends on CACHE_MANAGEMENT help Set n to disable the use of MFENCE instruction in arch_dcache_flush() for X86 CPUs have CLFLUSH instruction but no MFENCE config X86_RUNTIME_IRQ_STATS bool help Add irq runtime statistics to allow runtime profiling irq performance data with Host tools, enable this and implement platform dependent API runtime_irq_stats(). endif # !X86_64