arch/powerpc/Kconfig v5.13-rc1

arch/powerpc/platforms/Kconfig.cputype

NR_IRQS

Number of virtual interrupt numbers

This defines the number of virtual interrupt numbers the kernel
can manage. Virtual interrupt numbers are what you see in
/proc/interrupts. If you configure your system to have too few,
drivers will fail to load or worse - handle with care.

PPC_WATCHDOG

This is a placeholder when the powerpc hardlockup detector
watchdog is selected (arch/powerpc/kernel/watchdog.c). It is
selected via the generic lockup detector menu which is why we
have no standalone config option for it here.

EPAPR_BOOT

Used to allow a board to specify it wants an ePAPR compliant wrapper.

DEFAULT_UIMAGE

Used to allow a board to specify it wants a uImage built by default

arch/powerpc/sysdev/Kconfig

arch/powerpc/platforms/Kconfig


Menu: Kernel options

kernel/Kconfig.hz

MATH_EMULATION

Math emulation

Some PowerPC chips designed for embedded applications do not have
a floating-point unit and therefore do not implement the
floating-point instructions in the PowerPC instruction set.  If you
say Y here, the kernel will include code to emulate a floating-point
unit, which will allow programs that use floating-point
instructions to run.

This is also useful to emulate missing (optional) instructions
such as fsqrt on cores that do have an FPU but do not implement
them (such as Freescale BookE).

MATH_EMULATION_FULL

Emulate all the floating point instructions

Select this option will enable the kernel to support to emulate
all the floating point instructions. If your SoC doesn't have
a FPU, you should select this.

MATH_EMULATION_HW_UNIMPLEMENTED

Just emulate the FPU unimplemented instructions

Select this if you know there does have a hardware FPU on your
SoC, but some floating point instructions are not implemented by that.

PPC_TRANSACTIONAL_MEM

Transactional Memory support for POWERPC

Support user-mode Transactional Memory on POWERPC.

PPC_UV

Ultravisor support

This option paravirtualizes the kernel to run in POWER platforms that
supports the Protected Execution Facility (PEF). On such platforms,
the ultravisor firmware runs at a privilege level above the
hypervisor.

If unsure, say "N".

LD_HEAD_STUB_CATCH

Reserve 256 bytes to cope with linker stubs in HEAD text

Very large kernels can cause linker branch stubs to be generated by
code in head_64.S, which moves the head text sections out of their
specified location. This option can work around the problem.

If unsure, say "N".

HOTPLUG_CPU

Support for enabling/disabling CPUs

Say Y here to be able to disable and re-enable individual
CPUs at runtime on SMP machines.

Say N if you are unsure.

PPC_QUEUED_SPINLOCKS

Queued spinlocks

Say Y here to use queued spinlocks which give better scalability and
fairness on large SMP and NUMA systems without harming single threaded
performance.

KEXEC

kexec system call

kexec is a system call that implements the ability to shutdown your
current kernel, and to start another kernel.  It is like a reboot
but it is independent of the system firmware.   And like a reboot
you can start any kernel with it, not just Linux.

The name comes from the similarity to the exec system call.

It is an ongoing process to be certain the hardware in a machine
is properly shutdown, so do not be surprised if this code does not
initially work for you.  As of this writing the exact hardware
interface is strongly in flux, so no good recommendation can be
made.

KEXEC_FILE

kexec file based system call

This is a new version of the kexec system call. This call is
file based and takes in file descriptors as system call arguments
for kernel and initramfs as opposed to a list of segments as is the
case for the older kexec call.

RELOCATABLE

Build a relocatable kernel

This builds a kernel image that is capable of running at the
location the kernel is loaded at. For ppc32, there is no any
alignment restrictions, and this feature is a superset of
DYNAMIC_MEMSTART and hence overrides it. For ppc64, we should use
16k-aligned base address. The kernel is linked as a
position-independent executable (PIE) and contains dynamic relocations
which are processed early in the bootup process.

