From nobody Sun Feb 8 20:28:26 2026 Received: from canpmsgout07.his.huawei.com (canpmsgout07.his.huawei.com [113.46.200.222]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D20FB362128; Tue, 23 Dec 2025 10:09:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.222 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484561; cv=none; b=g+rNOSvTiDEO17P0GrdeScnvsnDXkSrlmYC/RylxgPzEo5WMFMY2uHkeJ2whEwG6dbBDVLK2d9gVCAAnk8U2wtju+YeAtswfrT0Q6POHGr5UIU/xQ+kHTFwOWw6v+KcrxtuPxG4EWw7lfgYroJLeihDYq9/8FZQ8Jmo/oM4gMUU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484561; c=relaxed/simple; bh=5iOoa6o7kPrMy3Gj5oVmhDTpUlAecYaTnK0Lk0GSeII=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XFvLsgl/hODtuoS9FtIqGRuYUjYxL/VOdVfmV8ZDmuV4j+n20i+9XlKY7TBmfjjAk2L6H7DzTxAF/m2P8y8EyRgfT9yM+MAZHQDxNdrzlL2KzL+ZLHNayTfEwmS7445wubdt/pGy9GDsl2RgTX3M2IH/JNauzUl3c26c/fHpYWI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=h-partners.com; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b=WsgDX2XV; arc=none smtp.client-ip=113.46.200.222 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=h-partners.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b="WsgDX2XV" dkim-signature: v=1; a=rsa-sha256; d=h-partners.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=qyo+7B1kYT/7BRg6pR5vvli089fnI96ZXjvc9VrY0+k=; b=WsgDX2XVayAhBxW3VudqMX8cHufg7ralB7MUC/toxI/aABnUWnj/jsTXOvlFgirT4v6RikiVT 2gf4Un7Rinj5T8/5HRqMMZO11RpSJJDFQK6ANtBtHLNsUmT18lQOPG+cN/iprtrjKnHZsSqJkTo JAQc6gepYqmcbs47blTsJ14= Received: from mail.maildlp.com (unknown [172.19.163.163]) by canpmsgout07.his.huawei.com (SkyGuard) with ESMTPS id 4db9dG49yjzLlTC; Tue, 23 Dec 2025 18:06:10 +0800 (CST) Received: from dggemv705-chm.china.huawei.com (unknown [10.3.19.32]) by mail.maildlp.com (Postfix) with ESMTPS id 488FC40538; Tue, 23 Dec 2025 18:09:16 +0800 (CST) Received: from kwepemn100009.china.huawei.com (7.202.194.112) by dggemv705-chm.china.huawei.com (10.3.19.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Tue, 23 Dec 2025 18:09:16 +0800 Received: from localhost.localdomain (10.50.163.32) by kwepemn100009.china.huawei.com (7.202.194.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.36; Tue, 23 Dec 2025 18:09:15 +0800 From: Huisong Li To: , , , CC: , , , , , , , , , , Subject: [PATCH v1 1/6] ACPI: processor: idle: Optimize ACPI idle driver registration Date: Tue, 23 Dec 2025 18:09:09 +0800 Message-ID: <20251223100914.2407069-2-lihuisong@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20251223100914.2407069-1-lihuisong@huawei.com> References: <20251223100914.2407069-1-lihuisong@huawei.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: kwepems500001.china.huawei.com (7.221.188.70) To kwepemn100009.china.huawei.com (7.202.194.112) Content-Type: text/plain; charset="utf-8" Currently, the ACPI idle driver is registered from within a CPU hotplug callback. Although this didn't cause any functional issues, this is questionable and confusing. And it is better to register the cpuidle driver when all of the CPUs have been brought up. So add a new function to initialize acpi_idle_driver based on the power management information of an available CPU and register cpuidle driver in acpi_processor_driver_init(). This commit has four changes under the commit 7a8c994cbb2d (ACPI: processor: idle: Optimize ACPI idle driver registration): 1) move acpi_processor_register_idle_driver() ahead of the driver_register(). 2) add acpi_processor_cstate_first_run_checks() before calling acpi_processor_get_power_info(). 3) squash the commit 9d68320b2bca (ACPI: processor: idle: Fix function defined but not used warning) into this commit. 4) use for_each_possible_cpu(cpu) to scan all possible cpus. Signed-off-by: Huisong Li Link: https://patch.msgid.link/20250728070612.1260859-3-lihuisong@huawei.com [ rjw: Added missing inline modifiers ] Signed-off-by: Rafael J. Wysocki Tested-by: Borislav Petkov (AMD) --- drivers/acpi/processor_driver.c | 10 ++++- drivers/acpi/processor_idle.c | 66 +++++++++++++++++++++------------ include/acpi/processor.h | 2 + 3 files changed, 54 insertions(+), 24 deletions(-) diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_drive= r.c index 65e779be64ff..311863e00ffd 100644 --- a/drivers/acpi/processor_driver.c +++ b/drivers/acpi/processor_driver.c @@ -259,9 +259,11 @@ static int __init acpi_processor_driver_init(void) acpi_processor_ignore_ppc_init(); } =20 + acpi_processor_register_idle_driver(); + result =3D driver_register(&acpi_processor_driver); if (result < 0) - return result; + goto unregister_idle_drv; =20 result =3D cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "acpi/cpu-drv:online", @@ -283,8 +285,13 @@ static int __init acpi_processor_driver_init(void) acpi_idle_rescan_dead_smt_siblings(); =20 return 0; + err: driver_unregister(&acpi_processor_driver); + +unregister_idle_drv: + acpi_processor_unregister_idle_driver(); + return result; } =20 @@ -302,6 +309,7 @@ static void __exit acpi_processor_driver_exit(void) cpuhp_remove_state_nocalls(hp_online); cpuhp_remove_state_nocalls(CPUHP_ACPI_CPUDRV_DEAD); driver_unregister(&acpi_processor_driver); + acpi_processor_unregister_idle_driver(); } =20 module_init(acpi_processor_driver_init); diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index 89f2f08b2554..ca7ae64def73 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c @@ -1347,7 +1347,49 @@ int acpi_processor_power_state_has_changed(struct ac= pi_processor *pr) return 0; } =20 -static int acpi_processor_registered; +void acpi_processor_register_idle_driver(void) +{ + struct acpi_processor *pr; + int ret =3D -ENODEV; + int cpu; + + /* + * Acpi idle driver is used by all possible CPUs. + * Install the idle handler by the processor power info of one in them. + * Note that we use previously set idle handler will be used on + * platforms that only support C1. + */ + for_each_possible_cpu(cpu) { + pr =3D per_cpu(processors, cpu); + if (!pr) + continue; + + acpi_processor_cstate_first_run_checks(); + ret =3D acpi_processor_get_power_info(pr); + if (!ret) { + pr->flags.power_setup_done =3D 1; + acpi_processor_setup_cpuidle_states(pr); + break; + } + } + + if (ret) { + pr_debug("No ACPI power information from any CPUs.\n"); + return; + } + + ret =3D cpuidle_register_driver(&acpi_idle_driver); + if (ret) { + pr_debug("register %s failed.\n", acpi_idle_driver.name); + return; + } + pr_debug("%s registered with cpuidle.\n", acpi_idle_driver.name); +} + +void acpi_processor_unregister_idle_driver(void) +{ + cpuidle_unregister_driver(&acpi_idle_driver); +} =20 int acpi_processor_power_init(struct acpi_processor *pr) { @@ -1362,22 +1404,7 @@ int acpi_processor_power_init(struct acpi_processor = *pr) if (!acpi_processor_get_power_info(pr)) pr->flags.power_setup_done =3D 1; =20 - /* - * Install the idle handler if processor power management is supported. - * Note that we use previously set idle handler will be used on - * platforms that only support C1. - */ if (pr->flags.power) { - /* Register acpi_idle_driver if not already registered */ - if (!acpi_processor_registered) { - acpi_processor_setup_cpuidle_states(pr); - retval =3D cpuidle_register_driver(&acpi_idle_driver); - if (retval) - return retval; - pr_debug("%s registered with cpuidle\n", - acpi_idle_driver.name); - } - dev =3D kzalloc(sizeof(*dev), GFP_KERNEL); if (!dev) return -ENOMEM; @@ -1390,14 +1417,11 @@ int acpi_processor_power_init(struct acpi_processor= *pr) */ retval =3D cpuidle_register_device(dev); if (retval) { - if (acpi_processor_registered =3D=3D 0) - cpuidle_unregister_driver(&acpi_idle_driver); =20 per_cpu(acpi_cpuidle_device, pr->id) =3D NULL; kfree(dev); return retval; } - acpi_processor_registered++; } return 0; } @@ -1411,10 +1435,6 @@ int acpi_processor_power_exit(struct acpi_processor = *pr) =20 if (pr->flags.power) { cpuidle_unregister_device(dev); - acpi_processor_registered--; - if (acpi_processor_registered =3D=3D 0) - cpuidle_unregister_driver(&acpi_idle_driver); - kfree(dev); } =20 diff --git a/include/acpi/processor.h b/include/acpi/processor.h index d0eccbd920e5..ff864c1cee3a 100644 --- a/include/acpi/processor.h +++ b/include/acpi/processor.h @@ -423,6 +423,8 @@ int acpi_processor_power_init(struct acpi_processor *pr= ); int acpi_processor_power_exit(struct acpi_processor *pr); int acpi_processor_power_state_has_changed(struct acpi_processor *pr); int acpi_processor_hotplug(struct acpi_processor *pr); +void acpi_processor_register_idle_driver(void); +void acpi_processor_unregister_idle_driver(void); #else static inline int acpi_processor_power_init(struct acpi_processor *pr) { --=20 2.33.0 From nobody Sun Feb 8 20:28:26 2026 Received: from canpmsgout04.his.huawei.com (canpmsgout04.his.huawei.com [113.46.200.219]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F01336212B; Tue, 23 Dec 2025 10:09:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.219 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484561; cv=none; b=D4TAfGsbmsA6ShHekzS1g7BvJb7pyCqVGesoTWySzn+H/odvy7fnTa8sgGavOFEi1vERSx+rwGCGBPUTaKbSV7vTFPBFGAM8Z1tEYKYpwRVrx/iNAyDtj3EucxwfzfzigUkbBMEnNNqkj/apv7d8EmXwcWVYhAwMJF5NiSiwA2I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484561; c=relaxed/simple; bh=XFSrS0I1BodisGjC89RdqcVSlgGH0x1huoF5cUfm+kA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=FXJ5wMGLTUWiSsFnNP9dA4Z3l2Na6DbUg2TfgCdmBuZCLETPmHhD2wBWjB+re6OOv+s6z73J36bdjOv2HVIWckdOj4miVJgkfYvpt7Kwm+9aZ+4Aw3nDQbhDPSOESeGWuIUGN3of8z+ey5PlUjFpjwdsWodI3oqohjlBbBJoHA8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=h-partners.com; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b=FYDvSOty; arc=none smtp.client-ip=113.46.200.219 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=h-partners.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b="FYDvSOty" dkim-signature: v=1; a=rsa-sha256; d=h-partners.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=PfLkNnxEuTD+7h+X8wZSHwVEx8bvihlSpXjEeyaXht4=; b=FYDvSOtyLHuuNpA3qdDREBZCQT0WUhjnim1csuCG4o0AoEYUHCvHccvjghHuf5t1bCUNzfZR4 6+V9OS2h4lFro/3Kr+Yc9JFlIahiBiqghh/iY9MJDQMrGmhmpL+sIrT9tsZExk/AWfaajBNoiGq rWE7THuaSLdX5MytrauNVZA= Received: from mail.maildlp.com (unknown [172.19.162.144]) by canpmsgout04.his.huawei.com (SkyGuard) with ESMTPS id 4db9dD2xv9z1prMt; Tue, 23 Dec 2025 18:06:08 +0800 (CST) Received: from dggemv706-chm.china.huawei.com (unknown [10.3.19.33]) by mail.maildlp.com (Postfix) with ESMTPS id CADBE40567; Tue, 23 Dec 2025 18:09:16 +0800 (CST) Received: from kwepemn100009.china.huawei.com (7.202.194.112) by dggemv706-chm.china.huawei.com (10.3.19.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Tue, 23 Dec 2025 18:09:16 +0800 Received: from localhost.localdomain (10.50.163.32) by kwepemn100009.china.huawei.com (7.202.194.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.36; Tue, 23 Dec 2025 18:09:15 +0800 From: Huisong Li To: , , , CC: , , , , , , , , , , Subject: [PATCH v1 2/6] ACPI: processor: Remove unused empty stubs of some functions Date: Tue, 23 Dec 2025 18:09:10 +0800 Message-ID: <20251223100914.2407069-3-lihuisong@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20251223100914.2407069-1-lihuisong@huawei.com> References: <20251223100914.2407069-1-lihuisong@huawei.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: kwepems500001.china.huawei.com (7.221.188.70) To kwepemn100009.china.huawei.com (7.202.194.112) Content-Type: text/plain; charset="utf-8" Empty stubs are defined in processor.h for some functions provided by the ACPI processor idle driver, but those functions are only used in the main ACPI processor driver which requires the ACPI processor idle driver to be present (selecting CONFIG_ACPI_PROCESSOR causes CONFIG_ACPI_PROCESSOR_IDLE to be selected too automatically). This means that the empty stubs in question are not really necessary and if both CONFIG_ACPI_PROCESSOR and CONFIG_ACPI_PROCESSOR_IDLE are unset, the compiler complains that they are defined, but not used. Drop them to get rid of the compiler warning. Signed-off-by: Huisong Li Link: https://patch.msgid.link/20250911112408.1668431-2-lihuisong@huawei.com [ rjw: Subject and changelog rewrite ] Signed-off-by: Rafael J. Wysocki Tested-by: Borislav Petkov (AMD) --- include/acpi/processor.h | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/include/acpi/processor.h b/include/acpi/processor.h index ff864c1cee3a..2976a6d0c54f 100644 --- a/include/acpi/processor.h +++ b/include/acpi/processor.h @@ -425,26 +425,6 @@ int acpi_processor_power_state_has_changed(struct acpi= _processor *pr); int acpi_processor_hotplug(struct acpi_processor *pr); void acpi_processor_register_idle_driver(void); void acpi_processor_unregister_idle_driver(void); -#else -static inline int acpi_processor_power_init(struct acpi_processor *pr) -{ - return -ENODEV; -} - -static inline int acpi_processor_power_exit(struct acpi_processor *pr) -{ - return -ENODEV; -} - -static inline int acpi_processor_power_state_has_changed(struct acpi_proce= ssor *pr) -{ - return -ENODEV; -} - -static inline int acpi_processor_hotplug(struct acpi_processor *pr) -{ - return -ENODEV; -} #endif /* CONFIG_ACPI_PROCESSOR_IDLE */ =20 /* in processor_thermal.c */ --=20 2.33.0 From nobody Sun Feb 8 20:28:26 2026 Received: from canpmsgout11.his.huawei.com (canpmsgout11.his.huawei.com [113.46.200.226]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A20B63624D3; Tue, 23 Dec 2025 10:09:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484565; cv=none; b=ZW2wDFoDAnykR3Zp6M21dp79tlJSV62q0WVmu8IS0SoINh+XGy/JVBvpQepBoIKDEbKPk5YJzVhflkY0grI8I77DOVc1Arp+cRXbaf/ZEREmPwecwyqNafLhnD1pTt5lzelFf+96lSh3A5awL+uR2X1aKJTysd+nRfSCV4/F4+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484565; c=relaxed/simple; bh=CCaujARh7mq+1vMTQ4Rq79P0abyZ3wRcPhhBzLYWbhw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bunpWsf+HPPrE8PNBCmpIexe089OK5iagX8IDUFH4UujbNak9Mj48d+SycVdwhz08+W/89eEjXYYiU3U8wal3HM0sEbN9MVcXm9cG3vi8DWgk30jkqxWtaoeUmWAJFHn/t8J7aeWgILWQ6nneV0TCnNMvAgNwzsR9gNiLHifF2E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=h-partners.com; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b=bKlUMS4h; arc=none smtp.client-ip=113.46.200.226 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=h-partners.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b="bKlUMS4h" dkim-signature: v=1; a=rsa-sha256; d=h-partners.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=Rw0xCM6rJJdcKaA8C1jrtrwLbYRGWYElsDj57aNkmY0=; b=bKlUMS4hqG1yAk1MPW3bPpQRc6MId8bVzRRAEmv5jFeGt9pxALXnZrKBfxNDtNdpxImnTr6Yc A4jlZC4ZvoK4eBk1D4yzBvEOPVITIZ89pktqlCZmfriBx//sskS3y/Iylt1QKzASpyeWPoCTtmA WA7QQrsy09wzDIYNBCorkIk= Received: from mail.maildlp.com (unknown [172.19.163.15]) by canpmsgout11.his.huawei.com (SkyGuard) with ESMTPS id 4db9dL1Q2XzKm77; Tue, 23 Dec 2025 18:06:14 +0800 (CST) Received: from dggemv712-chm.china.huawei.com (unknown [10.1.198.32]) by mail.maildlp.com (Postfix) with ESMTPS id 373C74056D; Tue, 23 Dec 2025 18:09:21 +0800 (CST) Received: from kwepemn100009.china.huawei.com (7.202.194.112) by dggemv712-chm.china.huawei.com (10.1.198.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Tue, 23 Dec 2025 18:09:17 +0800 Received: from localhost.localdomain (10.50.163.32) by kwepemn100009.china.huawei.com (7.202.194.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.36; Tue, 23 Dec 2025 18:09:16 +0800 From: Huisong Li To: , , , CC: , , , , , , , , , , Subject: [PATCH v1 3/6] ACPI: processor: Update cpuidle driver check in __acpi_processor_start() Date: Tue, 23 Dec 2025 18:09:11 +0800 Message-ID: <20251223100914.2407069-4-lihuisong@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20251223100914.2407069-1-lihuisong@huawei.com> References: <20251223100914.2407069-1-lihuisong@huawei.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: kwepems500001.china.huawei.com (7.221.188.70) To kwepemn100009.china.huawei.com (7.202.194.112) Content-Type: text/plain; charset="utf-8" From: "Rafael J. Wysocki" Commit 7a8c994cbb2d ("ACPI: processor: idle: Optimize ACPI idle driver registration") moved the ACPI idle driver registration to acpi_processor_driver_init() and acpi_processor_power_init() does not register an idle driver any more. Accordingly, the cpuidle driver check in __acpi_processor_start() needs to be updated to avoid calling acpi_processor_power_init() without a cpuidle driver, in which case the registration of the cpuidle device in that function would lead to a NULL pointer dereference in __cpuidle_register_device(). Fixes: 7a8c994cbb2d ("ACPI: processor: idle: Optimize ACPI idle driver regi= stration") Signed-off-by: Rafael J. Wysocki Reviewed-by: Mario Limonciello (AMD) Link: https://patch.msgid.link/5044465.31r3eYUQgx@rafael.j.wysocki [ rjw: Changelog update ] Signed-off-by: Rafael J. Wysocki Tested-by: Borislav Petkov (AMD) --- drivers/acpi/processor_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_drive= r.c index 311863e00ffd..f5b4f6a29143 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 *d= evice) if (result && !IS_ENABLED(CONFIG_ACPI_CPU_FREQ_PSS)) dev_dbg(&device->dev, "CPPC data invalid or not present\n"); =20 - if (!cpuidle_get_driver() || cpuidle_get_driver() =3D=3D &acpi_idle_drive= r) + if (cpuidle_get_driver() =3D=3D &acpi_idle_driver) acpi_processor_power_init(pr); =20 acpi_pss_perf_init(pr); --=20 2.33.0 From nobody Sun Feb 8 20:28:26 2026 Received: from canpmsgout07.his.huawei.com (canpmsgout07.his.huawei.com [113.46.200.222]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF94036212E; Tue, 23 Dec 2025 10:09:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.222 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484562; cv=none; b=LGfcAbRDXk0IEfTWZdg7gYVBrkToXw6KPNJAq2n51K3owUW16Dmwk9MDRLqa0guMXZrxaSxP3Mq6vMwFsZ6LAhSOoZPf9aAPSRVDvSZIKFo+KvQi0dC5QQbb7HNewNRdAqAus0wDwkuedVu2F4IotT1eElCy8yAtAiKWqWIvzw4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484562; c=relaxed/simple; bh=LUHDsVVld2PY978m7mnSW446hPq+y4jQ4M0oE/Drr9E=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=DpNS5BEyrztZMkk8ck7NHyyyRlB6kzvfMfPXWPfc5yjQjUYnK3EpSe/ks/x9kHZNyBTkZCo6+LCXE3RBojMscVrJkNb7zGk8Uygk/OzBq/q7hg3svMutRw6HtJjtsZ80NaBBGnjIh/kKkdOY1kkxfSjJeewtL3UEcKWSar5XGbA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=h-partners.com; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b=qBnxG2D8; arc=none smtp.client-ip=113.46.200.222 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=h-partners.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b="qBnxG2D8" dkim-signature: v=1; a=rsa-sha256; d=h-partners.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=vdRG+Js1xkq5/sO5SUPz4u2gc/Q6Jqzn8FQkwaHi1Mw=; b=qBnxG2D8+F/sJlHTr8SZhEYz7aDX5ggpuISA6NSlnGs4rS7oLuU6PqBMe/CgUZOREoXi19aqq ioTsEZFfjZd47nVX0x/1/hnBSs3eXtmItZ5JS2xqUPvD6HRf03W93nBC1OxvlYshgQOwA5+VD+n 9QHee1z7sa9jCq9MakC7shg= Received: from mail.maildlp.com (unknown [172.19.163.214]) by canpmsgout07.his.huawei.com (SkyGuard) with ESMTPS id 4db9dJ1b5KzLlVp; Tue, 23 Dec 2025 18:06:12 +0800 (CST) Received: from dggemv705-chm.china.huawei.com (unknown [10.3.19.32]) by mail.maildlp.com (Postfix) with ESMTPS id E239540539; Tue, 23 Dec 2025 18:09:17 +0800 (CST) Received: from kwepemn100009.china.huawei.com (7.202.194.112) by dggemv705-chm.china.huawei.com (10.3.19.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Tue, 23 Dec 2025 18:09:17 +0800 Received: from localhost.localdomain (10.50.163.32) by kwepemn100009.china.huawei.com (7.202.194.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.36; Tue, 23 Dec 2025 18:09:16 +0800 From: Huisong Li To: , , , CC: , , , , , , , , , , Subject: [PATCH v1 4/6] ACPI: processor: idle: Redefine two functions as void Date: Tue, 23 Dec 2025 18:09:12 +0800 Message-ID: <20251223100914.2407069-5-lihuisong@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20251223100914.2407069-1-lihuisong@huawei.com> References: <20251223100914.2407069-1-lihuisong@huawei.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: kwepems500001.china.huawei.com (7.221.188.70) To kwepemn100009.china.huawei.com (7.202.194.112) Content-Type: text/plain; charset="utf-8" From: "Rafael J. Wysocki" Notice that acpi_processor_power_init() and acpi_processor_power_exit() don't need to return any values because their callers don't check them anyway, so redefine those functions as void. While at it, rearrange the code in acpi_processor_power_init() to reduce the indentation level, get rid of a redundant local variable in that function, and rephrase a code comment in it. No intentional functional impact. Signed-off-by: Rafael J. Wysocki Reviewed-by: Mario Limonciello (AMD) Tested-by: Borislav Petkov (AMD) --- drivers/acpi/processor_idle.c | 41 ++++++++++++++++------------------- include/acpi/processor.h | 4 ++-- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index ca7ae64def73..05425d1b3ef7 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c @@ -1391,47 +1391,45 @@ void acpi_processor_unregister_idle_driver(void) cpuidle_unregister_driver(&acpi_idle_driver); } =20 -int acpi_processor_power_init(struct acpi_processor *pr) +void acpi_processor_power_init(struct acpi_processor *pr) { - int retval; struct cpuidle_device *dev; =20 if (disabled_by_idle_boot_param()) - return 0; + return; =20 acpi_processor_cstate_first_run_checks(); =20 if (!acpi_processor_get_power_info(pr)) pr->flags.power_setup_done =3D 1; =20 - if (pr->flags.power) { - dev =3D kzalloc(sizeof(*dev), GFP_KERNEL); - if (!dev) - return -ENOMEM; - per_cpu(acpi_cpuidle_device, pr->id) =3D dev; + if (!pr->flags.power) + return; =20 - acpi_processor_setup_cpuidle_dev(pr, dev); + dev =3D kzalloc(sizeof(*dev), GFP_KERNEL); + if (!dev) + return; =20 - /* Register per-cpu cpuidle_device. Cpuidle driver - * must already be registered before registering device - */ - retval =3D cpuidle_register_device(dev); - if (retval) { + per_cpu(acpi_cpuidle_device, pr->id) =3D dev; =20 - per_cpu(acpi_cpuidle_device, pr->id) =3D NULL; - kfree(dev); - return retval; - } + acpi_processor_setup_cpuidle_dev(pr, dev); + + /* + * Register a cpuidle device for this CPU. The cpuidle driver using + * this device is expected to be registered. + */ + if (cpuidle_register_device(dev)) { + per_cpu(acpi_cpuidle_device, pr->id) =3D NULL; + kfree(dev); } - return 0; } =20 -int acpi_processor_power_exit(struct acpi_processor *pr) +void acpi_processor_power_exit(struct acpi_processor *pr) { struct cpuidle_device *dev =3D per_cpu(acpi_cpuidle_device, pr->id); =20 if (disabled_by_idle_boot_param()) - return 0; + return; =20 if (pr->flags.power) { cpuidle_unregister_device(dev); @@ -1439,7 +1437,6 @@ int acpi_processor_power_exit(struct acpi_processor *= pr) } =20 pr->flags.power_setup_done =3D 0; - return 0; } =20 MODULE_IMPORT_NS("ACPI_PROCESSOR_IDLE"); diff --git a/include/acpi/processor.h b/include/acpi/processor.h index 2976a6d0c54f..0200aef6e754 100644 --- a/include/acpi/processor.h +++ b/include/acpi/processor.h @@ -419,8 +419,8 @@ static inline void acpi_processor_throttling_init(void)= {} /* in processor_idle.c */ extern struct cpuidle_driver acpi_idle_driver; #ifdef CONFIG_ACPI_PROCESSOR_IDLE -int acpi_processor_power_init(struct acpi_processor *pr); -int acpi_processor_power_exit(struct acpi_processor *pr); +void acpi_processor_power_init(struct acpi_processor *pr); +void acpi_processor_power_exit(struct acpi_processor *pr); int acpi_processor_power_state_has_changed(struct acpi_processor *pr); int acpi_processor_hotplug(struct acpi_processor *pr); void acpi_processor_register_idle_driver(void); --=20 2.33.0 From nobody Sun Feb 8 20:28:26 2026 Received: from canpmsgout09.his.huawei.com (canpmsgout09.his.huawei.com [113.46.200.224]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 91790362122; Tue, 23 Dec 2025 10:09:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.224 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484562; cv=none; b=aagTpIwhZYjrBPtcDEJSc/8VSbZVOTu17VmIOBclr2rtJoUYp17GHFstq1+2xhKJPBv3lfno9wng7eqglaF+S/beOPwZpZqIliWtuHJloKbttJVvt5mN44mquwghaT8+nWzRXtGiiLOxIcP7ZV+C/miX5TTBal8tcHutLWLoOLI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484562; c=relaxed/simple; bh=UcXdMzChhao/LlX3VPVi01RAXA75bEXK4EVuNR6xysI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=T+X5vZkRyDZD459obIre+TmhmytMzwzWUe1ojwqnks8cFdS3vYFzo0uuGL2o62WiRY/Gc05ef3ZDMY5zr9ryIIRM9JG/h9VJxpt4xiBYSj0/KPE2d9qQ1Kh2oF/88UU1zgYB5VNtx34bxgU9K+wB1x5iDYMi9dbOroyr43J5P3k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=h-partners.com; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b=nJZtzF9W; arc=none smtp.client-ip=113.46.200.224 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=h-partners.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b="nJZtzF9W" dkim-signature: v=1; a=rsa-sha256; d=h-partners.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=mePpf6+5xaNwVOTlLG3Ynqfb7tulPW229mHuSf1VoTw=; b=nJZtzF9WVVv1kgZ5C2IhYtB/g5v0SwrTAppG2fg+6P3AYqclvn+sJEY6ARxii5Q3EG4Zicgjj r8rr17hCcoLqDe/lOM86NRzVUt9vQ6yaoPQRdUrjq4KXtWn68DwNAlscC3YWhdzJWdMGiE1D2TH PsrGBWtBHkiQtrnfbS8v8WI= Received: from mail.maildlp.com (unknown [172.19.163.200]) by canpmsgout09.his.huawei.com (SkyGuard) with ESMTPS id 4db9dJ41flz1cySV; Tue, 23 Dec 2025 18:06:12 +0800 (CST) Received: from dggemv706-chm.china.huawei.com (unknown [10.3.19.33]) by mail.maildlp.com (Postfix) with ESMTPS id 6794440086; Tue, 23 Dec 2025 18:09:18 +0800 (CST) Received: from kwepemn100009.china.huawei.com (7.202.194.112) by dggemv706-chm.china.huawei.com (10.3.19.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Tue, 23 Dec 2025 18:09:18 +0800 Received: from localhost.localdomain (10.50.163.32) by kwepemn100009.china.huawei.com (7.202.194.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.36; Tue, 23 Dec 2025 18:09:17 +0800 From: Huisong Li To: , , , CC: , , , , , , , , , , Subject: [PATCH v1 5/6] ACPI: processor: idle: Rearrange declarations in header file Date: Tue, 23 Dec 2025 18:09:13 +0800 Message-ID: <20251223100914.2407069-6-lihuisong@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20251223100914.2407069-1-lihuisong@huawei.com> References: <20251223100914.2407069-1-lihuisong@huawei.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: kwepems500001.china.huawei.com (7.221.188.70) To kwepemn100009.china.huawei.com (7.202.194.112) Content-Type: text/plain; charset="utf-8" Group all of the declarations of functions that belong to the ACPI processor idle driver together in one place in processor.h. While at it, drop the unnecessary extern modifier from the declaraions of two functions. Signed-off-by: Huisong Li Link: https://patch.msgid.link/20250911112408.1668431-3-lihuisong@huawei.com [ rjw: Subject and changelog rewrite ] Signed-off-by: Rafael J. Wysocki Tested-by: Borislav Petkov (AMD) --- include/acpi/processor.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/include/acpi/processor.h b/include/acpi/processor.h index 0200aef6e754..24fdaa3c2899 100644 --- a/include/acpi/processor.h +++ b/include/acpi/processor.h @@ -425,6 +425,8 @@ int acpi_processor_power_state_has_changed(struct acpi_= processor *pr); int acpi_processor_hotplug(struct acpi_processor *pr); void acpi_processor_register_idle_driver(void); void acpi_processor_unregister_idle_driver(void); +int acpi_processor_ffh_lpi_probe(unsigned int cpu); +int acpi_processor_ffh_lpi_enter(struct acpi_lpi_state *lpi); #endif /* CONFIG_ACPI_PROCESSOR_IDLE */ =20 /* in processor_thermal.c */ @@ -447,11 +449,6 @@ static inline void acpi_thermal_cpufreq_exit(struct cp= ufreq_policy *policy) } #endif /* CONFIG_CPU_FREQ */ =20 -#ifdef CONFIG_ACPI_PROCESSOR_IDLE -extern int acpi_processor_ffh_lpi_probe(unsigned int cpu); -extern int acpi_processor_ffh_lpi_enter(struct acpi_lpi_state *lpi); -#endif - void acpi_processor_init_invariance_cppc(void); =20 #endif --=20 2.33.0 From nobody Sun Feb 8 20:28:26 2026 Received: from canpmsgout12.his.huawei.com (canpmsgout12.his.huawei.com [113.46.200.227]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51D543624C4; Tue, 23 Dec 2025 10:09:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=113.46.200.227 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484566; cv=none; b=QF2NnWv+pGNJU1BtBGJOf9XoF5jW0XQ6zO8tWqYMEl8vXeDBc9XstmgOwucqiR3LpU78cLACJ6VGBPv6wc4p/9FWjpgtqsmGIX6uaPrFy8yXf74s3PydettucO6ig66kFRj2P5S1ES9i6GWNQ3KbmNLLoZTc/g/Fus9XaefxW1Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766484566; c=relaxed/simple; bh=xjJgVzevI7HzLLzS6cbEenhrsLBbDdMKYjyO5SzKePo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=F+cMApWLxDSxIvybgb6qodYiJApZkSOYGMUZtU9+8k9RO9esg9L2F/7JWMd9g/hKUCfyw+En9rsZvfcbOsRuk9FcsDPj1UFFO0cHyoBWAoKE2Aqng5oQgS/EZFyLKEEz9vC6ZCopMa8hZlGjHwV8H4QO7iTPDWt8BUVqrSuMJNQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=h-partners.com; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b=XvcfvQv9; arc=none smtp.client-ip=113.46.200.227 Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=h-partners.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=h-partners.com header.i=@h-partners.com header.b="XvcfvQv9" dkim-signature: v=1; a=rsa-sha256; d=h-partners.com; s=dkim; c=relaxed/relaxed; q=dns/txt; h=From; bh=UPh1p6LjMfqkD0orD8NtZ2++bQcUVm2VdFSnmxsJOeo=; b=XvcfvQv9csAAUcv56FtIEmp4HZz3woTiXIxYBejv7McxFKuliZWCAJLUL7u0w5zDfYeZiVKeA cTNxLiBO/GHV02m8nLLrxEyJK/h7YClxyrvJI54iC3KSTwHF0fSEvIdU2MsJYWfQ2uVrZighZNy GxraKLDS4W3Y3IzM/8iFu0k= Received: from mail.maildlp.com (unknown [172.19.163.15]) by canpmsgout12.his.huawei.com (SkyGuard) with ESMTPS id 4db9dD24fMznTZb; Tue, 23 Dec 2025 18:06:08 +0800 (CST) Received: from dggemv712-chm.china.huawei.com (unknown [10.1.198.32]) by mail.maildlp.com (Postfix) with ESMTPS id 3E5074056E; Tue, 23 Dec 2025 18:09:21 +0800 (CST) Received: from kwepemn100009.china.huawei.com (7.202.194.112) by dggemv712-chm.china.huawei.com (10.1.198.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Tue, 23 Dec 2025 18:09:18 +0800 Received: from localhost.localdomain (10.50.163.32) by kwepemn100009.china.huawei.com (7.202.194.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.36; Tue, 23 Dec 2025 18:09:18 +0800 From: Huisong Li To: , , , CC: , , , , , , , , , , Subject: [PATCH v1 6/6] ACPI: processor: Do not expose global variable acpi_idle_driver Date: Tue, 23 Dec 2025 18:09:14 +0800 Message-ID: <20251223100914.2407069-7-lihuisong@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20251223100914.2407069-1-lihuisong@huawei.com> References: <20251223100914.2407069-1-lihuisong@huawei.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: kwepems500001.china.huawei.com (7.221.188.70) To kwepemn100009.china.huawei.com (7.202.194.112) Content-Type: text/plain; charset="utf-8" Move the cpuidle driver check from __acpi_processor_start() to acpi_processor_power_init() which allows variable acpi_idle_driver to become static. No intentional functional impact. Signed-off-by: Huisong Li Link: https://patch.msgid.link/20250923032428.2656329-2-lihuisong@huawei.com [ rjw: Subject tweak, new changelog, adjustment of a new comment ] Signed-off-by: Rafael J. Wysocki Tested-by: Borislav Petkov (AMD) --- drivers/acpi/processor_driver.c | 3 +-- drivers/acpi/processor_idle.c | 9 ++++++++- include/acpi/processor.h | 1 - 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_drive= r.c index f5b4f6a29143..882709796b4f 100644 --- a/drivers/acpi/processor_driver.c +++ b/drivers/acpi/processor_driver.c @@ -166,8 +166,7 @@ static int __acpi_processor_start(struct acpi_device *d= evice) if (result && !IS_ENABLED(CONFIG_ACPI_CPU_FREQ_PSS)) dev_dbg(&device->dev, "CPPC data invalid or not present\n"); =20 - if (cpuidle_get_driver() =3D=3D &acpi_idle_driver) - acpi_processor_power_init(pr); + acpi_processor_power_init(pr); =20 acpi_pss_perf_init(pr); =20 diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index 05425d1b3ef7..427423e7a0c7 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c @@ -51,7 +51,7 @@ module_param(latency_factor, uint, 0644); =20 static DEFINE_PER_CPU(struct cpuidle_device *, acpi_cpuidle_device); =20 -struct cpuidle_driver acpi_idle_driver =3D { +static struct cpuidle_driver acpi_idle_driver =3D { .name =3D "acpi_idle", .owner =3D THIS_MODULE, }; @@ -1395,6 +1395,13 @@ void acpi_processor_power_init(struct acpi_processor= *pr) { struct cpuidle_device *dev; =20 + /* + * The code below only works if the current cpuidle driver is the ACPI + * idle driver. + */ + if (cpuidle_get_driver() !=3D &acpi_idle_driver) + return; + if (disabled_by_idle_boot_param()) return; =20 diff --git a/include/acpi/processor.h b/include/acpi/processor.h index 24fdaa3c2899..7146a8e9e9c2 100644 --- a/include/acpi/processor.h +++ b/include/acpi/processor.h @@ -417,7 +417,6 @@ static inline void acpi_processor_throttling_init(void)= {} #endif /* CONFIG_ACPI_CPU_FREQ_PSS */ =20 /* in processor_idle.c */ -extern struct cpuidle_driver acpi_idle_driver; #ifdef CONFIG_ACPI_PROCESSOR_IDLE void acpi_processor_power_init(struct acpi_processor *pr); void acpi_processor_power_exit(struct acpi_processor *pr); --=20 2.33.0