2021-03-18 08:05:56

by xuyihang

[permalink] [raw]
Subject: [PATCH -next] x86: Fix unused variable 'msr_val' warning

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 <[email protected]>
Signed-off-by: Xu Yihang <[email protected]>
---
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


2021-03-19 18:52:05

by Michael Kelley (LINUX)

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

From: Xu Yihang <[email protected]> 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 <[email protected]>
> Signed-off-by: Xu Yihang <[email protected]>
> ---
> 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