[SRU][J:linux-bluefield][PATCH v1 0/1] Disable CPPC FIE in Jammy kernel
David Thompson
davthompson at nvidia.com
Tue Oct 7 18:09:40 UTC 2025
BugLink: https://bugs.launchpad.net/bugs/2127016
SRU Justification:
[Impact]
On ARM platforms such as BlueField-3, enabling the CPPC Frequency-Invariance
Engine (FIE) spawns a background kernel thread (cppc_fie) that periodically
polls CPPC performance counters through the PCC channel. This behavior
significantly increases CPU utilization (2-11% as observed by top) even under
idle conditions.
This issue appears when firmware exposes CPPC capabilities (via _CPC and
PCCT tables) to the kernel-triggering the cppc_cpufreq driver to load. The
problem exists in kernels before v6.1 and is fixed upstream by:
Commit ae2df91 ("ACPI: CPPC: Disable FIE if registers in PCC regions")
https://github.com/torvalds/linux/commit/ae2df912d1a557a3548be83da20851ac55f42ab3
Without this fix, enabling FIE on systems (by enabling CONFIG_ACPI_CPPC_CPUFREQ_FIE)
where CPPC registers reside in PCC regions results in unnecessary and continuous
mailbox accesses, causing measurable CPU load increases.
[Fix]
Set CONFIG_ACPI_CPPC_CPUFREQ_FIE=n to disable the FIE kernel thread.
This avoids the high CPU utilization bug while retaining the core CPPC
functionality (real-time CPU frequency reporting via CONFIG_ACPI_CPPC_CPUFREQ).
[Test Case]
1. Boot a BlueField-3 (or similar ARM system) running kernel 5.15.x with CONFIG_ACPI_CPPC_CPUFREQ_FIE=y.
o Observe with top or mpstat that CPU utilization remains elevated (2-11%) even at idle.
o Verify that "ps -ef | grep cppc_fie" shows active cppc_fie threads.
2. Rebuild kernel with CONFIG_ACPI_CPPC_CPUFREQ_FIE=n.
o Reboot and confirm no cppc_fie kernel threads are running.
o Check that CPU utilization returns to baseline levels while
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq continues to report real-time frequency correctly.
This validates that disabling FIE eliminates the overhead but preserves the real-frequency reporting feature.
[Regression Potential]
Low.
FIE is an optional optimization that adjusts scaling responsiveness. Disabling
it only affects systems using PCC-based CPPC regions; others (with direct
register access) are unaffected. The main CPPC frequency control and reporting
remain fully functional.
David Thompson (1):
UBUNTU: [Config] bluefield: disable CONFIG_ACPI_CPPC_CPUFREQ_FIE
debian.bluefield/config/annotations | 1 +
1 file changed, 1 insertion(+)
--
2.43.2
More information about the kernel-team
mailing list