On 2022-12-19 16:15:01 [+0100], Krzysztof Kozlowski wrote: > diff --git a/drivers/cpuidle/cpuidle-psci.c b/drivers/cpuidle/cpuidle-psci.c > index 57bc3e3ae391..9d971cc4b12b 100644 > --- a/drivers/cpuidle/cpuidle-psci.c > +++ b/drivers/cpuidle/cpuidle-psci.c > @@ -72,7 +72,7 @@ static int __psci_enter_domain_idle_state(struct cpuidle_device *dev, > ct_irq_enter_irqson(); > if (s2idle) > dev_pm_genpd_suspend(pd_dev); > - else > + else if (!IS_ENABLED(CONFIG_PREEMPT_RT)) > pm_runtime_put_sync_suspend(pd_dev); So based on the commit description you run into a sleeping lock in pm_runtime_put_sync_suspend() while the CPU is in an IRQ-off region. Why is it okay to skip it on PREEMPT_RT? > ct_irq_exit_irqson(); > Sebastian