RE: [PATCH -next] x86: Fix unused variable 'hi'

From: Michael Kelley
Date: Fri Mar 19 2021 - 14:58:56 EST


From: Ingo Molnar <mingo.kernel.org@xxxxxxxxx> Sent: Thursday, March 18, 2021 4:24 AM
>
> * Xu Yihang <xuyihang@xxxxxxxxxx> wrote:
>
> > Fixes the following W=1 kernel build warning(s):
> > arch/x86/hyperv/hv_apic.c:58:15: warning: variable ‘hi’ set but not used [-Wunused-but-
> set-variable]
> >
> > Reported-by: Hulk Robot <hulkci@xxxxxxxxxx>
> > Signed-off-by: Xu Yihang <xuyihang@xxxxxxxxxx>
> > ---
> > arch/x86/hyperv/hv_apic.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/x86/hyperv/hv_apic.c b/arch/x86/hyperv/hv_apic.c
> > index 284e73661a18..c0b0a5774f31 100644
> > --- a/arch/x86/hyperv/hv_apic.c
> > +++ b/arch/x86/hyperv/hv_apic.c
> > @@ -55,7 +55,8 @@ static void hv_apic_icr_write(u32 low, u32 id)
> >
> > static u32 hv_apic_read(u32 reg)
> > {
> > - u32 reg_val, hi;
> > + u32 hi __maybe_unused;
> > + u32 reg_val;
> >
> > switch (reg) {
> > case APIC_EOI:
>
> Why and under what config does this function trigger the warning?
>
> Thanks,
>
> Ingo

The warning should trigger if CONFIG_HYPERV is "m" or "y", and W=1
is selected. The variable is indeed set but not used because only the
low order 32 bits of the synthetic MSR are relevant, but rdmsr() returns
both the low 32 and the high 32 bits.

Michael