提交 0a4af3b0 编写于 作者: P Pekka Enberg 提交者: Vegard Nossum

kmemcheck: make kconfig accessible for other architectures

The Kconfig options of kmemcheck are hidden under arch/x86 which makes porting
to other architectures harder. To fix that, move the Kconfig bits to
lib/Kconfig.kmemcheck and introduce a CONFIG_HAVE_ARCH_KMEMCHECK config option
that architectures can define.
Signed-off-by: NPekka Enberg <penberg@cs.helsinki.fi>

[rebased for mainline inclusion]
Signed-off-by: NVegard Nossum <vegard.nossum@gmail.com>
上级 7d46d9e6
...@@ -46,6 +46,7 @@ config X86 ...@@ -46,6 +46,7 @@ config X86
select HAVE_KERNEL_GZIP select HAVE_KERNEL_GZIP
select HAVE_KERNEL_BZIP2 select HAVE_KERNEL_BZIP2
select HAVE_KERNEL_LZMA select HAVE_KERNEL_LZMA
select HAVE_ARCH_KMEMCHECK
config OUTPUT_FORMAT config OUTPUT_FORMAT
string string
......
...@@ -260,94 +260,6 @@ config DEFAULT_IO_DELAY_TYPE ...@@ -260,94 +260,6 @@ config DEFAULT_IO_DELAY_TYPE
default IO_DELAY_TYPE_NONE default IO_DELAY_TYPE_NONE
endif endif
menuconfig KMEMCHECK
bool "kmemcheck: trap use of uninitialized memory"
depends on DEBUG_KERNEL
depends on !X86_USE_3DNOW
depends on SLUB || SLAB
depends on !CC_OPTIMIZE_FOR_SIZE
depends on !FUNCTION_TRACER
select FRAME_POINTER
select STACKTRACE
default n
help
This option enables tracing of dynamically allocated kernel memory
to see if memory is used before it has been given an initial value.
Be aware that this requires half of your memory for bookkeeping and
will insert extra code at *every* read and write to tracked memory
thus slow down the kernel code (but user code is unaffected).
The kernel may be started with kmemcheck=0 or kmemcheck=1 to disable
or enable kmemcheck at boot-time. If the kernel is started with
kmemcheck=0, the large memory and CPU overhead is not incurred.
choice
prompt "kmemcheck: default mode at boot"
depends on KMEMCHECK
default KMEMCHECK_ONESHOT_BY_DEFAULT
help
This option controls the default behaviour of kmemcheck when the
kernel boots and no kmemcheck= parameter is given.
config KMEMCHECK_DISABLED_BY_DEFAULT
bool "disabled"
depends on KMEMCHECK
config KMEMCHECK_ENABLED_BY_DEFAULT
bool "enabled"
depends on KMEMCHECK
config KMEMCHECK_ONESHOT_BY_DEFAULT
bool "one-shot"
depends on KMEMCHECK
help
In one-shot mode, only the first error detected is reported before
kmemcheck is disabled.
endchoice
config KMEMCHECK_QUEUE_SIZE
int "kmemcheck: error queue size"
depends on KMEMCHECK
default 64
help
Select the maximum number of errors to store in the queue. Since
errors can occur virtually anywhere and in any context, we need a
temporary storage area which is guarantueed not to generate any
other faults. The queue will be emptied as soon as a tasklet may
be scheduled. If the queue is full, new error reports will be
lost.
config KMEMCHECK_SHADOW_COPY_SHIFT
int "kmemcheck: shadow copy size (5 => 32 bytes, 6 => 64 bytes)"
depends on KMEMCHECK
range 2 8
default 5
help
Select the number of shadow bytes to save along with each entry of
the queue. These bytes indicate what parts of an allocation are
initialized, uninitialized, etc. and will be displayed when an
error is detected to help the debugging of a particular problem.
config KMEMCHECK_PARTIAL_OK
bool "kmemcheck: allow partially uninitialized memory"
depends on KMEMCHECK
default y
help
This option works around certain GCC optimizations that produce
32-bit reads from 16-bit variables where the upper 16 bits are
thrown away afterwards. This may of course also hide some real
bugs.
config KMEMCHECK_BITOPS_OK
bool "kmemcheck: allow bit-field manipulation"
depends on KMEMCHECK
default n
help
This option silences warnings that would be generated for bit-field
accesses where not all the bits are initialized at the same time.
This may also hide some real bugs.
config DEBUG_BOOT_PARAMS config DEBUG_BOOT_PARAMS
bool "Debug boot parameters" bool "Debug boot parameters"
depends on DEBUG_KERNEL depends on DEBUG_KERNEL
......
...@@ -996,3 +996,5 @@ config DMA_API_DEBUG ...@@ -996,3 +996,5 @@ config DMA_API_DEBUG
source "samples/Kconfig" source "samples/Kconfig"
source "lib/Kconfig.kgdb" source "lib/Kconfig.kgdb"
source "lib/Kconfig.kmemcheck"
config HAVE_ARCH_KMEMCHECK
bool
menuconfig KMEMCHECK
bool "kmemcheck: trap use of uninitialized memory"
depends on DEBUG_KERNEL
depends on !X86_USE_3DNOW
depends on SLUB || SLAB
depends on !CC_OPTIMIZE_FOR_SIZE
depends on !FUNCTION_TRACER
select FRAME_POINTER
select STACKTRACE
default n
help
This option enables tracing of dynamically allocated kernel memory
to see if memory is used before it has been given an initial value.
Be aware that this requires half of your memory for bookkeeping and
will insert extra code at *every* read and write to tracked memory
thus slow down the kernel code (but user code is unaffected).
The kernel may be started with kmemcheck=0 or kmemcheck=1 to disable
or enable kmemcheck at boot-time. If the kernel is started with
kmemcheck=0, the large memory and CPU overhead is not incurred.
choice
prompt "kmemcheck: default mode at boot"
depends on KMEMCHECK
default KMEMCHECK_ONESHOT_BY_DEFAULT
help
This option controls the default behaviour of kmemcheck when the
kernel boots and no kmemcheck= parameter is given.
config KMEMCHECK_DISABLED_BY_DEFAULT
bool "disabled"
depends on KMEMCHECK
config KMEMCHECK_ENABLED_BY_DEFAULT
bool "enabled"
depends on KMEMCHECK
config KMEMCHECK_ONESHOT_BY_DEFAULT
bool "one-shot"
depends on KMEMCHECK
help
In one-shot mode, only the first error detected is reported before
kmemcheck is disabled.
endchoice
config KMEMCHECK_QUEUE_SIZE
int "kmemcheck: error queue size"
depends on KMEMCHECK
default 64
help
Select the maximum number of errors to store in the queue. Since
errors can occur virtually anywhere and in any context, we need a
temporary storage area which is guarantueed not to generate any
other faults. The queue will be emptied as soon as a tasklet may
be scheduled. If the queue is full, new error reports will be
lost.
config KMEMCHECK_SHADOW_COPY_SHIFT
int "kmemcheck: shadow copy size (5 => 32 bytes, 6 => 64 bytes)"
depends on KMEMCHECK
range 2 8
default 5
help
Select the number of shadow bytes to save along with each entry of
the queue. These bytes indicate what parts of an allocation are
initialized, uninitialized, etc. and will be displayed when an
error is detected to help the debugging of a particular problem.
config KMEMCHECK_PARTIAL_OK
bool "kmemcheck: allow partially uninitialized memory"
depends on KMEMCHECK
default y
help
This option works around certain GCC optimizations that produce
32-bit reads from 16-bit variables where the upper 16 bits are
thrown away afterwards. This may of course also hide some real
bugs.
config KMEMCHECK_BITOPS_OK
bool "kmemcheck: allow bit-field manipulation"
depends on KMEMCHECK
default n
help
This option silences warnings that would be generated for bit-field
accesses where not all the bits are initialized at the same time.
This may also hide some real bugs.
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册