diff options
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/perf_event_v6.c | 30 | ||||
-rw-r--r-- | arch/arm/kernel/perf_event_v7.c | 30 | ||||
-rw-r--r-- | arch/arm/kernel/perf_event_xscale.c | 18 | ||||
-rw-r--r-- | arch/arm/kernel/ptrace.c | 5 | ||||
-rw-r--r-- | arch/arm/kernel/swp_emulate.c | 2 |
5 files changed, 78 insertions, 7 deletions
diff --git a/arch/arm/kernel/perf_event_v6.c b/arch/arm/kernel/perf_event_v6.c index f1e8dd94afe8..dd7f3b9f4cb3 100644 --- a/arch/arm/kernel/perf_event_v6.c +++ b/arch/arm/kernel/perf_event_v6.c | |||
@@ -173,6 +173,20 @@ static const unsigned armv6_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] | |||
173 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | 173 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, |
174 | }, | 174 | }, |
175 | }, | 175 | }, |
176 | [C(NODE)] = { | ||
177 | [C(OP_READ)] = { | ||
178 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
179 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
180 | }, | ||
181 | [C(OP_WRITE)] = { | ||
182 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
183 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
184 | }, | ||
185 | [C(OP_PREFETCH)] = { | ||
186 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
187 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
188 | }, | ||
189 | }, | ||
176 | }; | 190 | }; |
177 | 191 | ||
178 | enum armv6mpcore_perf_types { | 192 | enum armv6mpcore_perf_types { |
@@ -310,6 +324,20 @@ static const unsigned armv6mpcore_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] | |||
310 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | 324 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, |
311 | }, | 325 | }, |
312 | }, | 326 | }, |
327 | [C(NODE)] = { | ||
328 | [C(OP_READ)] = { | ||
329 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
330 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
331 | }, | ||
332 | [C(OP_WRITE)] = { | ||
333 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
334 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
335 | }, | ||
336 | [C(OP_PREFETCH)] = { | ||
337 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
338 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
339 | }, | ||
340 | }, | ||
313 | }; | 341 | }; |
314 | 342 | ||
315 | static inline unsigned long | 343 | static inline unsigned long |
@@ -479,7 +507,7 @@ armv6pmu_handle_irq(int irq_num, | |||
479 | if (!armpmu_event_set_period(event, hwc, idx)) | 507 | if (!armpmu_event_set_period(event, hwc, idx)) |
480 | continue; | 508 | continue; |
481 | 509 | ||
482 | if (perf_event_overflow(event, 0, &data, regs)) | 510 | if (perf_event_overflow(event, &data, regs)) |
483 | armpmu->disable(hwc, idx); | 511 | armpmu->disable(hwc, idx); |
484 | } | 512 | } |
485 | 513 | ||
diff --git a/arch/arm/kernel/perf_event_v7.c b/arch/arm/kernel/perf_event_v7.c index 4960686afb58..e20ca9cafef5 100644 --- a/arch/arm/kernel/perf_event_v7.c +++ b/arch/arm/kernel/perf_event_v7.c | |||
@@ -255,6 +255,20 @@ static const unsigned armv7_a8_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] | |||
255 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | 255 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, |
256 | }, | 256 | }, |
257 | }, | 257 | }, |
258 | [C(NODE)] = { | ||
259 | [C(OP_READ)] = { | ||
260 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
261 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
262 | }, | ||
263 | [C(OP_WRITE)] = { | ||
264 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
265 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
266 | }, | ||
267 | [C(OP_PREFETCH)] = { | ||
268 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
269 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
270 | }, | ||
271 | }, | ||
258 | }; | 272 | }; |
259 | 273 | ||
260 | /* | 274 | /* |
@@ -371,6 +385,20 @@ static const unsigned armv7_a9_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] | |||
371 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | 385 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, |
372 | }, | 386 | }, |
373 | }, | 387 | }, |
388 | [C(NODE)] = { | ||
389 | [C(OP_READ)] = { | ||
390 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
391 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
392 | }, | ||
393 | [C(OP_WRITE)] = { | ||
394 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
395 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
396 | }, | ||
397 | [C(OP_PREFETCH)] = { | ||
398 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
399 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
400 | }, | ||
401 | }, | ||
374 | }; | 402 | }; |
375 | 403 | ||
376 | /* | 404 | /* |
@@ -787,7 +815,7 @@ static irqreturn_t armv7pmu_handle_irq(int irq_num, void *dev) | |||
787 | if (!armpmu_event_set_period(event, hwc, idx)) | 815 | if (!armpmu_event_set_period(event, hwc, idx)) |
788 | continue; | 816 | continue; |
789 | 817 | ||
790 | if (perf_event_overflow(event, 0, &data, regs)) | 818 | if (perf_event_overflow(event, &data, regs)) |
791 | armpmu->disable(hwc, idx); | 819 | armpmu->disable(hwc, idx); |
792 | } | 820 | } |
793 | 821 | ||
diff --git a/arch/arm/kernel/perf_event_xscale.c b/arch/arm/kernel/perf_event_xscale.c index 39affbe4fdb2..3c4397491d08 100644 --- a/arch/arm/kernel/perf_event_xscale.c +++ b/arch/arm/kernel/perf_event_xscale.c | |||
@@ -144,6 +144,20 @@ static const unsigned xscale_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] | |||
144 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | 144 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, |
145 | }, | 145 | }, |
146 | }, | 146 | }, |
147 | [C(NODE)] = { | ||
148 | [C(OP_READ)] = { | ||
149 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
150 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
151 | }, | ||
152 | [C(OP_WRITE)] = { | ||
153 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
154 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
155 | }, | ||
156 | [C(OP_PREFETCH)] = { | ||
157 | [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED, | ||
158 | [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED, | ||
159 | }, | ||
160 | }, | ||
147 | }; | 161 | }; |
148 | 162 | ||
149 | #define XSCALE_PMU_ENABLE 0x001 | 163 | #define XSCALE_PMU_ENABLE 0x001 |
@@ -251,7 +265,7 @@ xscale1pmu_handle_irq(int irq_num, void *dev) | |||
251 | if (!armpmu_event_set_period(event, hwc, idx)) | 265 | if (!armpmu_event_set_period(event, hwc, idx)) |
252 | continue; | 266 | continue; |
253 | 267 | ||
254 | if (perf_event_overflow(event, 0, &data, regs)) | 268 | if (perf_event_overflow(event, &data, regs)) |
255 | armpmu->disable(hwc, idx); | 269 | armpmu->disable(hwc, idx); |
256 | } | 270 | } |
257 | 271 | ||
@@ -583,7 +597,7 @@ xscale2pmu_handle_irq(int irq_num, void *dev) | |||
583 | if (!armpmu_event_set_period(event, hwc, idx)) | 597 | if (!armpmu_event_set_period(event, hwc, idx)) |
584 | continue; | 598 | continue; |
585 | 599 | ||
586 | if (perf_event_overflow(event, 0, &data, regs)) | 600 | if (perf_event_overflow(event, &data, regs)) |
587 | armpmu->disable(hwc, idx); | 601 | armpmu->disable(hwc, idx); |
588 | } | 602 | } |
589 | 603 | ||
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index 97260060bf26..5c199610719f 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
@@ -396,7 +396,7 @@ static long ptrace_hbp_idx_to_num(int idx) | |||
396 | /* | 396 | /* |
397 | * Handle hitting a HW-breakpoint. | 397 | * Handle hitting a HW-breakpoint. |
398 | */ | 398 | */ |
399 | static void ptrace_hbptriggered(struct perf_event *bp, int unused, | 399 | static void ptrace_hbptriggered(struct perf_event *bp, |
400 | struct perf_sample_data *data, | 400 | struct perf_sample_data *data, |
401 | struct pt_regs *regs) | 401 | struct pt_regs *regs) |
402 | { | 402 | { |
@@ -479,7 +479,8 @@ static struct perf_event *ptrace_hbp_create(struct task_struct *tsk, int type) | |||
479 | attr.bp_type = type; | 479 | attr.bp_type = type; |
480 | attr.disabled = 1; | 480 | attr.disabled = 1; |
481 | 481 | ||
482 | return register_user_hw_breakpoint(&attr, ptrace_hbptriggered, tsk); | 482 | return register_user_hw_breakpoint(&attr, ptrace_hbptriggered, NULL, |
483 | tsk); | ||
483 | } | 484 | } |
484 | 485 | ||
485 | static int ptrace_gethbpregs(struct task_struct *tsk, long num, | 486 | static int ptrace_gethbpregs(struct task_struct *tsk, long num, |
diff --git a/arch/arm/kernel/swp_emulate.c b/arch/arm/kernel/swp_emulate.c index 40ee7e5045e4..5f452f8fde05 100644 --- a/arch/arm/kernel/swp_emulate.c +++ b/arch/arm/kernel/swp_emulate.c | |||
@@ -183,7 +183,7 @@ static int swp_handler(struct pt_regs *regs, unsigned int instr) | |||
183 | unsigned int address, destreg, data, type; | 183 | unsigned int address, destreg, data, type; |
184 | unsigned int res = 0; | 184 | unsigned int res = 0; |
185 | 185 | ||
186 | perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, 0, regs, regs->ARM_pc); | 186 | perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, regs, regs->ARM_pc); |
187 | 187 | ||
188 | if (current->pid != previous_pid) { | 188 | if (current->pid != previous_pid) { |
189 | pr_debug("\"%s\" (%ld) uses deprecated SWP{B} instruction\n", | 189 | pr_debug("\"%s\" (%ld) uses deprecated SWP{B} instruction\n", |