One use is for the kexec on panic case where the recovery kernel
must live at a different physical address than the primary
kernel.

Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address
it has been loaded at and the compile time physical addresses
CONFIG_PHYSICAL_START is ignored.  However CONFIG_PHYSICAL_START
setting can still be useful to bootwrappers that need to know the
load address of the kernel (eg. u-boot/mkimage).

RANDOMIZE_BASE

Randomize the address of the kernel image

Randomizes the virtual address at which the kernel image is
loaded, as a security feature that deters exploit attempts
relying on knowledge of the location of kernel internals.

If unsure, say Y.

RELOCATABLE_TEST

Test relocatable kernel

This runs the relocatable kernel at the address it was initially
loaded at, which tends to be non-zero and therefore test the
relocation code.

CRASH_DUMP

Build a dump capture kernel

Build a kernel suitable for use as a dump capture kernel.
The same kernel binary can be used as production kernel and dump
capture kernel.

FA_DUMP

Firmware-assisted dump

A robust mechanism to get reliable kernel crash dump with
assistance from firmware. This approach does not use kexec,
instead firmware assists in booting the capture kernel
while preserving memory contents. Firmware-assisted dump
is meant to be a kdump replacement offering robustness and
speed not possible without system firmware assistance.

If unsure, say "y". Only special kernels like petitboot may
need to say "N" here.

PRESERVE_FA_DUMP

Preserve Firmware-assisted dump

On a kernel with FA_DUMP disabled, this option helps to preserve
crash data from a previously crash'ed kernel. Useful when the next
memory preserving kernel boot would process this crash data.
Petitboot kernel is the typical usecase for this option.

OPAL_CORE

Export OPAL memory as /sys/firmware/opal/core

This option uses the MPIPL support in firmware to provide an
ELF core of OPAL memory after a crash. The ELF core is exported
as /sys/firmware/opal/core file which is helpful in debugging
OPAL crashes using GDB.

IRQ_ALL_CPUS

Distribute interrupts on all CPUs by default

This option gives the kernel permission to distribute IRQs across
multiple CPUs.  Saying N here will route all IRQs to the first
CPU.  Generally saying Y is safe, although some problems have been
reported with SMP Power Macintoshes with this option enabled.

NUMA

NUMA Memory Allocation and Scheduler Support

Enable NUMA (Non-Uniform Memory Access) support.

The kernel will try to allocate memory used by a CPU on the
local memory controller of the CPU and add some more
NUMA awareness to the kernel.

ARCH_MEMORY_PROBE

Page size

Select the kernel logical page size. Increasing the page size
will reduce software overhead at each page boundary, allow
hardware prefetch mechanisms to be more effective, and allow
larger dma transfers increasing IO efficiency and reducing
overhead. However the utilization of memory will increase.
For example, each cached file will using a multiple of the
page size to hold its contents and the difference between the
end of file and the end of page is wasted.

Some dedicated systems, such as software raid serving with
accelerated calculations, have shown significant increases.

If you configure a 64 bit kernel for 64k pages but the
processor does not support them, then the kernel will simulate
them with 4k pages, loading them on demand, but with the
reduced software overhead and larger internal fragmentation.
For the 32 bit kernel, a large page option will not be offered
unless it is supported by the configured processor.

If unsure, choose 4K_PAGES.

PPC_256K_PAGES

256k page size (Requires non-standard binutils settings)

Make the page size 256k.

The kernel will only be able to run applications that have been
compiled with '-zmax-page-size' set to 256K (the default is 64K) using
binutils later than 2.17.50.0.3, or by patching the ELF_MAXPAGESIZE
definition from 0x10000 to 0x40000 in older versions.

THREAD_SHIFT

Thread shift

Used to define the stack size. The default is almost always what you
want. Only change this if you know what you are doing.

DATA_SHIFT_BOOL

Set custom data alignment

This option allows you to set the kernel data alignment. When
RAM is mapped by blocks, the alignment needs to fit the size and
number of possible blocks. The default should be OK for most configs.

Say N here unless you know what you are doing.

DATA_SHIFT

Data shift

On Book3S 32 (603+), DBATs are used to map kernel text and rodata RO.
Smaller is the alignment, greater is the number of necessary DBATs.

