Re: [PATCH 1/4] perf/x86/intel/lbr: use setup_clear_cpu_cap instead of clear_cpu_cap

From: Liang, Kan
Date: Wed Jun 22 2022 - 14:57:35 EST




On 6/22/2022 10:58 AM, Dave Hansen wrote:
On 6/22/22 07:48, Maxim Levitsky wrote:
clear_cpu_cap(&boot_cpu_data) is very similar to setup_clear_cpu_cap
except that the latter also sets a bit in 'cpu_caps_cleared' which
later clears the same cap in secondary cpus, which is likely
what is meant here.

Signed-off-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx>

Seems like a:

Fixes: 47125db27e47 ("perf/x86/intel/lbr: Support Architectural LBR")

would be in order.

Kan, does this change look right to you?

For the current implementation, the Arch LBR feature should be either supported by all the CPUs or disabled on all the CPUs. It cannot be only enabled for partial CPUs, even in a hybrid platform.
So the current code only check the boot CPU via static_cpu_has().

Ideally, Yes, I think it may be better to clear the bit for all CPUs, which makes the capability consistent among CPUs.

Thanks,
Kan

arch/x86/events/intel/lbr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/events/intel/lbr.c b/arch/x86/events/intel/lbr.c
index 13179f31fe10fa..b08715172309a7 100644
--- a/arch/x86/events/intel/lbr.c
+++ b/arch/x86/events/intel/lbr.c
@@ -1860,7 +1860,7 @@ void __init intel_pmu_arch_lbr_init(void)
return;
clear_arch_lbr:
- clear_cpu_cap(&boot_cpu_data, X86_FEATURE_ARCH_LBR);
+ setup_clear_cpu_cap(X86_FEATURE_ARCH_LBR);
}
/**