mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 08:44:21 +08:00
f509247b08
ptdump_check_wx() is called from mark_rodata_ro() which only exists
when CONFIG_STRICT_KERNEL_RWX is selected.
Fixes: 453d87f6a8
("powerpc/mm: Warn if W+X pages found on boot")
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/922d4939c735c6b52b4137838bcc066fffd4fc33.1578989545.git.christophe.leroy@c-s.fr
401 lines
12 KiB
Plaintext
401 lines
12 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
config PPC_DISABLE_WERROR
|
|
bool "Don't build arch/powerpc code with -Werror"
|
|
help
|
|
This option tells the compiler NOT to build the code under
|
|
arch/powerpc with the -Werror flag (which means warnings
|
|
are treated as errors).
|
|
|
|
Only enable this if you are hitting a build failure in the
|
|
arch/powerpc code caused by a warning, and you don't feel
|
|
inclined to fix it.
|
|
|
|
config PPC_WERROR
|
|
bool
|
|
depends on !PPC_DISABLE_WERROR
|
|
default y
|
|
|
|
config PRINT_STACK_DEPTH
|
|
int "Stack depth to print" if DEBUG_KERNEL
|
|
default 64
|
|
help
|
|
This option allows you to set the stack depth that the kernel
|
|
prints in stack traces. This can be useful if your display is
|
|
too small and stack traces cause important information to
|
|
scroll off the screen.
|
|
|
|
config HCALL_STATS
|
|
bool "Hypervisor call instrumentation"
|
|
depends on PPC_PSERIES && DEBUG_FS && TRACEPOINTS
|
|
help
|
|
Adds code to keep track of the number of hypervisor calls made and
|
|
the amount of time spent in hypervisor calls. Wall time spent in
|
|
each call is always calculated, and if available CPU cycles spent
|
|
are also calculated. A directory named hcall_inst is added at the
|
|
root of the debugfs filesystem. Within the hcall_inst directory
|
|
are files that contain CPU specific call statistics.
|
|
|
|
This option will add a small amount of overhead to all hypervisor
|
|
calls.
|
|
|
|
config PPC_EMULATED_STATS
|
|
bool "Emulated instructions tracking"
|
|
depends on DEBUG_FS
|
|
help
|
|
Adds code to keep track of the number of instructions that are
|
|
emulated by the in-kernel emulator. Counters for the various classes
|
|
of emulated instructions are available under
|
|
powerpc/emulated_instructions/ in the root of the debugfs file
|
|
system. Optionally (controlled by
|
|
powerpc/emulated_instructions/do_warn in debugfs), rate-limited
|
|
warnings can be printed to the console when instructions are
|
|
emulated.
|
|
|
|
config CODE_PATCHING_SELFTEST
|
|
bool "Run self-tests of the code-patching code"
|
|
depends on DEBUG_KERNEL
|
|
|
|
config JUMP_LABEL_FEATURE_CHECKS
|
|
bool "Enable use of jump label for cpu/mmu_has_feature()"
|
|
depends on JUMP_LABEL
|
|
default y
|
|
help
|
|
Selecting this options enables use of jump labels for some internal
|
|
feature checks. This should generate more optimal code for those
|
|
checks.
|
|
|
|
config JUMP_LABEL_FEATURE_CHECK_DEBUG
|
|
bool "Do extra check on feature fixup calls"
|
|
depends on DEBUG_KERNEL && JUMP_LABEL_FEATURE_CHECKS
|
|
help
|
|
This tries to catch incorrect usage of cpu_has_feature() and
|
|
mmu_has_feature() in the code.
|
|
|
|
If you don't know what this means, say N.
|
|
|
|
config FTR_FIXUP_SELFTEST
|
|
bool "Run self-tests of the feature-fixup code"
|
|
depends on DEBUG_KERNEL
|
|
|
|
config MSI_BITMAP_SELFTEST
|
|
bool "Run self-tests of the MSI bitmap code"
|
|
depends on DEBUG_KERNEL
|
|
|
|
config PPC_IRQ_SOFT_MASK_DEBUG
|
|
bool "Include extra checks for powerpc irq soft masking"
|
|
|
|
config XMON
|
|
bool "Include xmon kernel debugger"
|
|
depends on DEBUG_KERNEL
|
|
help
|
|
Include in-kernel hooks for the xmon kernel monitor/debugger.
|
|
Unless you are intending to debug the kernel, say N here.
|
|
Make sure to enable also CONFIG_BOOTX_TEXT on Macs. Otherwise
|
|
nothing will appear on the screen (xmon writes directly to the
|
|
framebuffer memory).
|
|
The cmdline option 'xmon' or 'xmon=early' will drop into xmon
|
|
very early during boot. 'xmon=on' will just enable the xmon
|
|
debugger hooks. 'xmon=off' will disable the debugger hooks
|
|
if CONFIG_XMON_DEFAULT is set.
|
|
xmon will print a backtrace on the very first invocation.
|
|
'xmon=nobt' will disable this autobacktrace.
|
|
|
|
config XMON_DEFAULT
|
|
bool "Enable xmon by default"
|
|
depends on XMON
|
|
help
|
|
xmon is normally disabled unless booted with 'xmon=on'.
|
|
Use 'xmon=off' to disable xmon init during runtime.
|
|
|
|
config XMON_DISASSEMBLY
|
|
bool "Include disassembly support in xmon"
|
|
depends on XMON
|
|
default y
|
|
help
|
|
Include support for disassembling in xmon. You probably want
|
|
to say Y here, unless you're building for a memory-constrained
|
|
system.
|
|
|
|
config XMON_DEFAULT_RO_MODE
|
|
bool "Restrict xmon to read-only operations by default"
|
|
depends on XMON
|
|
default y
|
|
help
|
|
Operate xmon in read-only mode. The cmdline options 'xmon=rw' and
|
|
'xmon=ro' override this default.
|
|
|
|
config DEBUGGER
|
|
bool
|
|
depends on KGDB || XMON
|
|
default y
|
|
|
|
config BDI_SWITCH
|
|
bool "Include BDI-2000 user context switcher"
|
|
depends on DEBUG_KERNEL && PPC32
|
|
help
|
|
Include in-kernel support for the Abatron BDI2000 debugger.
|
|
Unless you are intending to debug the kernel with one of these
|
|
machines, say N here.
|
|
|
|
config BOOTX_TEXT
|
|
bool "Support for early boot text console (BootX or OpenFirmware only)"
|
|
depends on PPC_BOOK3S
|
|
help
|
|
Say Y here to see progress messages from the boot firmware in text
|
|
mode. Requires either BootX or Open Firmware.
|
|
|
|
config PPC_EARLY_DEBUG
|
|
bool "Early debugging (dangerous)"
|
|
help
|
|
Say Y to enable some early debugging facilities that may be available
|
|
for your processor/board combination. Those facilities are hacks
|
|
intended to debug problems early during boot, this should not be
|
|
enabled in a production kernel.
|
|
Note that enabling this will also cause the kernel default log level
|
|
to be pushed to max automatically very early during boot
|
|
|
|
choice
|
|
prompt "Early debugging console"
|
|
depends on PPC_EARLY_DEBUG
|
|
help
|
|
Use the selected console for early debugging. Careful, if you
|
|
enable debugging for the wrong type of machine your kernel
|
|
_will not boot_.
|
|
|
|
config PPC_EARLY_DEBUG_BOOTX
|
|
bool "BootX or OpenFirmware"
|
|
depends on BOOTX_TEXT
|
|
help
|
|
Select this to enable early debugging for a machine using BootX
|
|
or OpenFirmware.
|
|
|
|
config PPC_EARLY_DEBUG_LPAR
|
|
bool "LPAR HV Console"
|
|
depends on PPC_PSERIES && HVC_CONSOLE
|
|
help
|
|
Select this to enable early debugging for a machine with a HVC
|
|
console on vterm 0.
|
|
|
|
config PPC_EARLY_DEBUG_LPAR_HVSI
|
|
bool "LPAR HVSI Console"
|
|
depends on PPC_PSERIES && HVC_CONSOLE
|
|
help
|
|
Select this to enable early debugging for a machine with a HVSI
|
|
console on a specified vterm.
|
|
|
|
config PPC_EARLY_DEBUG_G5
|
|
bool "Apple G5"
|
|
depends on PPC_PMAC64
|
|
help
|
|
Select this to enable early debugging for Apple G5 machines.
|
|
|
|
config PPC_EARLY_DEBUG_RTAS_PANEL
|
|
bool "RTAS Panel"
|
|
depends on PPC_RTAS
|
|
help
|
|
Select this to enable early debugging via the RTAS panel.
|
|
|
|
config PPC_EARLY_DEBUG_RTAS_CONSOLE
|
|
bool "RTAS Console"
|
|
depends on PPC_RTAS
|
|
select UDBG_RTAS_CONSOLE
|
|
help
|
|
Select this to enable early debugging via the RTAS console.
|
|
|
|
config PPC_EARLY_DEBUG_MAPLE
|
|
bool "Maple real mode"
|
|
depends on PPC_MAPLE
|
|
help
|
|
Select this to enable early debugging for Maple.
|
|
|
|
config PPC_EARLY_DEBUG_PAS_REALMODE
|
|
bool "PA Semi real mode"
|
|
depends on PPC_PASEMI
|
|
help
|
|
Select this to enable early debugging for PA Semi.
|
|
Output will be on UART0.
|
|
|
|
config PPC_EARLY_DEBUG_44x
|
|
bool "Early serial debugging for IBM/AMCC 44x CPUs"
|
|
depends on 44x
|
|
help
|
|
Select this to enable early debugging for IBM 44x chips via the
|
|
inbuilt serial port. If you enable this, ensure you set
|
|
PPC_EARLY_DEBUG_44x_PHYSLOW below to suit your target board.
|
|
|
|
config PPC_EARLY_DEBUG_40x
|
|
bool "Early serial debugging for IBM/AMCC 40x CPUs"
|
|
depends on 40x
|
|
help
|
|
Select this to enable early debugging for IBM 40x chips via the
|
|
inbuilt serial port. This works on chips with a 16550 compatible
|
|
UART. Xilinx chips with uartlite cannot use this option.
|
|
|
|
config PPC_EARLY_DEBUG_CPM
|
|
bool "Early serial debugging for Freescale CPM-based serial ports"
|
|
depends on SERIAL_CPM
|
|
help
|
|
Select this to enable early debugging for Freescale chips
|
|
using a CPM-based serial port. This assumes that the bootwrapper
|
|
has run, and set up the CPM in a particular way.
|
|
|
|
config PPC_EARLY_DEBUG_USBGECKO
|
|
bool "Early debugging through the USB Gecko adapter"
|
|
depends on GAMECUBE_COMMON
|
|
select USBGECKO_UDBG
|
|
help
|
|
Select this to enable early debugging for Nintendo GameCube/Wii
|
|
consoles via an external USB Gecko adapter.
|
|
|
|
config PPC_EARLY_DEBUG_PS3GELIC
|
|
bool "Early debugging through the PS3 Ethernet port"
|
|
depends on PPC_PS3
|
|
select PS3GELIC_UDBG
|
|
help
|
|
Select this to enable early debugging for the PlayStation3 via
|
|
UDP broadcasts sent out through the Ethernet port.
|
|
|
|
config PPC_EARLY_DEBUG_OPAL_RAW
|
|
bool "OPAL raw console"
|
|
depends on HVC_OPAL
|
|
help
|
|
Select this to enable early debugging for the PowerNV platform
|
|
using a "raw" console
|
|
|
|
config PPC_EARLY_DEBUG_OPAL_HVSI
|
|
bool "OPAL hvsi console"
|
|
depends on HVC_OPAL
|
|
help
|
|
Select this to enable early debugging for the PowerNV platform
|
|
using an "hvsi" console
|
|
|
|
config PPC_EARLY_DEBUG_MEMCONS
|
|
bool "In memory console"
|
|
help
|
|
Select this to enable early debugging using an in memory console.
|
|
This console provides input and output buffers stored within the
|
|
kernel BSS and should be safe to select on any system. A debugger
|
|
can then be used to read kernel output or send input to the console.
|
|
endchoice
|
|
|
|
config PPC_MEMCONS_OUTPUT_SIZE
|
|
int "In memory console output buffer size"
|
|
depends on PPC_EARLY_DEBUG_MEMCONS
|
|
default 4096
|
|
help
|
|
Selects the size of the output buffer (in bytes) of the in memory
|
|
console.
|
|
|
|
config PPC_MEMCONS_INPUT_SIZE
|
|
int "In memory console input buffer size"
|
|
depends on PPC_EARLY_DEBUG_MEMCONS
|
|
default 128
|
|
help
|
|
Selects the size of the input buffer (in bytes) of the in memory
|
|
console.
|
|
|
|
config PPC_EARLY_DEBUG_OPAL
|
|
def_bool y
|
|
depends on PPC_EARLY_DEBUG_OPAL_RAW || PPC_EARLY_DEBUG_OPAL_HVSI
|
|
|
|
|
|
config PPC_EARLY_DEBUG_HVSI_VTERMNO
|
|
hex "vterm number to use with early debug HVSI"
|
|
depends on PPC_EARLY_DEBUG_LPAR_HVSI
|
|
default "0x30000000"
|
|
help
|
|
You probably want 0x30000000 for your first serial port and
|
|
0x30000001 for your second one
|
|
|
|
config PPC_EARLY_DEBUG_OPAL_VTERMNO
|
|
hex "vterm number to use with OPAL early debug"
|
|
depends on PPC_EARLY_DEBUG_OPAL
|
|
default "0"
|
|
help
|
|
This correspond to which /dev/hvcN you want to use for early
|
|
debug.
|
|
|
|
On OPAL v2, this will be 0 for network console and 1 or 2 for
|
|
the machine built-in serial ports.
|
|
|
|
config PPC_EARLY_DEBUG_44x_PHYSLOW
|
|
hex "Low 32 bits of early debug UART physical address"
|
|
depends on PPC_EARLY_DEBUG_44x
|
|
default "0x40000200"
|
|
help
|
|
You probably want 0x40000200 for ebony boards and
|
|
0x40000300 for taishan
|
|
|
|
config PPC_EARLY_DEBUG_44x_PHYSHIGH
|
|
hex "EPRN of early debug UART physical address"
|
|
depends on PPC_EARLY_DEBUG_44x
|
|
default "0x1"
|
|
|
|
config PPC_EARLY_DEBUG_40x_PHYSADDR
|
|
hex "Early debug UART physical address"
|
|
depends on PPC_EARLY_DEBUG_40x
|
|
default "0xef600300"
|
|
|
|
config PPC_EARLY_DEBUG_CPM_ADDR
|
|
hex "CPM UART early debug transmit descriptor address"
|
|
depends on PPC_EARLY_DEBUG_CPM
|
|
default "0xfa202008" if PPC_EP88XC
|
|
default "0xf0001ff8" if CPM2
|
|
default "0xff002008" if CPM1
|
|
help
|
|
This specifies the address of the transmit descriptor
|
|
used for early debug output. Because it is needed before
|
|
platform probing is done, all platforms selected must
|
|
share the same address.
|
|
|
|
config FAIL_IOMMU
|
|
bool "Fault-injection capability for IOMMU"
|
|
depends on FAULT_INJECTION
|
|
help
|
|
Provide fault-injection capability for IOMMU. Each device can
|
|
be selectively enabled via the fail_iommu property.
|
|
|
|
If you are unsure, say N.
|
|
|
|
config PPC_PTDUMP
|
|
bool "Export kernel pagetable layout to userspace via debugfs"
|
|
depends on DEBUG_KERNEL && DEBUG_FS
|
|
help
|
|
This option exports the state of the kernel pagetables to a
|
|
debugfs file. This is only useful for kernel developers who are
|
|
working in architecture specific areas of the kernel - probably
|
|
not a good idea to enable this feature in a production kernel.
|
|
|
|
If you are unsure, say N.
|
|
|
|
config PPC_DEBUG_WX
|
|
bool "Warn on W+X mappings at boot"
|
|
depends on PPC_PTDUMP && STRICT_KERNEL_RWX
|
|
help
|
|
Generate a warning if any W+X mappings are found at boot.
|
|
|
|
This is useful for discovering cases where the kernel is leaving
|
|
W+X mappings after applying NX, as such mappings are a security risk.
|
|
|
|
Note that even if the check fails, your kernel is possibly
|
|
still fine, as W+X mappings are not a security hole in
|
|
themselves, what they do is that they make the exploitation
|
|
of other unfixed kernel bugs easier.
|
|
|
|
There is no runtime or memory usage effect of this option
|
|
once the kernel has booted up - it's a one time check.
|
|
|
|
If in doubt, say "Y".
|
|
|
|
config PPC_FAST_ENDIAN_SWITCH
|
|
bool "Deprecated fast endian-switch syscall"
|
|
depends on DEBUG_KERNEL && PPC_BOOK3S_64
|
|
help
|
|
If you're unsure what this is, say N.
|
|
|
|
config KASAN_SHADOW_OFFSET
|
|
hex
|
|
depends on KASAN
|
|
default 0xe0000000
|