On 8xx, large pages (512kb or 8M) are used to map kernel linear
memory. Aligning to 8M reduces TLB misses as only 8M pages are used
in that case. If PIN_TLB is selected, it must be aligned to 8M as
8M pages will be pinned.

FORCE_MAX_ZONEORDER

Maximum zone order

The kernel memory allocator divides physically contiguous memory
blocks into "zones", where each zone is a power of two number of
pages.  This option selects the largest power of two that the kernel
keeps in the memory allocator.  If you need to allocate very large
blocks of physically contiguous memory, then you may need to
increase this value.

This config option is actually maximum order plus one. For example,
a value of 11 means that the largest free memory block is 2^10 pages.

The page size is not necessarily 4KB.  For example, on 64-bit
systems, 64KB pages can be enabled via CONFIG_PPC_64K_PAGES.  Keep
this in mind when choosing a value for this option.

PPC_SUBPAGE_PROT

Support setting protections for 4k subpages (subpage_prot syscall)

This option adds support for system call to allow user programs
to set access permissions (read/write, readonly, or no access)
on the 4k subpages of each 64k page.

If unsure, say N here.

PPC_PROT_SAO_LPAR

Support PROT_SAO mappings in LPARs

This option adds support for PROT_SAO mappings from userspace
inside LPARs on supported CPUs.

This may cause issues when performing guest migration from
a CPU that supports SAO to one that does not.

If unsure, say N here.

SCHED_SMT

SMT (Hyperthreading) scheduler support

SMT scheduler support improves the CPU scheduler's decision making
when dealing with POWER5 cpus at a cost of slightly increased
overhead in some places. If unsure say N here.

PPC_DENORMALISATION

PowerPC denormalisation exception handling

Add support for handling denormalisation of single precision
values.  Useful for bare metal only.  If unsure say Y here.

CMDLINE

Initial kernel command string

On some platforms, there is currently no way for the boot loader to
pass arguments to the kernel. For these platforms, you can supply
some command-line options at build time by entering them here.  In
most cases you will need to specify the root device here.

CMDLINE_FROM_BOOTLOADER

Use bootloader kernel arguments if available

Uses the command-line options passed by the boot loader. If
the boot loader doesn't provide any, the default kernel command
string provided in CMDLINE will be used.

CMDLINE_EXTEND

Extend bootloader kernel arguments

The command-line arguments provided by the boot loader will be
appended to the default kernel command string.

CMDLINE_FORCE

Always use the default kernel command string

Always use the default kernel command string, even if the boot
loader passes other arguments to the kernel.
This is useful if you cannot or don't want to change the
command-line options your boot loader passes to the kernel.

EXTRA_TARGETS

Additional default image types

List additional targets to be built by the bootwrapper here (separated
by spaces).  This is useful for targets that depend of device tree
files in the .dts directory.

Targets in this list will be build as part of the default build
target, or when the user does a 'make zImage' or a
'make zImage.initrd'.

If unsure, leave blank

kernel/power/Kconfig

PPC_MEM_KEYS

PowerPC Memory Protection Keys

Memory Protection Keys provides a mechanism for enforcing
page-based protections, but without requiring modification of the
page tables when an application changes protection domains.

For details, see Documentation/core-api/protection-keys.rst

If unsure, say y.

PPC_SECURE_BOOT

Enable secure boot support

Systems with firmware secure boot enabled need to define security
policies to extend secure boot to the OS. This config allows a user
to enable OS secure boot on systems that have firmware support for
it. If in doubt say N.

PPC_SECVAR_SYSFS

Enable sysfs interface for POWER secure variables

POWER secure variables are managed and controlled by firmware.
These variables are exposed to userspace via sysfs to enable
read/write operations on these variables. Say Y if you have
secure boot enabled and want to expose variables to userspace.

PPC_RTAS_FILTER

Enable filtering of RTAS syscalls

The RTAS syscall API has security issues that could be used to
compromise system integrity. This option enforces restrictions on the
RTAS calls and arguments passed by userspace programs to mitigate
these issues.

