Loading arch/arm/kernel/perf_event.c +4 −0 Original line number Diff line number Diff line Loading @@ -368,6 +368,7 @@ static int armpmu_reserve_hardware(struct arm_pmu *armpmu) { int err; int cpu; struct arm_pmu_platdata *plat; struct platform_device *pmu_device = armpmu->plat_device; Loading @@ -393,6 +394,9 @@ armpmu_reserve_hardware(struct arm_pmu *armpmu) return err; } armpmu->pmu_state = ARM_PMU_STATE_RUNNING; if (armpmu->reset) for_each_cpu(cpu, cpu_online_mask) smp_call_function_single(cpu, armpmu->reset, armpmu, 1); return 0; } Loading arch/arm/kernel/perf_event_cpu.c +12 −5 Original line number Diff line number Diff line Loading @@ -326,9 +326,13 @@ static int perf_cpu_pm_notifier(struct notifier_block *self, unsigned long cmd, void *v) { struct pmu *pmu; if (!cpu_pmu) return NOTIFY_OK; switch (cmd) { case CPU_PM_ENTER: if (cpu_pmu && cpu_pmu->save_pm_registers) if (cpu_pmu->save_pm_registers) cpu_pmu->save_pm_registers((void *)smp_processor_id()); if (cpu_has_active_perf((int)v)) { armpmu_update_counters(); Loading @@ -339,12 +343,15 @@ static int perf_cpu_pm_notifier(struct notifier_block *self, unsigned long cmd, case CPU_PM_ENTER_FAILED: case CPU_PM_EXIT: if (cpu_has_active_perf((int)v) && cpu_pmu->reset) cpu_pmu->reset(NULL); if (cpu_pmu && cpu_pmu->restore_pm_registers) /* Reset PMU to clear counters for ftrace buffer */ if ((cpu_pmu->pmu_state == ARM_PMU_STATE_RUNNING) && cpu_pmu->reset) cpu_pmu->reset(cpu_pmu); if (cpu_pmu->restore_pm_registers) cpu_pmu->restore_pm_registers( (void *)smp_processor_id()); if (cpu_pmu && cpu_has_active_perf((int)v)) { if (cpu_has_active_perf((int)v)) { /* * Flip this bit so armpmu_enable knows it needs * to re-enable active counters. Loading arch/arm/mach-msm/perf_debug.c +1 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ static char *descriptions = "27 Perf: stop counters when going into hotplug\n" "28 ARM: dts: msm: add perf-events support for msm8909\n" "29 msm: perf: Refine disable/enable in tracecounters\n" "30 Perf: reset pmu enables when starting perf\n" ; static ssize_t desc_read(struct file *fp, char __user *buf, Loading Loading
arch/arm/kernel/perf_event.c +4 −0 Original line number Diff line number Diff line Loading @@ -368,6 +368,7 @@ static int armpmu_reserve_hardware(struct arm_pmu *armpmu) { int err; int cpu; struct arm_pmu_platdata *plat; struct platform_device *pmu_device = armpmu->plat_device; Loading @@ -393,6 +394,9 @@ armpmu_reserve_hardware(struct arm_pmu *armpmu) return err; } armpmu->pmu_state = ARM_PMU_STATE_RUNNING; if (armpmu->reset) for_each_cpu(cpu, cpu_online_mask) smp_call_function_single(cpu, armpmu->reset, armpmu, 1); return 0; } Loading
arch/arm/kernel/perf_event_cpu.c +12 −5 Original line number Diff line number Diff line Loading @@ -326,9 +326,13 @@ static int perf_cpu_pm_notifier(struct notifier_block *self, unsigned long cmd, void *v) { struct pmu *pmu; if (!cpu_pmu) return NOTIFY_OK; switch (cmd) { case CPU_PM_ENTER: if (cpu_pmu && cpu_pmu->save_pm_registers) if (cpu_pmu->save_pm_registers) cpu_pmu->save_pm_registers((void *)smp_processor_id()); if (cpu_has_active_perf((int)v)) { armpmu_update_counters(); Loading @@ -339,12 +343,15 @@ static int perf_cpu_pm_notifier(struct notifier_block *self, unsigned long cmd, case CPU_PM_ENTER_FAILED: case CPU_PM_EXIT: if (cpu_has_active_perf((int)v) && cpu_pmu->reset) cpu_pmu->reset(NULL); if (cpu_pmu && cpu_pmu->restore_pm_registers) /* Reset PMU to clear counters for ftrace buffer */ if ((cpu_pmu->pmu_state == ARM_PMU_STATE_RUNNING) && cpu_pmu->reset) cpu_pmu->reset(cpu_pmu); if (cpu_pmu->restore_pm_registers) cpu_pmu->restore_pm_registers( (void *)smp_processor_id()); if (cpu_pmu && cpu_has_active_perf((int)v)) { if (cpu_has_active_perf((int)v)) { /* * Flip this bit so armpmu_enable knows it needs * to re-enable active counters. Loading
arch/arm/mach-msm/perf_debug.c +1 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ static char *descriptions = "27 Perf: stop counters when going into hotplug\n" "28 ARM: dts: msm: add perf-events support for msm8909\n" "29 msm: perf: Refine disable/enable in tracecounters\n" "30 Perf: reset pmu enables when starting perf\n" ; static ssize_t desc_read(struct file *fp, char __user *buf, Loading