Re: [PATCH v2] riscv: acpi: Handle LPI architectural context loss flags
Sunil V L <[email protected]> Tue, 28 Jul 2026 18:24:06 +0530
| Newsgroups | dev.linux.lists.spacemit,org.infradead.lists.linux-riscv,org.kernel.vger.linux-acpi,org.kernel.vger.linux-kernel,org.kernel.vger.stable |
|---|---|
| Message-ID | <CAB19ukH1Srbw+Yko_-21DiV7Wc0ysJX9cmE7xDTwtrmUm_5rMw@mail.gmail.com> |
On Tue, Jul 28, 2026 at 5:24=E2=80=AFPM Peixin Xie <[email protected]> wrote: > > Commit 4785aa802853 ("cpuidle, ACPI: Evaluate LPI arch_flags for > broadcast timer") replaced the generic nonzero check for LPI > architectural context loss flags with arch_get_idle_state_flags(). > RISC-V does not implement the helper, so it falls back to the stub > that returns 0. Consequently, CPUIDLE_FLAG_TIMER_STOP is not set when > an LPI state loses the hart timer context, preventing cpuidle from > using a broadcast timer for that state. > > Implement the RISC-V helper and map the hart timer context loss flag > to CPUIDLE_FLAG_TIMER_STOP. > > Fixes: 4785aa802853 ("cpuidle, ACPI: Evaluate LPI arch_flags for broadcas= t timer") > Cc: [email protected] > Acked-by: Sudeep Holla <[email protected]> > Reviewed-by: Yixun Lan <[email protected]> > Signed-off-by: Peixin Xie <[email protected]> > --- > Changes in v2: > - Correct the FFH specification reference to Chapter 2.1.1.2, > Table 3, as suggested by Yixun. > - Link to v1: https://patch.msgid.link/20260728-riscv-acpi-lpi-timer-v1-1= [email protected] > --- > arch/riscv/include/asm/acpi.h | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/arch/riscv/include/asm/acpi.h b/arch/riscv/include/asm/acpi.= h > index 26ab37c171bc..2643e28fc08c 100644 > --- a/arch/riscv/include/asm/acpi.h > +++ b/arch/riscv/include/asm/acpi.h > @@ -12,6 +12,8 @@ > #ifndef _ASM_ACPI_H > #define _ASM_ACPI_H > > +#include <linux/cpuidle.h> > + > /* Basic configuration for ACPI */ > #ifdef CONFIG_ACPI > > @@ -67,6 +69,23 @@ int acpi_get_riscv_isa(struct acpi_table_header *table= , > > void acpi_get_cbo_block_size(struct acpi_table_header *table, u32 *cbom_= size, > u32 *cboz_size, u32 *cbop_size); > + > +/* > + * RISC-V Functional Fixed Hardware Specification Version v1.0.1, > + * Chapter 2.1.1.2. Arch. Context Lost Flags, Table 3 > Isn't it Chapter 3.1.2, Table 4? > + */ > +#define RISCV_LPI_HART_TIMER_CTXT_LOST BIT(0) > + > +static inline unsigned int arch_get_idle_state_flags(u32 arch_flags) > +{ > + if (arch_flags & RISCV_LPI_HART_TIMER_CTXT_LOST) > + return CPUIDLE_FLAG_TIMER_STOP; > + > + return 0; > +} > + > +#define arch_get_idle_state_flags arch_get_idle_state_flags > + Otherwise, LGTM. Reviewed-by: Sunil V L <[email protected]>