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,I just found that "ACPI: processor: idle: Optimize ACPI idle driver registration" depends on the change
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.
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(-)