** Description changed:

  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 /proc/sched_debug or ps -ef | grep cppc_fie shows active 
cppc_fie threads.
+ 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.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux-bluefield in Ubuntu.
https://bugs.launchpad.net/bugs/2127016

Title:
  Disable CPPC FIE in Jammy kernel

Status in linux-bluefield package in Ubuntu:
  New

Bug description:
  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.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-bluefield/+bug/2127016/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to