2005-04-16 15:20:36 -07:00
|
|
|
menu "Kernel hacking"
|
|
|
|
|
2006-07-03 00:24:43 -07:00
|
|
|
config TRACE_IRQFLAGS_SUPPORT
|
2007-10-24 15:50:43 -07:00
|
|
|
def_bool y
|
2006-07-03 00:24:43 -07:00
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
source "lib/Kconfig.debug"
|
|
|
|
|
2008-07-17 15:26:59 -07:00
|
|
|
config STRICT_DEVMEM
|
2008-06-05 13:47:13 -07:00
|
|
|
bool "Filter access to /dev/mem"
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-07-21 13:04:08 -07:00
|
|
|
If this option is disabled, you allow userspace (root) access to all
|
2008-06-05 13:47:13 -07:00
|
|
|
of memory, including kernel and userspace memory. Accidental
|
|
|
|
access to this is obviously disastrous, but specific access can
|
2008-07-17 15:26:59 -07:00
|
|
|
be used by people debugging the kernel. Note that with PAT support
|
|
|
|
enabled, even in this case there are restrictions on /dev/mem
|
|
|
|
use due to the cache aliasing requirements.
|
2008-06-05 13:47:13 -07:00
|
|
|
|
|
|
|
If this option is switched on, the /dev/mem file only allows
|
|
|
|
userspace access to PCI space and the BIOS code and data regions.
|
|
|
|
This is sufficient for dosemu and X and all common users of
|
|
|
|
/dev/mem.
|
|
|
|
|
|
|
|
If in doubt, say Y.
|
2008-04-24 14:40:47 -07:00
|
|
|
|
2008-06-18 11:04:35 -07:00
|
|
|
config X86_VERBOSE_BOOTUP
|
|
|
|
bool "Enable verbose x86 bootup info messages"
|
|
|
|
default y
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-06-18 11:04:35 -07:00
|
|
|
Enables the informational output from the decompression stage
|
|
|
|
(e.g. bzImage) of the boot. If you disable this you will still
|
|
|
|
see errors. Disable this if you want silent bootup.
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
config EARLY_PRINTK
|
2011-01-20 15:44:16 -07:00
|
|
|
bool "Early printk" if EXPERT
|
2005-04-16 15:20:36 -07:00
|
|
|
default y
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2005-04-16 15:20:36 -07:00
|
|
|
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.
|
|
|
|
|
2010-09-13 00:08:55 -07:00
|
|
|
config EARLY_PRINTK_MRST
|
|
|
|
bool "Early printk for MRST platform support"
|
|
|
|
depends on EARLY_PRINTK && X86_MRST
|
|
|
|
|
2008-07-24 17:29:40 -07:00
|
|
|
config EARLY_PRINTK_DBGP
|
|
|
|
bool "Early printk via EHCI debug port"
|
2008-07-26 08:28:11 -07:00
|
|
|
depends on EARLY_PRINTK && PCI
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-07-24 17:29:40 -07:00
|
|
|
Write kernel log output directly into the EHCI debug 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. You need usb debug device.
|
|
|
|
|
2005-04-16 15:20:36 -07:00
|
|
|
config DEBUG_STACKOVERFLOW
|
|
|
|
bool "Check for stack overflows"
|
|
|
|
depends on DEBUG_KERNEL
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2005-07-27 11:44:23 -07:00
|
|
|
This option will cause messages to be printed if free stack space
|
|
|
|
drops below a certain limit.
|
2005-04-16 15:20:36 -07:00
|
|
|
|
|
|
|
config DEBUG_STACK_USAGE
|
|
|
|
bool "Stack utilization instrumentation"
|
|
|
|
depends on DEBUG_KERNEL
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2005-04-16 15:20:36 -07:00
|
|
|
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.
|
|
|
|
|
2008-01-30 05:33:22 -07:00
|
|
|
config DEBUG_PER_CPU_MAPS
|
|
|
|
bool "Debug access to per_cpu maps"
|
|
|
|
depends on DEBUG_KERNEL
|
2009-01-27 09:07:08 -07:00
|
|
|
depends on SMP
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-01-30 05:33:22 -07:00
|
|
|
Say Y to verify that the per_cpu map being accessed has
|
|
|
|
been setup. Adds a fair amount of code to kernel memory
|
|
|
|
and decreases performance.
|
|
|
|
|
|
|
|
Say N if unsure.
|
|
|
|
|
2008-04-17 08:40:45 -07:00
|
|
|
config X86_PTDUMP
|
|
|
|
bool "Export kernel pagetable layout to userspace via debugfs"
|
2008-04-17 08:40:45 -07:00
|
|
|
depends on DEBUG_KERNEL
|
2008-04-17 08:40:45 -07:00
|
|
|
select DEBUG_FS
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-04-17 08:40:45 -07:00
|
|
|
Say Y here if you want to show the kernel pagetable layout in a
|
|
|
|
debugfs file. This information is only useful for kernel developers
|
|
|
|
who are working in architecture specific areas of the kernel.
|
|
|
|
It is probably not a good idea to enable this feature in a production
|
|
|
|
kernel.
|
|
|
|
If in doubt, say "N"
|
|
|
|
|
2006-01-06 01:12:02 -07:00
|
|
|
config DEBUG_RODATA
|
|
|
|
bool "Write protect kernel read-only data structures"
|
2008-01-30 05:33:32 -07:00
|
|
|
default y
|
2006-01-06 01:12:02 -07:00
|
|
|
depends on DEBUG_KERNEL
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2006-01-06 01:12:02 -07:00
|
|
|
Mark the kernel read-only data as write-protected in the pagetables,
|
|
|
|
in order to catch accidental (and incorrect) writes to such const
|
2008-01-30 05:33:32 -07:00
|
|
|
data. This is recommended so that we can catch kernel bugs sooner.
|
|
|
|
If in doubt, say "Y".
|
2006-01-06 01:12:02 -07:00
|
|
|
|
2008-01-30 05:34:09 -07:00
|
|
|
config DEBUG_RODATA_TEST
|
|
|
|
bool "Testcase for the DEBUG_RODATA feature"
|
|
|
|
depends on DEBUG_RODATA
|
2008-02-13 08:15:34 -07:00
|
|
|
default y
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-01-30 05:34:09 -07:00
|
|
|
This option enables a testcase for the DEBUG_RODATA
|
|
|
|
feature as well as for the change_page_attr() infrastructure.
|
|
|
|
If in doubt, say "N"
|
|
|
|
|
2010-11-16 14:35:16 -07:00
|
|
|
config DEBUG_SET_MODULE_RONX
|
|
|
|
bool "Set loadable kernel module data as NX and text as RO"
|
|
|
|
depends on MODULES
|
|
|
|
---help---
|
|
|
|
This option helps catch unintended modifications to loadable
|
|
|
|
kernel module's text and read-only data. It also prevents execution
|
|
|
|
of module data. Such protection may interfere with run-time code
|
|
|
|
patching and dynamic kernel tracing - and they might also protect
|
|
|
|
against certain classes of kernel exploits.
|
|
|
|
If in doubt, say "N".
|
|
|
|
|
2008-01-30 05:34:09 -07:00
|
|
|
config DEBUG_NX_TEST
|
|
|
|
tristate "Testcase for the NX non-executable stack feature"
|
|
|
|
depends on DEBUG_KERNEL && m
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-01-30 05:34:09 -07:00
|
|
|
This option enables a testcase for the CPU NX capability
|
|
|
|
and the software setup of this feature.
|
|
|
|
If in doubt, say "N"
|
|
|
|
|
2006-04-18 03:35:22 -07:00
|
|
|
config DOUBLEFAULT
|
|
|
|
default y
|
2011-01-20 15:44:16 -07:00
|
|
|
bool "Enable doublefault exception handler" if EXPERT
|
2007-10-24 15:50:43 -07:00
|
|
|
depends on X86_32
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2007-10-24 15:50:43 -07:00
|
|
|
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 IOMMU_DEBUG
|
|
|
|
bool "Enable IOMMU debugging"
|
2007-10-24 03:49:48 -07:00
|
|
|
depends on GART_IOMMU && DEBUG_KERNEL
|
2007-10-24 15:50:43 -07:00
|
|
|
depends on X86_64
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2007-10-24 15:50:43 -07:00
|
|
|
Force the IOMMU to on even when you have less than 4GB of
|
|
|
|
memory and add debugging code. On overflow always panic. And
|
|
|
|
allow to enable IOMMU leak tracing. Can be disabled at boot
|
|
|
|
time with iommu=noforce. This will also enable scatter gather
|
|
|
|
list merging. Currently not recommended for production
|
|
|
|
code. When you use it make sure you have a big enough
|
|
|
|
IOMMU/AGP aperture. Most of the options enabled by this can
|
|
|
|
be set more finegrained using the iommu= command line
|
|
|
|
options. See Documentation/x86_64/boot-options.txt for more
|
|
|
|
details.
|
|
|
|
|
2009-05-22 03:15:49 -07:00
|
|
|
config IOMMU_STRESS
|
|
|
|
bool "Enable IOMMU stress-test mode"
|
|
|
|
---help---
|
|
|
|
This option disables various optimizations in IOMMU related
|
|
|
|
code to do real stress testing of the IOMMU code. This option
|
|
|
|
will cause a performance drop and should only be enabled for
|
|
|
|
testing.
|
|
|
|
|
2007-10-24 15:50:43 -07:00
|
|
|
config IOMMU_LEAK
|
|
|
|
bool "IOMMU leak tracing"
|
2009-04-13 17:43:19 -07:00
|
|
|
depends on IOMMU_DEBUG && DMA_API_DEBUG
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2007-10-24 15:50:43 -07:00
|
|
|
Add a simple leak tracer to the IOMMU code. This is useful when you
|
|
|
|
are debugging a buggy device driver that leaks IOMMU mappings.
|
|
|
|
|
2009-01-03 12:23:51 -07:00
|
|
|
config HAVE_MMIOTRACE_SUPPORT
|
|
|
|
def_bool y
|
2008-05-12 12:20:56 -07:00
|
|
|
|
2009-08-13 13:34:21 -07:00
|
|
|
config X86_DECODER_SELFTEST
|
2009-12-06 04:14:29 -07:00
|
|
|
bool "x86 instruction decoder selftest"
|
|
|
|
depends on DEBUG_KERNEL && KPROBES
|
2009-08-13 13:34:21 -07:00
|
|
|
---help---
|
|
|
|
Perform x86 instruction decoder selftests at build time.
|
|
|
|
This option is useful for checking the sanity of x86 instruction
|
|
|
|
decoder code.
|
|
|
|
If unsure, say "N".
|
|
|
|
|
2008-01-30 05:30:05 -07:00
|
|
|
#
|
|
|
|
# IO delay types:
|
|
|
|
#
|
|
|
|
|
|
|
|
config IO_DELAY_TYPE_0X80
|
|
|
|
int
|
|
|
|
default "0"
|
|
|
|
|
|
|
|
config IO_DELAY_TYPE_0XED
|
|
|
|
int
|
|
|
|
default "1"
|
|
|
|
|
|
|
|
config IO_DELAY_TYPE_UDELAY
|
|
|
|
int
|
|
|
|
default "2"
|
|
|
|
|
|
|
|
config IO_DELAY_TYPE_NONE
|
|
|
|
int
|
|
|
|
default "3"
|
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "IO delay type"
|
2008-02-17 12:20:24 -07:00
|
|
|
default IO_DELAY_0X80
|
2008-01-30 05:30:05 -07:00
|
|
|
|
|
|
|
config IO_DELAY_0X80
|
|
|
|
bool "port 0x80 based port-IO delay [recommended]"
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-01-30 05:30:05 -07:00
|
|
|
This is the traditional Linux IO delay used for in/out_p.
|
|
|
|
It is the most tested hence safest selection here.
|
|
|
|
|
|
|
|
config IO_DELAY_0XED
|
|
|
|
bool "port 0xed based port-IO delay"
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-01-30 05:30:05 -07:00
|
|
|
Use port 0xed as the IO delay. This frees up port 0x80 which is
|
|
|
|
often used as a hardware-debug port.
|
|
|
|
|
|
|
|
config IO_DELAY_UDELAY
|
|
|
|
bool "udelay based port-IO delay"
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-01-30 05:30:05 -07:00
|
|
|
Use udelay(2) as the IO delay method. This provides the delay
|
|
|
|
while not having any side-effect on the IO port space.
|
|
|
|
|
|
|
|
config IO_DELAY_NONE
|
|
|
|
bool "no port-IO delay"
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-01-30 05:30:05 -07:00
|
|
|
No port-IO delay. Will break on old boxes that require port-IO
|
|
|
|
delay for certain operations. Should work on most new machines.
|
|
|
|
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
if IO_DELAY_0X80
|
|
|
|
config DEFAULT_IO_DELAY_TYPE
|
|
|
|
int
|
|
|
|
default IO_DELAY_TYPE_0X80
|
|
|
|
endif
|
|
|
|
|
|
|
|
if IO_DELAY_0XED
|
|
|
|
config DEFAULT_IO_DELAY_TYPE
|
|
|
|
int
|
|
|
|
default IO_DELAY_TYPE_0XED
|
|
|
|
endif
|
|
|
|
|
|
|
|
if IO_DELAY_UDELAY
|
|
|
|
config DEFAULT_IO_DELAY_TYPE
|
|
|
|
int
|
|
|
|
default IO_DELAY_TYPE_UDELAY
|
|
|
|
endif
|
|
|
|
|
|
|
|
if IO_DELAY_NONE
|
|
|
|
config DEFAULT_IO_DELAY_TYPE
|
|
|
|
int
|
|
|
|
default IO_DELAY_TYPE_NONE
|
|
|
|
endif
|
2008-01-30 05:30:05 -07:00
|
|
|
|
2008-01-30 05:32:51 -07:00
|
|
|
config DEBUG_BOOT_PARAMS
|
|
|
|
bool "Debug boot parameters"
|
|
|
|
depends on DEBUG_KERNEL
|
|
|
|
depends on DEBUG_FS
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-01-30 05:32:51 -07:00
|
|
|
This option will cause struct boot_params to be exported via debugfs.
|
|
|
|
|
2008-01-30 05:33:42 -07:00
|
|
|
config CPA_DEBUG
|
2008-02-06 14:39:45 -07:00
|
|
|
bool "CPA self-test code"
|
2008-01-30 05:34:04 -07:00
|
|
|
depends on DEBUG_KERNEL
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-02-06 14:39:45 -07:00
|
|
|
Do change_page_attr() self-tests every 30 seconds.
|
2008-01-30 05:33:42 -07:00
|
|
|
|
2008-03-03 04:38:52 -07:00
|
|
|
config OPTIMIZE_INLINING
|
|
|
|
bool "Allow gcc to uninline functions marked 'inline'"
|
2009-02-05 08:21:53 -07:00
|
|
|
---help---
|
2008-03-03 04:38:52 -07:00
|
|
|
This option determines if the kernel forces gcc to inline the functions
|
|
|
|
developers have marked 'inline'. Doing so takes away freedom from gcc to
|
|
|
|
do what it thinks is best, which is desirable for the gcc 3.x series of
|
|
|
|
compilers. The gcc 4.x series have a rewritten inlining algorithm and
|
2008-10-11 12:27:53 -07:00
|
|
|
enabling this option will generate a smaller kernel there. Hopefully
|
|
|
|
this algorithm is so good that allowing gcc 4.x and above to make the
|
|
|
|
decision will become the default in the future. Until then this option
|
|
|
|
is there to test gcc for this.
|
2008-04-29 23:48:45 -07:00
|
|
|
|
2008-07-18 07:30:05 -07:00
|
|
|
If unsure, say N.
|
|
|
|
|
2009-10-02 07:50:50 -07:00
|
|
|
config DEBUG_STRICT_USER_COPY_CHECKS
|
|
|
|
bool "Strict copy size checks"
|
2009-10-06 07:04:52 -07:00
|
|
|
depends on DEBUG_KERNEL && !TRACE_BRANCH_PROFILING
|
2009-10-02 07:50:50 -07:00
|
|
|
---help---
|
|
|
|
Enabling this option turns a certain set of sanity checks for user
|
|
|
|
copy operations into compile time failures.
|
|
|
|
|
|
|
|
The copy_from_user() etc checks are there to help test if there
|
|
|
|
are sufficient security checks on the length argument of
|
|
|
|
the copy operation, by having gcc prove that the argument is
|
|
|
|
within bounds.
|
|
|
|
|
|
|
|
If unsure, or if you run an older (pre 4.4) gcc, say N.
|
|
|
|
|
2008-04-29 23:48:45 -07:00
|
|
|
endmenu
|