Re: [PATCH v2] perf/x86/intel/p4: Fix unused variable warning in p4_pmu_init()

From: Peter Zijlstra

Date: Tue Mar 24 2026 - 10:18:30 EST


On Fri, Mar 20, 2026 at 12:23:02PM +0100, Aldo Conte wrote:
> Build the kernel with make W=1 generates the following warning:
>
> arch/x86/events/intel/p4.c: In function ‘p4_pmu_init’:
> arch/x86/events/intel/p4.c:1370:27: error: variable ‘high’ set but not used [-Werror=unused-but-set-variable]
> 1370 | unsigned int low, high;
> | ^~~~
>
> This happens because, although both variables are declared and
> initialized by rdmsr, only `low` is used in the subsequent if statement.
>
> This patch uses the rdmsrq() macro instead of the rdmsr() macro.
> The rdmsrq() macro avoids the use of high and low variables
> because it reads the msr value in a single u64 variable.
> Also, replace (1 << 7) with the proper macro.
>
> Running `make W=1` again resolves the error.
> I was unable to test the patch because
> i do not have the hardware.
>
> Suggested-by: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
> Signed-off-by: Aldo Conte <aldocontelk@xxxxxxxxx>
> ---
> v2:
> - Use of rdmsrq() instead of rdmsr() to read the full 64-bit MSR
> in one single read avoiding the use of high and low.
> - Replace (1 << 7) with the MSR_IA32_MISC_ENABLE_EMON
> - Remove pr_cont() with MSR printout added in the previous patch
>
> v1: https://lore.kernel.org/all/20260319152210.210854-1-aldocontelk@xxxxxxxxx/
> arch/x86/events/intel/p4.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>

In general I figure people using W=1 can keep the pieces, but the split
msr interface is a relic, so yeah, lets clean this up.

Thanks!