Chapter 4. Important changes to external kernel parameters


This chapter provides system administrators with a summary of significant changes in the kernel distributed with Red Hat Enterprise Linux 9.6. These changes could include, for example, added or updated proc entries, sysctl, and sysfs default values, boot parameters, kernel configuration options, or any noticeable behavior changes.

New kernel parameters

arm64.no32bit_el0=

[ARM64]

Unconditionally disable the execution of 32 bit applications.

con3215_drop=

[S390]

Format: y|n|Y|N|1|0

When set to true, drop data on the 3215 console when the console buffer is full. In this case the operator using a 3270 terminal emulator (for example x3270) does not have to enter the clear key for the console output to advance and the kernel to continue. This leads to a much faster boot time when a 3270 terminal emulator is active. If no 3270 terminal emulator is used, this parameter has no effect.

stress_hpt=

[PPC]

Limits the number of kernel HPT entries in the hash page table to increase the rate of hash page table faults on kernel addresses.

kvm.enable_virt_at_load=

[KVM,ARM64,LOONGARCH,MIPS,RISCV,X86]

If enabled, KVM will enable virtualization in hardware when KVM is loaded, and disable virtualization when KVM is unloaded (if KVM is built as a module).

If disabled, KVM will dynamically enable and disable virtualization on-demand when creating and destroying VMs, i.e. on the 0⇒1 and 1⇒0 transitions of the number of VMs.

Enabling virtualization at module lode avoids potential latency for creation of the 0⇒1 VM, as KVM serializes virtualization enabling across all online CPUs. The "cost" of enabling virtualization when KVM is loaded, is that doing so may interfere with using out-of-tree hypervisors that want to "own" virtualization hardware.

kvm-arm.wfe_trap_policy=

[KVM,ARM]

Control when to set WFE instruction trap for KVM VMs. Traps are allowed but not guaranteed by the CPU architecture.

trap: set WFE instruction trap

notrap: clear WFE instruction trap

kvm-arm.wfi_trap_policy=

[KVM,ARM]

Control when to set WFI instruction trap for KVM VMs. Traps are allowed but not guaranteed by the CPU architecture.

trap: set WFI instruction trap

notrap: clear WFI instruction trap

config_acs=

Format: <ACS flags>@<pci_dev>[; …​]

Specify one or more PCI devices (in the format specified above) optionally prepended with flags and separated by semicolons. The respective capabilities will be enabled, disabled or unchanged based on what is specified in flags.

ACS Flags is defined as follows:

bit-0
ACS Source Validation
bit-1
ACS Translation Blocking
bit-2
ACS P2P Request Redirect
bit-3
ACS P2P Completion Redirect
bit-4
ACS Upstream Forwarding
bit-5
ACS P2P Egress Control
bit-6
ACS Direct Translated P2P

Each bit can be marked as:

0 – force disabled

1 – force enabled

x – unchanged

For example, pci=config_acs=10x would configure all devices that support ACS to enable P2P Request Redirect, disable Translation Blocking, and leave Source Validation unchanged from whatever power-up or firmware set it to.

Note

This may remove isolation between devices and may put more devices in an IOMMU group.

rcutree.nocb_nobypass_lim_per_jiffy=

[KNL]

On callback-offloaded (rcu_nocbs) CPUs, RCU reduces the lock contention that would otherwise be caused by callback floods through use of the →nocb_bypass list. However, in the common non-flooded case, RCU queues directly to the main →cblist in order to avoid the extra overhead of the →nocb_bypass list and its lock. But if there are too many callbacks queued during a single jiffy, RCU pre-queues the callbacks into the →nocb_bypass queue. The definition of "too many" is supplied by this kernel boot parameter.

rcutree.nohz_full_patience_delay=

[KNL]

On callback-offloaded (rcu_nocbs) CPUs, avoid disturbing RCU unless the grace period has reached the specified age in milliseconds. Defaults to zero. Large values will be capped at five seconds. All values will be rounded down to the nearest value representable by jiffies.

rcutree.rcu_divisor=

[KNL]

Set the shift-right count to use to compute the callback-invocation batch limit bl from the number of callbacks queued on this CPU. The result will be bounded below by the value of the rcutree.blimit kernel parameter. Every bl callbacks, the softirq handler will exit in order to allow the CPU to do other work.

Please note that this callback-invocation batch limit applies only to non-offloaded callback invocation. Offloaded callbacks are instead invoked in the context of an rcuoc kthread, which scheduler will preempt as it does any other task.

rcutree.enable_rcu_lazy=

[KNL]

To save power, batch RCU callbacks and flush after delay, memory pressure or callback list growing too big.

rcutree.rcu_normal_wake_from_gp=

[KNL]

Reduces a latency of synchronize_rcu() call. This approach maintains its own track of synchronize_rcu() callers, so it does not interact with regular callbacks because it does not use a call_rcu[_hurry]() path. Please note, this is for a normal grace period.

How to enable it:

echo 1 > /sys/module/rcutree/parameters/rcu_normal_wake_from_gp or pass a boot parameter "rcutree.rcu_normal_wake_from_gp=1"

Default is 0.

Removed kernel parameters

clocksource.max_cswd_read_retries=

[KNL]

Number of clocksource_watchdog() retries due to external delays before the clock will be marked unstable. Defaults to two retries, that is, three attempts to read the clock under test.

disable_cpu_apicid=

[X86,APIC,SMP]

Format: <int>

The number of initial APIC ID for the corresponding CPU to be disabled at boot, mostly used for the kdump 2nd kernel to disable BSP to wake up multiple CPUs without causing system reset or hang due to sending INIT from AP to BSP.

Changed kernel parameters

amd_iommu=

[HW,X86_64]

Pass parameters to the AMD IOMMU driver in the system.

Possible values are:

fullflush
Deprecated, equivalent to iommu.strict=1
off
do not initialize any AMD IOMMU found in the system
force_isolation
Force device isolation for all devices. The IOMMU driver is not allowed anymore to lift isolation requirements as needed. This option does not override iommu=pt
force_enable
Force enable the IOMMU on platforms known to be buggy with IOMMU enabled. Use this option with care.
pgtbl_v1
Use v1 page table for DMA-API (Default).
pgtbl_v2
Use v2 page table for DMA-API.
irtcachedis
Disable Interrupt Remapping Table (IRT) caching.
nohugepages
Limit page-sizes used for v1 page-tables to 4 KiB.
v2_pgsizes_only
Limit page-sizes used for v1 page-tables to 4KiB/2Mib/1GiB.

debug_guardpage_minorder=

[KNL]

When CONFIG_DEBUG_PAGEALLOC is set, this parameter allows control of the order of pages that will be intentionally kept free (and hence protected) by the buddy allocator. Bigger value increase the probability of catching random memory corruption, but reduce the amount of memory for normal system use. The maximum possible value is MAX_PAGE_ORDER/2. Setting this parameter to 1 or 2 should be enough to identify most random memory corruption problems caused by bugs in kernel or driver code when a CPU writes to (or reads from) a random memory location. Note that there exists a class of memory corruptions problems caused by buggy H/W or F/W or by drivers badly programming DMA (basically when memory is written at bus level and the CPU MMU is bypassed) which are not detectable by CONFIG_DEBUG_PAGEALLOC, hence this option will not help tracking down these problems.

page_reporting.page_reporting_order=

[KNL]

Minimal page reporting order.

Format: <integer>

Adjust the minimal page reporting order. The page reporting is disabled when it exceeds MAX_PAGE_ORDER.

preempt=

[KNL]

Select preemption mode if you have CONFIG_PREEMPT_DYNAMIC none - Limited to cond_resched() calls voluntary - Limited to cond_resched() and might_sleep() calls full - Any section that isn’t explicitly preempt disabled can be preempted anytime. Tasks will also yield contended spinlocks (if the critical section isn’t explicitly preempt disabled beyond the lock itself).

sched_thermal_decay_shift=

[Deprecated] [KNL, SMP]

Set a decay shift for scheduler thermal pressure signal. Thermal pressure signal follows the default decay period of other scheduler pelt.

usb-storage.delay_use=

[UMS]

The delay in seconds before a new device is scanned for Logical Units (default 1). Optionally the delay in milliseconds if the value has suffix with "ms". Example: delay_use=2567ms.

New sysctl parameters

skb_defer_max

Max size (in skbs) of the per-cpu list of skbs being freed by the cpu which allocated them. Used by TCP stack so far.

Default: 64

Changed sysctl parameters

overcommit_memory

This value contains a flag that enables memory overcommitment.

When this flag is 0, the kernel compares the userspace memory request size against total memory plus swap and rejects obvious overcommits.

When this flag is 1, the kernel pretends there is always enough memory until it actually runs out.

When this flag is 2, the kernel uses a "never overcommit" policy that attempts to prevent any overcommit of memory. Note that user_reserve_kbytes affects this policy.

This feature can be very useful because there are a lot of programs that malloc() huge amounts of memory "just-in-case" and don’t use much of it.

The default value is 0.

See Documentation/mm/overcommit-accounting.rst and mm/util.c::__vm_enough_memory() for more information.

Back to top
Red Hat logoGithubredditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust. Explore our recent updates.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

Theme

© 2025 Red Hat, Inc.
OSZAR »