Say Y unless you know what you are doing and the filter is causing
problems for you.



Menu: Bus options

ISA

Support for ISA-bus hardware

Find out whether you have ISA slots on your motherboard.  ISA is the
name of a bus system, i.e. the way the CPU talks to the other stuff
inside your box.  If you have an Apple machine, say N here; if you
have an IBM RS/6000 or pSeries machine, say Y.  If you have an
embedded board, consult your board documentation.

FSL_PMC

Freescale MPC85xx/MPC86xx power management controller support
(suspend/resume). For MPC83xx see platforms/83xx/suspend.c

PPC4xx_CPM

PPC4xx Clock Power Management (CPM) support (suspend/resume).
It also enables support for two different idle states (idle-wait
and idle-doze).

FSL_LBC

Freescale Local Bus support

Enables reporting of errors from the Freescale local bus
controller.  Also contains some common code used by
drivers for specific local bus peripherals.

FSL_GTM

Freescale General-purpose Timers support

FSL_RIO

Freescale Embedded SRIO Controller support

Include support for RapidIO controller on Freescale embedded
processors (MPC8548, MPC8641, etc).



Menu: Advanced setup

ADVANCED_OPTIONS

Prompt for advanced kernel configuration options

This option will enable prompting for a variety of advanced kernel
configuration options.  These options can cause the kernel to not
work if they are set incorrectly, but can be used to optimize certain
aspects of kernel memory management.

Unless you know what you are doing, say N here.

Default settings for advanced configuration options are used

LOWMEM_SIZE_BOOL

Set maximum low memory

This option allows you to set the maximum amount of memory which
will be used as "low memory", that is, memory which the kernel can
access directly, without having to set up a kernel virtual mapping.
This can be useful in optimizing the layout of kernel virtual
memory.

Say N here unless you know what you are doing.

LOWMEM_CAM_NUM_BOOL

Set number of CAMs to use to map low memory

This option allows you to set the maximum number of CAM slots that
will be used to map low memory.  There are a limited number of slots
available and even more limited number that will fit in the L1 MMU.
However, using more entries will allow mapping more low memory.  This
can be useful in optimizing the layout of kernel virtual memory.

Say N here unless you know what you are doing.

DYNAMIC_MEMSTART

Enable page aligned dynamic load address for kernel

This option enables the kernel to be loaded at any page aligned
physical address. The kernel creates a mapping from KERNELBASE to
the address where the kernel is loaded. The page size here implies
the TLB page size of the mapping for kernel on the particular platform.
Please refer to the init code for finding the TLB page size.

DYNAMIC_MEMSTART is an easy way of implementing pseudo-RELOCATABLE
kernel image, where the only restriction is the page aligned kernel
load address. When this option is enabled, the compile time physical
address CONFIG_PHYSICAL_START is ignored.

This option is overridden by CONFIG_RELOCATABLE

PAGE_OFFSET_BOOL

Set custom page offset address

This option allows you to set the kernel virtual address at which
the kernel will map low memory.  This can be useful in optimizing
the virtual memory layout of the system.

Say N here unless you know what you are doing.

KERNEL_START_BOOL

Set custom kernel base address

This option allows you to set the kernel virtual address at which
the kernel will be loaded.  Normally this should match PAGE_OFFSET
however there are times (like kdump) that one might not want them
to be the same.

Say N here unless you know what you are doing.

PHYSICAL_START_BOOL

Set physical address where the kernel is loaded

This gives the physical address where the kernel is loaded.

Say N here unless you know what you are doing.

PHYSICAL_ALIGN

This value puts the alignment restrictions on physical address
where kernel is loaded and run from. Kernel is compiled for an
address which meets above alignment restriction.

TASK_SIZE_BOOL

Set custom user task size

This option allows you to set the amount of virtual address space
allocated to user tasks.  This can be useful in optimizing the
virtual memory layout of the system.

Say N here unless you know what you are doing.


arch/powerpc/kvm/Kconfig

kernel/livepatch/Kconfig