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

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


From: Xu Yihang <xuyihang@xxxxxxxxxx> Sent: Thursday, March 18, 2021 1:04 AM
>
> Fixes the following W=1 kernel build warning(s):
> arch/x86/hyperv/hv_spinlock.c:28:16: warning: variable ‘msr_val’ set but not used [-
> Wunused-but-set-variable]
> unsigned long msr_val;
>
> Reported-by: Hulk Robot <hulkci@xxxxxxxxxx>
> Signed-off-by: Xu Yihang <xuyihang@xxxxxxxxxx>
> ---
> arch/x86/hyperv/hv_spinlock.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/hyperv/hv_spinlock.c b/arch/x86/hyperv/hv_spinlock.c
> index f3270c1fc48c..67bc15c7752a 100644
> --- a/arch/x86/hyperv/hv_spinlock.c
> +++ b/arch/x86/hyperv/hv_spinlock.c
> @@ -25,7 +25,7 @@ static void hv_qlock_kick(int cpu)
>
> static void hv_qlock_wait(u8 *byte, u8 val)
> {
> - unsigned long msr_val;
> + unsigned long msr_val __maybe_unused;
> unsigned long flags;
>
> if (in_nmi())
> --
> 2.17.1

This is one of those slightly weird cases where the side
effect of reading the synthetic MSR provided by Hyper-V
is what we want. The returned value is irrelevant and
never used, so the __maybe_unused annotation is correct.

Let me suggest updating the commit message, and adding
a brief comment to the code to explain this. The side
effect behavior is described in the Hyper-V TLFS, though
perhaps not as clearly as it should be.

Michael