Re: [PATCH] LoongArch: KVM: Move some variable declaration to file paravirt.h

From: Huacai Chen

Date: Fri May 08 2026 - 09:06:13 EST


On Fri, May 8, 2026 at 11:19 AM Bibo Mao <maobibo@xxxxxxxxxxx> wrote:
>
>
>
> On 2026/5/8 上午11:11, Huacai Chen wrote:
> > On Fri, May 8, 2026 at 11:08 AM Bibo Mao <maobibo@xxxxxxxxxxx> wrote:
> >>
> >>
> >>
> >> On 2026/5/8 上午10:56, Huacai Chen wrote:
> >>> Hi, Bibo,
> >>>
> >>> On Fri, May 8, 2026 at 9:30 AM Bibo Mao <maobibo@xxxxxxxxxxx> wrote:
> >>>>
> >>>> Some variables relative with paravirt feature are declared in header file
> >>>> asm/qspinlock.h, however this file can be included only when option
> >>>> CONFIG_SMP is on. There is compiling warning if CONFIG_SMP is off since
> >>>> it is not declared.
> >>>>
> >>>> Move these variable declaration to header file asm/paravirt.h to avoid
> >>>> compiling warning.
> >>> Have you reproduced the warning? I cannot reproduce it in my
> >>> environment with the config file from lkp report, so I also cannot
> >>> confirm whether it is fixed.
> >> yes, I can reproduce this and it is fixed. The warning is reported from
> >> sparse tool, rather than LLVM.
> >>>
> >>> Another question:
> >>> Is paravirt.h a better place than kvm_para.h?
> >> en, here kvm_para.h seems better, will send V2 version in next time.
> > Frankly, I don't know the difference between the two files. kvm_para.h
> > is kvm specific and paravirt.h is generic? Or kvm_para.h is the
> > hypervisor side and paravirt.h is the guest side?
> kvm_para.h is shared by hypervisor and guest kernel, paravirt.h is only
> used by guest kernel. And option CONFIG_PARAVIRT is useful with guest
> kernel, CONFIG_PARAVIRT has no much meaning with hypervisor.
If so, paravirt.h seems better to declare these variables.

Huacai

>
> Regards
> Bibo Mao
> >
> > Huacai
> >
> >>
> >> Regards
> >> Bibo Mao
> >>
> >>>
> >>> Huacai
> >>>
> >>>>
> >>>> Fixes: c43dce6f13fb ("LoongArch: KVM: Make vcpu_is_preempted() as a macro rather than function")
> >>>> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> >>>> Closes: https://lore.kernel.org/oe-kbuild-all/202605061313.O8Hswm2b-lkp@xxxxxxxxx/
> >>>> Signed-off-by: Bibo Mao <maobibo@xxxxxxxxxxx>
> >>>> ---
> >>>> arch/loongarch/include/asm/paravirt.h | 4 ++++
> >>>> arch/loongarch/include/asm/qspinlock.h | 5 +----
> >>>> 2 files changed, 5 insertions(+), 4 deletions(-)
> >>>>
> >>>> diff --git a/arch/loongarch/include/asm/paravirt.h b/arch/loongarch/include/asm/paravirt.h
> >>>> index 0111f0ad5f73..dbc64908017f 100644
> >>>> --- a/arch/loongarch/include/asm/paravirt.h
> >>>> +++ b/arch/loongarch/include/asm/paravirt.h
> >>>> @@ -3,6 +3,10 @@
> >>>> #define _ASM_LOONGARCH_PARAVIRT_H
> >>>>
> >>>> #ifdef CONFIG_PARAVIRT
> >>>> +#include <linux/jump_label.h>
> >>>> +DECLARE_STATIC_KEY_FALSE(virt_preempt_key);
> >>>> +DECLARE_STATIC_KEY_FALSE(virt_spin_lock_key);
> >>>> +DECLARE_PER_CPU(struct kvm_steal_time, steal_time);
> >>>>
> >>>> int __init pv_ipi_init(void);
> >>>> int __init pv_time_init(void);
> >>>> diff --git a/arch/loongarch/include/asm/qspinlock.h b/arch/loongarch/include/asm/qspinlock.h
> >>>> index 0ee15b3b3937..fbfc6be82f26 100644
> >>>> --- a/arch/loongarch/include/asm/qspinlock.h
> >>>> +++ b/arch/loongarch/include/asm/qspinlock.h
> >>>> @@ -3,12 +3,9 @@
> >>>> #define _ASM_LOONGARCH_QSPINLOCK_H
> >>>>
> >>>> #include <asm/kvm_para.h>
> >>>> -#include <linux/jump_label.h>
> >>>> +#include <asm/paravirt.h>
> >>>>
> >>>> #ifdef CONFIG_PARAVIRT
> >>>> -DECLARE_STATIC_KEY_FALSE(virt_preempt_key);
> >>>> -DECLARE_STATIC_KEY_FALSE(virt_spin_lock_key);
> >>>> -DECLARE_PER_CPU(struct kvm_steal_time, steal_time);
> >>>>
> >>>> #define virt_spin_lock virt_spin_lock
> >>>>
> >>>>
> >>>> base-commit: 74fe02ce122a6103f207d29fafc8b3a53de6abaf
> >>>> --
> >>>> 2.39.3
> >>>>
> >>
>