diff options
Diffstat (limited to 'arch/arm/kernel/perf_event_cpu.c')
| -rw-r--r-- | arch/arm/kernel/perf_event_cpu.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/arch/arm/kernel/perf_event_cpu.c b/arch/arm/kernel/perf_event_cpu.c index e6a6edbec613..4bf4cce759fe 100644 --- a/arch/arm/kernel/perf_event_cpu.c +++ b/arch/arm/kernel/perf_event_cpu.c | |||
| @@ -76,21 +76,15 @@ static struct pmu_hw_events *cpu_pmu_get_cpu_events(void) | |||
| 76 | 76 | ||
| 77 | static void cpu_pmu_enable_percpu_irq(void *data) | 77 | static void cpu_pmu_enable_percpu_irq(void *data) |
| 78 | { | 78 | { |
| 79 | struct arm_pmu *cpu_pmu = data; | 79 | int irq = *(int *)data; |
| 80 | struct platform_device *pmu_device = cpu_pmu->plat_device; | ||
| 81 | int irq = platform_get_irq(pmu_device, 0); | ||
| 82 | 80 | ||
| 83 | enable_percpu_irq(irq, IRQ_TYPE_NONE); | 81 | enable_percpu_irq(irq, IRQ_TYPE_NONE); |
| 84 | cpumask_set_cpu(smp_processor_id(), &cpu_pmu->active_irqs); | ||
| 85 | } | 82 | } |
| 86 | 83 | ||
| 87 | static void cpu_pmu_disable_percpu_irq(void *data) | 84 | static void cpu_pmu_disable_percpu_irq(void *data) |
| 88 | { | 85 | { |
| 89 | struct arm_pmu *cpu_pmu = data; | 86 | int irq = *(int *)data; |
| 90 | struct platform_device *pmu_device = cpu_pmu->plat_device; | ||
| 91 | int irq = platform_get_irq(pmu_device, 0); | ||
| 92 | 87 | ||
| 93 | cpumask_clear_cpu(smp_processor_id(), &cpu_pmu->active_irqs); | ||
| 94 | disable_percpu_irq(irq); | 88 | disable_percpu_irq(irq); |
| 95 | } | 89 | } |
| 96 | 90 | ||
| @@ -103,7 +97,7 @@ static void cpu_pmu_free_irq(struct arm_pmu *cpu_pmu) | |||
| 103 | 97 | ||
| 104 | irq = platform_get_irq(pmu_device, 0); | 98 | irq = platform_get_irq(pmu_device, 0); |
| 105 | if (irq >= 0 && irq_is_percpu(irq)) { | 99 | if (irq >= 0 && irq_is_percpu(irq)) { |
| 106 | on_each_cpu(cpu_pmu_disable_percpu_irq, cpu_pmu, 1); | 100 | on_each_cpu(cpu_pmu_disable_percpu_irq, &irq, 1); |
| 107 | free_percpu_irq(irq, &percpu_pmu); | 101 | free_percpu_irq(irq, &percpu_pmu); |
| 108 | } else { | 102 | } else { |
| 109 | for (i = 0; i < irqs; ++i) { | 103 | for (i = 0; i < irqs; ++i) { |
| @@ -138,7 +132,7 @@ static int cpu_pmu_request_irq(struct arm_pmu *cpu_pmu, irq_handler_t handler) | |||
| 138 | irq); | 132 | irq); |
| 139 | return err; | 133 | return err; |
| 140 | } | 134 | } |
| 141 | on_each_cpu(cpu_pmu_enable_percpu_irq, cpu_pmu, 1); | 135 | on_each_cpu(cpu_pmu_enable_percpu_irq, &irq, 1); |
| 142 | } else { | 136 | } else { |
| 143 | for (i = 0; i < irqs; ++i) { | 137 | for (i = 0; i < irqs; ++i) { |
| 144 | err = 0; | 138 | err = 0; |
