Re: [PATCH] cpuidle: riscv-sbi: Add cluster_pm_enter()/exit()

From: Palmer Dabbelt
Date: Mon Apr 29 2024 - 17:00:02 EST


On Mon, 29 Apr 2024 07:32:12 PDT (-0700), ulf.hansson@xxxxxxxxxx wrote:
On Mon, 26 Feb 2024 at 07:51, Nick Hu <nick.hu@xxxxxxxxxx> wrote:

When the cpus in the same cluster are all in the idle state, the kernel
might put the cluster into a deeper low power state. Call the
cluster_pm_enter() before entering the low power state and call the
cluster_pm_exit() after the cluster woken up.

Signed-off-by: Nick Hu <nick.hu@xxxxxxxxxx>

I was not cced this patch, but noticed that this patch got queued up
recently. Sorry for not noticing earlier.

If not too late, can you please drop/revert it? We should really move
away from the CPU cluster notifiers. See more information below.

Sorry about that, I'll toss it. I'm testing some other stuff right now so it might miss today's linux-next.

---
drivers/cpuidle/cpuidle-riscv-sbi.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/drivers/cpuidle/cpuidle-riscv-sbi.c b/drivers/cpuidle/cpuidle-riscv-sbi.c
index e8094fc92491..298dc76a00cf 100644
--- a/drivers/cpuidle/cpuidle-riscv-sbi.c
+++ b/drivers/cpuidle/cpuidle-riscv-sbi.c
@@ -394,6 +394,7 @@ static int sbi_cpuidle_pd_power_off(struct generic_pm_domain *pd)
{
struct genpd_power_state *state = &pd->states[pd->state_idx];
u32 *pd_state;
+ int ret;

if (!state->data)
return 0;
@@ -401,6 +402,10 @@ static int sbi_cpuidle_pd_power_off(struct generic_pm_domain *pd)
if (!sbi_cpuidle_pd_allow_domain_state)
return -EBUSY;

+ ret = cpu_cluster_pm_enter();
+ if (ret)
+ return ret;

Rather than using the CPU cluster notifiers, consumers of the genpd
can register themselves to receive genpd on/off notifiers.

In other words, none of this should be needed, right?

[...]

Kind regards
Uffe