Re: [GIT PULL] Urgent ACPI support fix for v6.18

From: Longia, Amandeep Kaur

Date: Thu Nov 27 2025 - 14:03:33 EST


Hi all,

On 11/27/2025 7:39 AM, lihuisong (C) wrote:
Hello Rafael,

在 2025/11/26 20:54, Rafael J. Wysocki 写道:
Hi Linus,

Please pull from the tag

  git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
  acpi-6.18-rc8

with top-most commit 43ff36c4a5a574ee83b4b0d3f3d74f09a3a8c2d3

  Revert "ACPI: processor: idle: Optimize ACPI idle driver registration"

on top of commit ac3fd01e4c1efce8f2c054cdeb2ddd2fc0fb150d

  Linux 6.18-rc7

to receive an urgent ACPI support fix for 6.18.

This reverts a commit that attempted to make the code in the ACPI
processor driver more straightforward, but it turned out to cause
the kernel to crash on at least one system, along with some further
cleanups on top of it.
I just found that "ACPI: processor: idle: Optimize ACPI idle driver registration" depends on the change
about cpuhp_setup_state in the commit [1]. Or many CPUs don't create cpuidle directory.
What is the crash? Do you have releated trace?

[1] https://lore.kernel.org/all/20240529133446.28446-2- Jonathan.Cameron@xxxxxxxxxx/

We have observed the same issue. After booting the system with the latest kernel, the sysfs path /sys/devices/system/cpu/cpu*/cpuidle does not exist. Bisecting between v6.18-rc7 (good) and master (bad) led us to the following commit:

43ff36c4a5a574ee83b4b0d3f3d74f09a3a8c2d3 Revert "ACPI: processor: idle: Optimize ACPI idle driver registration"

After debugging, we identified a code change that resolves the issue on our systems. Below is the code diff:

diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
index 7644de24d2fa..65e779be64ff 100644
--- a/drivers/acpi/processor_driver.c
+++ b/drivers/acpi/processor_driver.c
@@ -166,7 +166,7 @@ static int __acpi_processor_start(struct acpi_device *device)
if (result && !IS_ENABLED(CONFIG_ACPI_CPU_FREQ_PSS))
dev_dbg(&device->dev, "CPPC data invalid or not present\n");

- if (cpuidle_get_driver() == &acpi_idle_driver)
+ if (!cpuidle_get_driver() || cpuidle_get_driver() == &acpi_idle_driver)
acpi_processor_power_init(pr);

Thanks,
Amandeep



---------------

Rafael J. Wysocki (5):
       Revert "ACPI: processor: Do not expose global variable acpi_idle_driver"
       Revert "ACPI: processor: idle: Redefine two functions as void"
       Revert "ACPI: processor: idle: Rearrange declarations in header file"
       Revert "ACPI: processor: Remove unused empty stubs of some functions"
       Revert "ACPI: processor: idle: Optimize ACPI idle driver registration"

---------------

  drivers/acpi/processor_driver.c |   6 +--
  drivers/acpi/processor_idle.c   | 115 +++++++++++++++ +------------------------
  include/acpi/processor.h        |  34 +++++++++---
  3 files changed, 76 insertions(+), 79 deletions(-)