On Sun, Sep 10, 2023 at 04:29:06AM -0400, guoren@xxxxxxxxxx wrote: > From: Guo Ren <guoren@xxxxxxxxxxxxxxxxx> > > Disables the qspinlock slow path using PV optimizations which > allow the hypervisor to 'idle' the guest on lock contention. > > Signed-off-by: Guo Ren <guoren@xxxxxxxxxxxxxxxxx> > Signed-off-by: Guo Ren <guoren@xxxxxxxxxx> > --- > Documentation/admin-guide/kernel-parameters.txt | 2 +- > arch/riscv/kernel/qspinlock_paravirt.c | 13 +++++++++++++ > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > index f75bedc50e00..e74aed631573 100644 > --- a/Documentation/admin-guide/kernel-parameters.txt > +++ b/Documentation/admin-guide/kernel-parameters.txt > @@ -3857,7 +3857,7 @@ > as generic guest with no PV drivers. Currently support > XEN HVM, KVM, HYPER_V and VMWARE guest. > > - nopvspin [X86,XEN,KVM] > + nopvspin [X86,XEN,KVM,RISC-V] > Disables the qspinlock slow path using PV optimizations > which allow the hypervisor to 'idle' the guest on lock > contention. > diff --git a/arch/riscv/kernel/qspinlock_paravirt.c b/arch/riscv/kernel/qspinlock_paravirt.c > index 85ff5a3ec234..a0ad4657f437 100644 > --- a/arch/riscv/kernel/qspinlock_paravirt.c > +++ b/arch/riscv/kernel/qspinlock_paravirt.c > @@ -41,8 +41,21 @@ EXPORT_STATIC_CALL(pv_queued_spin_lock_slowpath); > DEFINE_STATIC_CALL(pv_queued_spin_unlock, native_queued_spin_unlock); > EXPORT_STATIC_CALL(pv_queued_spin_unlock); > > +static bool nopvspin; It is only used in init, so it makes sense to add __initdata. static bool nopvspin __initdata; Other than that, LGTM: Reviewed-by: Leonardo Bras <leobras@xxxxxxxxxx> Thanks! Leo > +static __init int parse_nopvspin(char *arg) > +{ > + nopvspin = true; > + return 0; > +} > +early_param("nopvspin", parse_nopvspin); > + > void __init pv_qspinlock_init(void) > { > + if (nopvspin) { > + pr_info("PV qspinlocks disabled\n"); > + return; > + } > + > if (num_possible_cpus() == 1) > return; > > -- > 2.36.1 >