[SRU][focal:linux-gcp][PATCH 00/17] lp:#2080324 - linux-gcp: Improve idle support

Marcelo Henrique Cerri marcelo.cerri at canonical.com
Wed Sep 11 04:27:09 UTC 2024


BugLink: https://bugs.launchpad.net/bugs/2080324

SRU justification:

[Impact]

Older Ubuntu kernels don't have support for some of the C-states
provided by newer HW. Google Cloud now offer new instances types (such
as the C4 series) based on Sapphire and Emerald Rapids with support to
C6. The lack of support for those more advance states can cause CPU
hogging with several side effects.

[Fix]

Back port support to the intel_idle driver for C6 C-state in Emerald
and Sapphire Rapids via MWAIT.

[Test Plan]

`cpupower idle-info` should report C6 as an available idle state and
the duration reported for the C6 should be constantly increasing.

[Where problems could occur]

Other platforms besides Emerald and Sapphire Rapids could be affected
by a regression. In this black listing the intel_idle driver should a
viable workaround until the problem is fixes.

[Other Info]

Bionic can be covered by changes landing to the 5.4 linux-gcp kernel,
however the kernel available in Xenial is already under ESM.

Some additional information about the patch set:

1. It was tested on a Google Cloud c4-standard-8 instance and
   `cpupower idle-info` was able to report C6 support and usage.

2. Support for the preferred_cstates module parameter was skipped to
   implify the Emerald Rapids back port.

3. C1E state is still marked as unusable. More patches would be needed
   to support it.

4. AMX initialization was not ported, since the 5.4 kernel doesn't
   support AMX.

5. 2 additional patches were included based on the Fixes: tags from the
   necessary commits:
   - intel_idle: Fix max_cstate for processor models without C-state tables
   - cpuidle: Introduce cpuidle_driver_state_disabled() for driver quirks

-->8--

Artem Bityutskiy (2):
  intel_idle: add SPR support
  intel_idle: add Emerald Rapids Xeon support

Chen Yu (1):
  intel_idle: Fix max_cstate for processor models without C-state tables

Marcelo Henrique Cerri (1):
  UBUNTU: SAUCE: x86/cpu: Add Emerald Rapids CPU model number

Rafael J. Wysocki (12):
  cpuidle: Consolidate disabled state checks
  cpuidle: Introduce cpuidle_driver_state_disabled() for driver quirks
  cpuidle: Drop disabled field from struct cpuidle_state
  ACPI: processor: Export function to claim _CST control
  ACPI: processor: Introduce acpi_processor_evaluate_cst()
  ACPI: processor: Clean up acpi_processor_evaluate_cst()
  ACPI: processor: Make ACPI_PROCESSOR_CSTATE depend on ACPI_PROCESSOR
  ACPI: processor: Export acpi_processor_evaluate_cst()
  intel_idle: Refactor intel_idle_cpuidle_driver_init()
  intel_idle: Use ACPI _CST for processor models without C-state tables
  cpuidle: Allow idle states to be disabled by default
  intel_idle: Allow ACPI _CST to be used for selected known processors

Tony Luck (1):
  x86/cpu: Add Sapphire Rapids CPU model number

 .../ABI/testing/sysfs-devices-system-cpu      |   6 +
 Documentation/admin-guide/pm/cpuidle.rst      |   3 +
 arch/arm/mach-imx/cpuidle-imx6q.c             |   4 +-
 arch/arm/mach-tegra/cpuidle-tegra20.c         |   2 +-
 arch/sh/kernel/cpu/shmobile/cpuidle.c         |   8 +-
 arch/x86/include/asm/intel-family.h           |   4 +
 drivers/acpi/Kconfig                          |   1 +
 drivers/acpi/acpi_processor.c                 | 182 ++++++++++
 drivers/acpi/processor_idle.c                 | 174 +--------
 drivers/cpuidle/cpuidle-powernv.c             |   7 +-
 drivers/cpuidle/cpuidle.c                     |  28 +-
 drivers/cpuidle/driver.c                      |  28 ++
 drivers/cpuidle/governors/ladder.c            |   4 +-
 drivers/cpuidle/governors/menu.c              |   8 +-
 drivers/cpuidle/governors/teo.c               |   5 +-
 drivers/cpuidle/poll_state.c                  |   1 -
 drivers/cpuidle/sysfs.c                       |  61 ++--
 drivers/idle/intel_idle.c                     | 329 +++++++++++++++---
 include/linux/acpi.h                          |  15 +
 include/linux/cpuidle.h                       |  10 +-
 20 files changed, 611 insertions(+), 269 deletions(-)

-- 
2.34.1




More information about the kernel-team mailing list