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

Jacob Martin jacob.martin at canonical.com
Thu Sep 26 00:43:00 UTC 2024


On Wed, Sep 11, 2024 at 01:27:09AM -0300, Marcelo Henrique Cerri wrote:
> 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(-)
> 

Acked-by: Jacob Martin <jacob.martin at canonical.com>




More information about the kernel-team mailing list