perf: Avoid the percore allocations if HT is not capable
Subsystems (2)
PATCH v2 4/4 perf: Avoid the percore allocations if HT is not capable
No need to do percore allocations if HT is not capable
Signed-off-by Lin Ming <[email protected]>
--- arch/x86/kernel/cpu/perf_event_intel.c | 23 +++++++++++++++++------ 1 files changed, 17 insertions(+), 6 deletions(-)
arch/x86/kernel/cpu/perf_event_intel.c +17 -6
@@ -1089,10 +1089,18 @@ static __initconst const struct x86_pmu core_pmu = { .event_constraints = intel_core_event_constraints, }; +static bool ht_capable (void ) +{ +return boot_cpu_has (X86_FEATURE_HT ) && smp_num_siblings >1 ; +} +static int intel_pmu_cpu_prepare (int cpu) {struct cpu_hw_events *cpuc = &per_cpu (cpu_hw_events, cpu); +if (!ht_capable ()) +return NOTIFY_OK ; + cpuc->per_core =kzalloc_node (sizeof (struct intel_percore ),GFP_KERNEL ,cpu_to_node (cpu));if (!cpuc->per_core)
@@ -1109,6 +1117,15 @@ static void intel_pmu_cpu_starting(int cpu)int core_id =topology_core_id (cpu);int i; +init_debug_store_on_cpu (cpu); +/* +* Deal with CPUs that don't clear their LBRs on power-up. +*/ +intel_pmu_lbr_reset (); + +if (!ht_capable ()) +return ; +for_each_cpu (i,topology_thread_cpumask (cpu)) {struct intel_percore *pc =per_cpu (cpu_hw_events, i).per_core;
@@ -1121,12 +1138,6 @@ static void intel_pmu_cpu_starting(int cpu) cpuc->per_core->core_id = core_id; cpuc->per_core->refcnt++; - -init_debug_store_on_cpu (cpu); -/* -* Deal with CPUs that don't clear their LBRs on power-up. -*/ -intel_pmu_lbr_reset (); }static void intel_pmu_cpu_dying (int cpu)
Signature · 1 line
1.7.3