![Rusty Russell](/assets/img/avatar_default.png)
It turns out that the most called ops, by several orders of magnitude, are the interrupt manipulation ops. These are obvious candidates for patching, so mark them up and create infrastructure for it. The method used is that the ops structure has a patch function, which is called for each place which needs to be patched: this returns a number of instructions (the rest are NOP-padded). Usually we can spare a register (%eax) for the binary patched code to use, but in a couple of critical places in entry.S we can't: we make the clobbers explicit at the call site, and manually clobber the allowed registers in debug mode as an extra check. And: Don't abuse CONFIG_DEBUG_KERNEL, add CONFIG_DEBUG_PARAVIRT. And: AK: Fix warnings in x86-64 alternative.c build And: AK: Fix compilation with defconfig And: ^From: Andrew Morton <akpm@osdl.org> Some binutlises still like to emit references to __stop_parainstructions and __start_parainstructions. And: AK: Fix warnings about unused variables when PARAVIRT is disabled. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com> Signed-off-by: Chris Wright <chrisw@sous-sol.org> Signed-off-by: Zachary Amsden <zach@vmware.com> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org>
99 lines
3.1 KiB
Plaintext
99 lines
3.1 KiB
Plaintext
menu "Kernel hacking"
|
|
|
|
config TRACE_IRQFLAGS_SUPPORT
|
|
bool
|
|
default y
|
|
|
|
source "lib/Kconfig.debug"
|
|
|
|
config EARLY_PRINTK
|
|
bool "Early printk" if EMBEDDED && DEBUG_KERNEL
|
|
default y
|
|
help
|
|
Write kernel log output directly into the VGA buffer or to a serial
|
|
port.
|
|
|
|
This is useful for kernel debugging when your machine crashes very
|
|
early before the console code is initialized. For normal operation
|
|
it is not recommended because it looks ugly and doesn't cooperate
|
|
with klogd/syslogd or the X server. You should normally N here,
|
|
unless you want to debug such a crash.
|
|
|
|
config DEBUG_STACKOVERFLOW
|
|
bool "Check for stack overflows"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
This option will cause messages to be printed if free stack space
|
|
drops below a certain limit.
|
|
|
|
config DEBUG_STACK_USAGE
|
|
bool "Stack utilization instrumentation"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Enables the display of the minimum amount of free stack which each
|
|
task has ever had available in the sysrq-T and sysrq-P debug output.
|
|
|
|
This option will slow down process creation somewhat.
|
|
|
|
comment "Page alloc debug is incompatible with Software Suspend on i386"
|
|
depends on DEBUG_KERNEL && SOFTWARE_SUSPEND
|
|
|
|
config DEBUG_PAGEALLOC
|
|
bool "Debug page memory allocations"
|
|
depends on DEBUG_KERNEL && !SOFTWARE_SUSPEND && !HUGETLBFS
|
|
help
|
|
Unmap pages from the kernel linear mapping after free_pages().
|
|
This results in a large slowdown, but helps to find certain types
|
|
of memory corruptions.
|
|
|
|
config DEBUG_RODATA
|
|
bool "Write protect kernel read-only data structures"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Mark the kernel read-only data as write-protected in the pagetables,
|
|
in order to catch accidental (and incorrect) writes to such const
|
|
data. This option may have a slight performance impact because a
|
|
portion of the kernel code won't be covered by a 2MB TLB anymore.
|
|
If in doubt, say "N".
|
|
|
|
config 4KSTACKS
|
|
bool "Use 4Kb for kernel stacks instead of 8Kb"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
If you say Y here the kernel will use a 4Kb stacksize for the
|
|
kernel stack attached to each process/thread. This facilitates
|
|
running more threads on a system and also reduces the pressure
|
|
on the VM subsystem for higher order allocations. This option
|
|
will also use IRQ stacks to compensate for the reduced stackspace.
|
|
|
|
config X86_FIND_SMP_CONFIG
|
|
bool
|
|
depends on X86_LOCAL_APIC || X86_VOYAGER
|
|
default y
|
|
|
|
config X86_MPPARSE
|
|
bool
|
|
depends on X86_LOCAL_APIC && !X86_VISWS
|
|
default y
|
|
|
|
config DOUBLEFAULT
|
|
default y
|
|
bool "Enable doublefault exception handler" if EMBEDDED
|
|
help
|
|
This option allows trapping of rare doublefault exceptions that
|
|
would otherwise cause a system to silently reboot. Disabling this
|
|
option saves about 4k and might cause you much additional grey
|
|
hair.
|
|
|
|
config DEBUG_PARAVIRT
|
|
bool "Enable some paravirtualization debugging"
|
|
default y
|
|
depends on PARAVIRT && DEBUG_KERNEL
|
|
help
|
|
Currently deliberately clobbers regs which are allowed to be
|
|
clobbered in inlined paravirt hooks, even in native mode.
|
|
If turning this off solves a problem, then DISABLE_INTERRUPTS() or
|
|
ENABLE_INTERRUPTS() is lying about what registers can be clobbered.
|
|
|
|
endmenu
|