aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/acpi/processor_idle.c8
-rw-r--r--drivers/char/sysrq.c2
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, .. */
272static void acpi_cstate_enter(struct acpi_processor_cx *cstate) 272static 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 */
1427static inline void acpi_idle_do_entry(struct acpi_processor_cx *cx) 1431static 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}
248static struct sysrq_key_op sysrq_showregs_op = { 250static struct sysrq_key_op sysrq_showregs_op = {
249 .handler = sysrq_handle_showregs, 251 .handler = sysrq_handle_showregs,