|
|
@@ -1300,7 +1300,7 @@ static int arm_ccn_pmu_init(struct arm_ccn *ccn)
|
|
|
}
|
|
|
|
|
|
/* Pick one CPU which we will use to collect data from CCN... */
|
|
|
- cpumask_set_cpu(smp_processor_id(), &ccn->dt.cpu);
|
|
|
+ cpumask_set_cpu(get_cpu(), &ccn->dt.cpu);
|
|
|
|
|
|
/* Also make sure that the overflow interrupt is handled by this CPU */
|
|
|
if (ccn->irq) {
|
|
|
@@ -1317,10 +1317,12 @@ static int arm_ccn_pmu_init(struct arm_ccn *ccn)
|
|
|
|
|
|
cpuhp_state_add_instance_nocalls(CPUHP_AP_PERF_ARM_CCN_ONLINE,
|
|
|
&ccn->dt.node);
|
|
|
+ put_cpu();
|
|
|
return 0;
|
|
|
|
|
|
error_pmu_register:
|
|
|
error_set_affinity:
|
|
|
+ put_cpu();
|
|
|
error_choose_name:
|
|
|
ida_simple_remove(&arm_ccn_pmu_ida, ccn->dt.id);
|
|
|
for (i = 0; i < ccn->num_xps; i++)
|