Re: [PATCH] x86/perf: Use static_call for x86_pmu.guest_get_msrs

From: Peter Zijlstra
Date: Mon Jan 18 2021 - 08:50:31 EST


On Mon, Jan 18, 2021 at 09:05:06PM +0800, Like Xu wrote:
> I guess this fix will silence the compiler error,
> and v2 will be sent after the local 0day test passes.

I think there's also a problem where you don't assign a function at all.

I think you want something like

if (!x86_pmu.guest_get_msr)
x86_pmu.guest_get_msr = guest_get_msr_nop;

right before x86_pmu_static_call_update();

And then have it be something like:

static void *guest_et_msr_nop(int *nr)
{
*nr = 0;
return NULL;
}

and then you can reduce the entire thing to:

struct perf_guest_switch_msr *perf_guest_get_msrs(int *nr)
{
return static_call(x86_pmu_guest_get_msrs)(nr);
}