From: Conor Dooley <conor.dooley@microchip.com>
To: Anup Patel <apatel@ventanamicro.com>
Cc: Palmer Dabbelt <palmer@rivosinc.com>, <anup@brainfault.org>,
Conor Dooley <conor@kernel.org>, <rafael@kernel.org>,
<daniel.lezcano@linaro.org>,
Paul Walmsley <paul.walmsley@sifive.com>, <aou@eecs.berkeley.edu>,
<linux-pm@vger.kernel.org>, <linux-riscv@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <linux@rivosinc.com>
Subject: Re: [PATCH] cpuidle: riscv-sbi: Stop using non-retentive suspend
Date: Tue, 22 Nov 2022 11:19:43 +0000 [thread overview]
Message-ID: <Y3ywTzv3vbgRXQGG@wendy> (raw)
In-Reply-To: <CAK9=C2USZHdfBQrrgd2Rs3u3_gTyscpRgxvPU5P6ptOPu1+Axg@mail.gmail.com>
On Tue, Nov 22, 2022 at 11:06:15AM +0530, Anup Patel wrote:
> On Tue, Nov 22, 2022 at 10:46 AM Palmer Dabbelt <palmer@rivosinc.com> wrote:
> >
> > On Mon, 21 Nov 2022 19:45:07 PST (-0800), anup@brainfault.org wrote:
> > > On Tue, Nov 22, 2022 at 2:27 AM Palmer Dabbelt <palmer@rivosinc.com> wrote:
> > >>
> > >> From: Palmer Dabbelt <palmer@rivosinc.com>
> > >>
> > >> As per [1], whether or not the core can wake up from non-retentive
> > >> suspend is a platform-specific detail. We don't have any way to encode
> > >> that, so just stop using them until we've sorted that out.
> > >>
> > >> Link: https://github.com/riscv-non-isa/riscv-sbi-doc/issues/98#issuecomment-1288564687
> > >> Fixes: 6abf32f1d9c5 ("cpuidle: Add RISC-V SBI CPU idle driver")
> > >> Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
> > >
> > > This is just unnecessary maintenance churn and it's not the
> > > right way to go. Better to fix this the right way instead of having
> > > a temporary fix.
> > >
> > > I had already sent-out a patch series 5 months back to describe
> > > this in DT:
> > > https://lore.kernel.org/lkml/20220727114302.302201-1-apatel@ventanamicro.com/
> > >
> > > No one has commented/suggested anything (except Samuel
> > > Holland and Sudeep Holla).
> >
> > I see some comments from Krzysztof here
> > <https://lore.kernel.org/lkml/7a0477a0-9f0f-87d6-4070-30321745f4cc@linaro.org/>
> > as well. Looks like everyone is pointing out that having our CPU nodes
> > encode timers is a bad idea, my guess is that they're probably right.
>
> Adding a separate timer DT node, creates a new set of compatibility
> issues for existing platforms. I am fine updating my series to have
> separate timer DT node but do we want to go in this direction ?
I don't really follow. How is there a compatibility issue created by
adding a new node that is not added for a new property? Both will
require changes to the device tree. (You need not reply here, I am going
to review the other thread, it's been on my todo list for too long. Been
caught up with non-coherent stuff & our sw release cycle..)
> Even if ARM has a separate timer DT node, the timers are still part
> of the CPU. It depends on how we see the DT bindings aligning with
> actual HW.
>
> >
> > > Please review this series. I can quickly address comments to
> > > make this available for Linux-6.2. Until this series is merged,
> > > the affected platforms can simply remove non-retentive suspend
> > > states from their DT.
> >
> > That leaves us with a dependency between kernel versions and DT
> > bindings: kernels with the current driver will result in broken systems
> > with the non-retentive suspend states in the DT they boot with when
> > those states can't wake up the CPU.
Can someone point me at a (non D1 or virt) system that has suspend
states in the DT that would need fixing?
> This is not a new problem we are facing. Even in the ARM world,
> the DT bindings grew organically over time based on newer platform
> requirements.
>
> Now that we have a platform which does not want the time
> C3STOP feature, we need to first come-up with DT bindings
> to support this platform instead of temporarily disabling
> features which don't work on this platform.
It's the opposite surely? It should be "now that we have a platform that
*does want* the C3STOP feature", right?
> > > With all due respect, NACK to this patch from my side.
As Samuel pointed out that the D1 doesn't actually use the timer in
question, I think we are okay here?
> > >>
> > >> ---
> > >>
> > >> This should allow us to revert 232ccac1bd9b ("clocksource/drivers/riscv:
> > >> Events are stopped during CPU suspend"), which fixes suspend on the D1
> > >> but breaks timers everywhere.
> > >> ---
> > >> drivers/cpuidle/cpuidle-riscv-sbi.c | 11 +++++++++++
> > >> 1 file changed, 11 insertions(+)
> > >>
> > >> diff --git a/drivers/cpuidle/cpuidle-riscv-sbi.c b/drivers/cpuidle/cpuidle-riscv-sbi.c
> > >> index 05fe2902df9a..9d1063a54495 100644
> > >> --- a/drivers/cpuidle/cpuidle-riscv-sbi.c
> > >> +++ b/drivers/cpuidle/cpuidle-riscv-sbi.c
> > >> @@ -214,6 +214,17 @@ static bool sbi_suspend_state_is_valid(u32 state)
> > >> if (state > SBI_HSM_SUSPEND_NON_RET_DEFAULT &&
> > >> state < SBI_HSM_SUSPEND_NON_RET_PLATFORM)
> > >> return false;
> > >> +
> > >> + /*
> > >> + * Whether or not RISC-V systems deliver interrupts to harts in a
> > >> + * non-retentive suspend state is a platform-specific detail. This can
> > >> + * leave the hart unable to wake up, so just mark these states as
> > >> + * unsupported until we have a mechanism to expose these
> > >> + * platform-specific details to Linux.
> > >> + */
> > >> + if (state & SBI_HSM_SUSP_NON_RET_BIT)
> > >> + return false;
> > >> +
> > >> return true;
> > >> }
> > >>
> > >> --
> > >> 2.38.1
> > >>
WARNING: multiple messages have this Message-ID (diff)
From: Conor Dooley <conor.dooley@microchip.com>
To: Anup Patel <apatel@ventanamicro.com>
Cc: Palmer Dabbelt <palmer@rivosinc.com>, <anup@brainfault.org>,
Conor Dooley <conor@kernel.org>, <rafael@kernel.org>,
<daniel.lezcano@linaro.org>,
Paul Walmsley <paul.walmsley@sifive.com>, <aou@eecs.berkeley.edu>,
<linux-pm@vger.kernel.org>, <linux-riscv@lists.infradead.org>,
<linux-kernel@vger.kernel.org>, <linux@rivosinc.com>
Subject: Re: [PATCH] cpuidle: riscv-sbi: Stop using non-retentive suspend
Date: Tue, 22 Nov 2022 11:19:43 +0000 [thread overview]
Message-ID: <Y3ywTzv3vbgRXQGG@wendy> (raw)
In-Reply-To: <CAK9=C2USZHdfBQrrgd2Rs3u3_gTyscpRgxvPU5P6ptOPu1+Axg@mail.gmail.com>
On Tue, Nov 22, 2022 at 11:06:15AM +0530, Anup Patel wrote:
> On Tue, Nov 22, 2022 at 10:46 AM Palmer Dabbelt <palmer@rivosinc.com> wrote:
> >
> > On Mon, 21 Nov 2022 19:45:07 PST (-0800), anup@brainfault.org wrote:
> > > On Tue, Nov 22, 2022 at 2:27 AM Palmer Dabbelt <palmer@rivosinc.com> wrote:
> > >>
> > >> From: Palmer Dabbelt <palmer@rivosinc.com>
> > >>
> > >> As per [1], whether or not the core can wake up from non-retentive
> > >> suspend is a platform-specific detail. We don't have any way to encode
> > >> that, so just stop using them until we've sorted that out.
> > >>
> > >> Link: https://github.com/riscv-non-isa/riscv-sbi-doc/issues/98#issuecomment-1288564687
> > >> Fixes: 6abf32f1d9c5 ("cpuidle: Add RISC-V SBI CPU idle driver")
> > >> Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
> > >
> > > This is just unnecessary maintenance churn and it's not the
> > > right way to go. Better to fix this the right way instead of having
> > > a temporary fix.
> > >
> > > I had already sent-out a patch series 5 months back to describe
> > > this in DT:
> > > https://lore.kernel.org/lkml/20220727114302.302201-1-apatel@ventanamicro.com/
> > >
> > > No one has commented/suggested anything (except Samuel
> > > Holland and Sudeep Holla).
> >
> > I see some comments from Krzysztof here
> > <https://lore.kernel.org/lkml/7a0477a0-9f0f-87d6-4070-30321745f4cc@linaro.org/>
> > as well. Looks like everyone is pointing out that having our CPU nodes
> > encode timers is a bad idea, my guess is that they're probably right.
>
> Adding a separate timer DT node, creates a new set of compatibility
> issues for existing platforms. I am fine updating my series to have
> separate timer DT node but do we want to go in this direction ?
I don't really follow. How is there a compatibility issue created by
adding a new node that is not added for a new property? Both will
require changes to the device tree. (You need not reply here, I am going
to review the other thread, it's been on my todo list for too long. Been
caught up with non-coherent stuff & our sw release cycle..)
> Even if ARM has a separate timer DT node, the timers are still part
> of the CPU. It depends on how we see the DT bindings aligning with
> actual HW.
>
> >
> > > Please review this series. I can quickly address comments to
> > > make this available for Linux-6.2. Until this series is merged,
> > > the affected platforms can simply remove non-retentive suspend
> > > states from their DT.
> >
> > That leaves us with a dependency between kernel versions and DT
> > bindings: kernels with the current driver will result in broken systems
> > with the non-retentive suspend states in the DT they boot with when
> > those states can't wake up the CPU.
Can someone point me at a (non D1 or virt) system that has suspend
states in the DT that would need fixing?
> This is not a new problem we are facing. Even in the ARM world,
> the DT bindings grew organically over time based on newer platform
> requirements.
>
> Now that we have a platform which does not want the time
> C3STOP feature, we need to first come-up with DT bindings
> to support this platform instead of temporarily disabling
> features which don't work on this platform.
It's the opposite surely? It should be "now that we have a platform that
*does want* the C3STOP feature", right?
> > > With all due respect, NACK to this patch from my side.
As Samuel pointed out that the D1 doesn't actually use the timer in
question, I think we are okay here?
> > >>
> > >> ---
> > >>
> > >> This should allow us to revert 232ccac1bd9b ("clocksource/drivers/riscv:
> > >> Events are stopped during CPU suspend"), which fixes suspend on the D1
> > >> but breaks timers everywhere.
> > >> ---
> > >> drivers/cpuidle/cpuidle-riscv-sbi.c | 11 +++++++++++
> > >> 1 file changed, 11 insertions(+)
> > >>
> > >> diff --git a/drivers/cpuidle/cpuidle-riscv-sbi.c b/drivers/cpuidle/cpuidle-riscv-sbi.c
> > >> index 05fe2902df9a..9d1063a54495 100644
> > >> --- a/drivers/cpuidle/cpuidle-riscv-sbi.c
> > >> +++ b/drivers/cpuidle/cpuidle-riscv-sbi.c
> > >> @@ -214,6 +214,17 @@ static bool sbi_suspend_state_is_valid(u32 state)
> > >> if (state > SBI_HSM_SUSPEND_NON_RET_DEFAULT &&
> > >> state < SBI_HSM_SUSPEND_NON_RET_PLATFORM)
> > >> return false;
> > >> +
> > >> + /*
> > >> + * Whether or not RISC-V systems deliver interrupts to harts in a
> > >> + * non-retentive suspend state is a platform-specific detail. This can
> > >> + * leave the hart unable to wake up, so just mark these states as
> > >> + * unsupported until we have a mechanism to expose these
> > >> + * platform-specific details to Linux.
> > >> + */
> > >> + if (state & SBI_HSM_SUSP_NON_RET_BIT)
> > >> + return false;
> > >> +
> > >> return true;
> > >> }
> > >>
> > >> --
> > >> 2.38.1
> > >>
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2022-11-22 11:27 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-21 20:56 [PATCH] cpuidle: riscv-sbi: Stop using non-retentive suspend Palmer Dabbelt
2022-11-21 20:56 ` Palmer Dabbelt
2022-11-21 21:10 ` Conor Dooley
2022-11-21 21:10 ` Conor Dooley
2022-11-22 0:45 ` Samuel Holland
2022-11-22 0:45 ` Samuel Holland
2022-11-22 11:06 ` Conor Dooley
2022-11-22 11:06 ` Conor Dooley
2022-11-23 3:42 ` Samuel Holland
2022-11-23 3:42 ` Samuel Holland
2022-11-23 10:46 ` Conor Dooley
2022-11-23 10:46 ` Conor Dooley
2022-11-22 3:45 ` Anup Patel
2022-11-22 3:45 ` Anup Patel
2022-11-22 5:16 ` Palmer Dabbelt
2022-11-22 5:16 ` Palmer Dabbelt
2022-11-22 5:36 ` Anup Patel
2022-11-22 5:36 ` Anup Patel
2022-11-22 11:19 ` Conor Dooley [this message]
2022-11-22 11:19 ` Conor Dooley
2022-11-22 15:28 ` Palmer Dabbelt
2022-11-22 15:28 ` Palmer Dabbelt
2022-11-23 4:38 ` Anup Patel
2022-11-23 4:38 ` Anup Patel
2022-11-23 5:11 ` Samuel Holland
2022-11-23 5:11 ` Samuel Holland
2022-11-23 5:35 ` Anup Patel
2022-11-23 5:35 ` Anup Patel
2022-11-23 5:38 ` Samuel Holland
2022-11-23 5:38 ` Samuel Holland
2022-11-23 6:10 ` Anup Patel
2022-11-23 6:10 ` Anup Patel
2022-11-23 6:27 ` Samuel Holland
2022-11-23 6:27 ` Samuel Holland
2022-11-23 6:41 ` Anup Patel
2022-11-23 6:41 ` Anup Patel
2022-11-23 6:49 ` Samuel Holland
2022-11-23 6:49 ` Samuel Holland
2022-11-23 7:13 ` Anup Patel
2022-11-23 7:13 ` Anup Patel
2022-11-23 10:20 ` Sudeep Holla
2022-11-23 10:20 ` Sudeep Holla
2022-11-23 4:26 ` Anup Patel
2022-11-23 4:26 ` Anup Patel
2022-11-23 10:09 ` Conor Dooley
2022-11-23 10:09 ` Conor Dooley
2022-11-23 10:36 ` Anup Patel
2022-11-23 10:36 ` Anup Patel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y3ywTzv3vbgRXQGG@wendy \
--to=conor.dooley@microchip.com \
--cc=anup@brainfault.org \
--cc=aou@eecs.berkeley.edu \
--cc=apatel@ventanamicro.com \
--cc=conor@kernel.org \
--cc=daniel.lezcano@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux@rivosinc.com \
--cc=palmer@rivosinc.com \
--cc=paul.walmsley@sifive.com \
--cc=rafael@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.