On Sun, Sep 10, 2023 at 04:29:06AM -0400, guo...@kernel.org wrote:
> From: Guo Ren <guo...@linux.alibaba.com>
> 
> Disables the qspinlock slow path using PV optimizations which
> allow the hypervisor to 'idle' the guest on lock contention.
> 
> Signed-off-by: Guo Ren <guo...@linux.alibaba.com>
> Signed-off-by: Guo Ren <guo...@kernel.org>
> ---
>  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 <leob...@redhat.com>

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
> 

Reply via email to