On Mon, Jul 18, 2022 at 05:11:19PM +0300, 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. > > Fixes: 47125db27e47 ("perf/x86/intel/lbr: Support Architectural LBR") > > Reviewed-by: Kan Liang <kan.liang@xxxxxxxxxxxxxxx> > Signed-off-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> > --- > 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); setup_clear_cpu_cap() has a very specific purpose - see apply_forced_caps(). This whole call sequence is an early_initcall() which is way after the whole CPU features picking apart happens. So what is actually this fixing? -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette