On Thu, Apr 17, 2025 at 02:19:50PM +0200, Clément Léger wrote: > This SBI extensions enables supervisor mode to control feature that are > under M-mode control (For instance, Svadu menvcfg ADUE bit, Ssdbltrp > DTE, etc). Add an interface to set local features for a specific cpu > mask as well as for the online cpu mask. > > Signed-off-by: Clément Léger <cleger@xxxxxxxxxxxx> > Reviewed-by: Andrew Jones <ajones@xxxxxxxxxxxxxxxx> > --- > arch/riscv/include/asm/sbi.h | 17 +++++++++++ > arch/riscv/kernel/sbi.c | 57 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 74 insertions(+) > > diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h > index 7ec249fea880..c8eab315c80e 100644 > --- a/arch/riscv/include/asm/sbi.h > +++ b/arch/riscv/include/asm/sbi.h > @@ -503,6 +503,23 @@ int sbi_remote_hfence_vvma_asid(const struct cpumask *cpu_mask, > unsigned long asid); > long sbi_probe_extension(int ext); > > +int sbi_fwft_set(u32 feature, unsigned long value, unsigned long flags); > +int sbi_fwft_local_set_cpumask(const cpumask_t *mask, u32 feature, > + unsigned long value, unsigned long flags); I'm confused by the naming that includes 'local' and 'cpumask' together and... > +/** > + * sbi_fwft_local_set() - Set a feature on all online cpus > + * @feature: The feature to be set > + * @value: The feature value to be set > + * @flags: FWFT feature set flags > + * > + * Return: 0 on success, appropriate linux error code otherwise. > + */ > +static inline int sbi_fwft_local_set(u32 feature, unsigned long value, > + unsigned long flags) > +{ > + return sbi_fwft_local_set_cpumask(cpu_online_mask, feature, value, flags); ...that something named with just 'local' is applied to all online cpus. I've always considered 'local' functions to only affect the calling cpu. Thanks, drew