mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] cpuidle: psci: Fix support for probe deferral by dropping the faux device
@ 2026-08-26  8:45 Ulf Hansson
  2026-08-26  9:00 ` Abel Vesa
  0 siblings, 1 reply; 2+ messages in thread
From: Ulf Hansson @ 2026-08-26  8:45 UTC (permalink / raw)
  To: Sudeep Holla, Rafael J . Wysocki, Daniel Lezcano, linux-pm
  Cc: Lorenzo Pieralisi, Christian Loehle, Maulik Shah, Yuanfang Zhang,
	Sneh Mankad, Ulf Hansson, linux-arm-kernel, linux-arm-msm,
	linux-kernel, Ulf Hansson, stable

From: Ulf Hansson <ulfh@kernel.org>

At the conversion to the faux driver/device we broke the support for probe
deferral. In hindsight, the move to the faux device seems questionable, as
it simply makes the code more complicated and for no good reason.

To fix the support for the probe deferral let's therefore restore the old
code and drop the faux device.

Fixes: af5376a77e87 ("cpuidle: psci: Transition to the faux device interface")
Fixes: 5836ebeb4a2b ("cpuidle: psci: Avoid initializing faux device if no DT idle states are present")
Fixes: 39cdf87a97fd ("cpuidle: psci: Fix uninitialized variable in dt_idle_state_present()")
Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulfh@kernel.org>
---
 drivers/cpuidle/cpuidle-psci.c | 42 +++++++++++++---------------------
 1 file changed, 16 insertions(+), 26 deletions(-)

diff --git a/drivers/cpuidle/cpuidle-psci.c b/drivers/cpuidle/cpuidle-psci.c
index dcf20ea5ef5e..b250d0dde760 100644
--- a/drivers/cpuidle/cpuidle-psci.c
+++ b/drivers/cpuidle/cpuidle-psci.c
@@ -16,7 +16,7 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/of.h>
-#include <linux/device/faux.h>
+#include <linux/platform_device.h>
 #include <linux/psci.h>
 #include <linux/pm_domain.h>
 #include <linux/pm_runtime.h>
@@ -428,14 +428,14 @@ static int psci_idle_init_cpu(struct device *dev, int cpu)
  * to register cpuidle driver then rollback to cancel all CPUs
  * registration.
  */
-static int psci_cpuidle_probe(struct faux_device *fdev)
+static int psci_cpuidle_probe(struct platform_device *pdev)
 {
 	int cpu, ret;
 	struct cpuidle_driver *drv;
 	struct cpuidle_device *dev;
 
 	for_each_present_cpu(cpu) {
-		ret = psci_idle_init_cpu(&fdev->dev, cpu);
+		ret = psci_idle_init_cpu(&pdev->dev, cpu);
 		if (ret)
 			goto out_fail;
 	}
@@ -455,36 +455,26 @@ static int psci_cpuidle_probe(struct faux_device *fdev)
 	return ret;
 }
 
-static struct faux_device_ops psci_cpuidle_ops = {
+static struct platform_driver psci_cpuidle_driver = {
 	.probe = psci_cpuidle_probe,
+	.driver = {
+		.name = "psci-cpuidle",
+	},
 };
 
-static bool __init dt_idle_state_present(void)
-{
-	struct device_node *cpu_node __free(device_node) =
-			of_cpu_device_node_get(cpumask_first(cpu_possible_mask));
-	if (!cpu_node)
-		return false;
-
-	struct device_node *state_node __free(device_node) =
-			of_get_cpu_state_node(cpu_node, 0);
-	if (!state_node)
-		return false;
-
-	return !!of_match_node(psci_idle_state_match, state_node);
-}
-
 static int __init psci_idle_init(void)
 {
-	struct faux_device *fdev;
+	struct platform_device *pdev;
+	int ret;
 
-	if (!dt_idle_state_present())
-		return 0;
+	ret = platform_driver_register(&psci_cpuidle_driver);
+	if (ret)
+		return ret;
 
-	fdev = faux_device_create("psci-cpuidle", NULL, &psci_cpuidle_ops);
-	if (!fdev) {
-		pr_err("Failed to create psci-cpuidle device\n");
-		return -ENODEV;
+	pdev = platform_device_register_simple("psci-cpuidle", -1, NULL, 0);
+	if (IS_ERR(pdev)) {
+		platform_driver_unregister(&psci_cpuidle_driver);
+		return PTR_ERR(pdev);
 	}
 
 	return 0;
-- 
2.43.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] cpuidle: psci: Fix support for probe deferral by dropping the faux device
  2026-08-26  8:45 [PATCH] cpuidle: psci: Fix support for probe deferral by dropping the faux device Ulf Hansson
@ 2026-08-26  9:00 ` Abel Vesa
  0 siblings, 0 replies; 2+ messages in thread
From: Abel Vesa @ 2026-08-26  9:00 UTC (permalink / raw)
  To: Ulf Hansson
  Cc: Sudeep Holla, Rafael J . Wysocki, Daniel Lezcano, linux-pm,
	Lorenzo Pieralisi, Christian Loehle, Maulik Shah, Yuanfang Zhang,
	Sneh Mankad, linux-arm-kernel, linux-arm-msm, linux-kernel,
	Ulf Hansson, stable

On 26-08-26 10:45:32, Ulf Hansson wrote:
> From: Ulf Hansson <ulfh@kernel.org>
> 
> At the conversion to the faux driver/device we broke the support for probe
> deferral. In hindsight, the move to the faux device seems questionable, as
> it simply makes the code more complicated and for no good reason.
> 
> To fix the support for the probe deferral let's therefore restore the old
> code and drop the faux device.
> 
> Fixes: af5376a77e87 ("cpuidle: psci: Transition to the faux device interface")
> Fixes: 5836ebeb4a2b ("cpuidle: psci: Avoid initializing faux device if no DT idle states are present")
> Fixes: 39cdf87a97fd ("cpuidle: psci: Fix uninitialized variable in dt_idle_state_present()")
> Cc: stable@vger.kernel.org
> Signed-off-by: Ulf Hansson <ulfh@kernel.org>

LGTM.

Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-08-26  9:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-26  8:45 [PATCH] cpuidle: psci: Fix support for probe deferral by dropping the faux device Ulf Hansson
2026-08-26  9:00 ` Abel Vesa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®