mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-20 02:34:23 +08:00
5642530651
The trick is that we do the kernel linear mapping TLB miss starting with an instruction sequence like this: ba,pt %xcc, kvmap_load xor %g2, %g4, %g5 succeeded by an instruction sequence which performs a full page table walk starting at swapper_pg_dir. We first take over the trap table from the firmware. Then, using this constant PTE generation for the linear mapping area above, we build the kernel page tables for the linear mapping. After this is setup, we patch that branch above into a "nop", which will cause TLB misses to fall through to the full page table walk. With this, the page unmapping for CONFIG_DEBUG_PAGEALLOC is trivial. Signed-off-by: David S. Miller <davem@davemloft.net>
55 lines
1.3 KiB
Plaintext
55 lines
1.3 KiB
Plaintext
menu "Kernel hacking"
|
|
|
|
source "lib/Kconfig.debug"
|
|
|
|
config DEBUG_STACK_USAGE
|
|
bool "Enable 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.
|
|
|
|
config KPROBES
|
|
bool "Kprobes"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Kprobes allows you to trap at almost any kernel address and
|
|
execute a callback function. register_kprobe() establishes
|
|
a probepoint and specifies the callback. Kprobes is useful
|
|
for kernel debugging, non-intrusive instrumentation and testing.
|
|
If in doubt, say "N".
|
|
|
|
config DEBUG_DCFLUSH
|
|
bool "D-cache flush debugging"
|
|
depends on DEBUG_KERNEL
|
|
|
|
config STACK_DEBUG
|
|
depends on DEBUG_KERNEL
|
|
bool "Stack Overflow Detection Support"
|
|
|
|
config DEBUG_BOOTMEM
|
|
depends on DEBUG_KERNEL
|
|
bool "Debug BOOTMEM initialization"
|
|
|
|
config DEBUG_PAGEALLOC
|
|
bool "Page alloc debugging"
|
|
depends on DEBUG_KERNEL && !SOFTWARE_SUSPEND
|
|
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 MCOUNT
|
|
bool
|
|
depends on STACK_DEBUG
|
|
default y
|
|
|
|
config FRAME_POINTER
|
|
bool
|
|
depends on MCOUNT
|
|
default y
|
|
|
|
endmenu
|