diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/acpi/processor_idle.c | 8 | ||||
-rw-r--r-- | drivers/char/sysrq.c | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index 66a9d8145562..7acb23f830ce 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c | |||
@@ -271,8 +271,11 @@ static atomic_t c3_cpu_count; | |||
271 | /* Common C-state entry for C2, C3, .. */ | 271 | /* Common C-state entry for C2, C3, .. */ |
272 | static void acpi_cstate_enter(struct acpi_processor_cx *cstate) | 272 | static void acpi_cstate_enter(struct acpi_processor_cx *cstate) |
273 | { | 273 | { |
274 | u64 perf_flags; | ||
275 | |||
274 | /* Don't trace irqs off for idle */ | 276 | /* Don't trace irqs off for idle */ |
275 | stop_critical_timings(); | 277 | stop_critical_timings(); |
278 | perf_flags = hw_perf_save_disable(); | ||
276 | if (cstate->entry_method == ACPI_CSTATE_FFH) { | 279 | if (cstate->entry_method == ACPI_CSTATE_FFH) { |
277 | /* Call into architectural FFH based C-state */ | 280 | /* Call into architectural FFH based C-state */ |
278 | acpi_processor_ffh_cstate_enter(cstate); | 281 | acpi_processor_ffh_cstate_enter(cstate); |
@@ -285,6 +288,7 @@ static void acpi_cstate_enter(struct acpi_processor_cx *cstate) | |||
285 | gets asserted in time to freeze execution properly. */ | 288 | gets asserted in time to freeze execution properly. */ |
286 | unused = inl(acpi_gbl_FADT.xpm_timer_block.address); | 289 | unused = inl(acpi_gbl_FADT.xpm_timer_block.address); |
287 | } | 290 | } |
291 | hw_perf_restore(perf_flags); | ||
288 | start_critical_timings(); | 292 | start_critical_timings(); |
289 | } | 293 | } |
290 | #endif /* !CONFIG_CPU_IDLE */ | 294 | #endif /* !CONFIG_CPU_IDLE */ |
@@ -1426,8 +1430,11 @@ static inline void acpi_idle_update_bm_rld(struct acpi_processor *pr, | |||
1426 | */ | 1430 | */ |
1427 | static inline void acpi_idle_do_entry(struct acpi_processor_cx *cx) | 1431 | static inline void acpi_idle_do_entry(struct acpi_processor_cx *cx) |
1428 | { | 1432 | { |
1433 | u64 pctrl; | ||
1434 | |||
1429 | /* Don't trace irqs off for idle */ | 1435 | /* Don't trace irqs off for idle */ |
1430 | stop_critical_timings(); | 1436 | stop_critical_timings(); |
1437 | pctrl = hw_perf_save_disable(); | ||
1431 | if (cx->entry_method == ACPI_CSTATE_FFH) { | 1438 | if (cx->entry_method == ACPI_CSTATE_FFH) { |
1432 | /* Call into architectural FFH based C-state */ | 1439 | /* Call into architectural FFH based C-state */ |
1433 | acpi_processor_ffh_cstate_enter(cx); | 1440 | acpi_processor_ffh_cstate_enter(cx); |
@@ -1442,6 +1449,7 @@ static inline void acpi_idle_do_entry(struct acpi_processor_cx *cx) | |||
1442 | gets asserted in time to freeze execution properly. */ | 1449 | gets asserted in time to freeze execution properly. */ |
1443 | unused = inl(acpi_gbl_FADT.xpm_timer_block.address); | 1450 | unused = inl(acpi_gbl_FADT.xpm_timer_block.address); |
1444 | } | 1451 | } |
1452 | hw_perf_restore(pctrl); | ||
1445 | start_critical_timings(); | 1453 | start_critical_timings(); |
1446 | } | 1454 | } |
1447 | 1455 | ||
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c index d41b9f6f7903..5a3eab0882a0 100644 --- a/drivers/char/sysrq.c +++ b/drivers/char/sysrq.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/kbd_kern.h> | 25 | #include <linux/kbd_kern.h> |
26 | #include <linux/proc_fs.h> | 26 | #include <linux/proc_fs.h> |
27 | #include <linux/quotaops.h> | 27 | #include <linux/quotaops.h> |
28 | #include <linux/perf_counter.h> | ||
28 | #include <linux/kernel.h> | 29 | #include <linux/kernel.h> |
29 | #include <linux/module.h> | 30 | #include <linux/module.h> |
30 | #include <linux/suspend.h> | 31 | #include <linux/suspend.h> |
@@ -244,6 +245,7 @@ static void sysrq_handle_showregs(int key, struct tty_struct *tty) | |||
244 | struct pt_regs *regs = get_irq_regs(); | 245 | struct pt_regs *regs = get_irq_regs(); |
245 | if (regs) | 246 | if (regs) |
246 | show_regs(regs); | 247 | show_regs(regs); |
248 | perf_counter_print_debug(); | ||
247 | } | 249 | } |
248 | static struct sysrq_key_op sysrq_showregs_op = { | 250 | static struct sysrq_key_op sysrq_showregs_op = { |
249 | .handler = sysrq_handle_showregs, | 251 | .handler = sysrq_handle_showregs, |