ftrace: disable tracing on acpi idle calls

The acpi idle waits calls local_irq_save and then uses mwait to go into
idle. The tracer gets reenabled at local_irq_save but does not detect that
the idle allows for wake ups.

This patch adds code to disable the tracing when acpi puts the CPU to idle.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

authored by

Steven Rostedt and committed by
Ingo Molnar
dcf30997 1986b0cb

+6
+6
drivers/acpi/processor_idle.c
··· 272 272 /* Common C-state entry for C2, C3, .. */ 273 273 static void acpi_cstate_enter(struct acpi_processor_cx *cstate) 274 274 { 275 + /* Don't trace irqs off for idle */ 276 + stop_critical_timings(); 275 277 if (cstate->entry_method == ACPI_CSTATE_FFH) { 276 278 /* Call into architectural FFH based C-state */ 277 279 acpi_processor_ffh_cstate_enter(cstate); ··· 286 284 gets asserted in time to freeze execution properly. */ 287 285 unused = inl(acpi_gbl_FADT.xpm_timer_block.address); 288 286 } 287 + start_critical_timings(); 289 288 } 290 289 #endif /* !CONFIG_CPU_IDLE */ 291 290 ··· 1421 1418 */ 1422 1419 static inline void acpi_idle_do_entry(struct acpi_processor_cx *cx) 1423 1420 { 1421 + /* Don't trace irqs off for idle */ 1422 + stop_critical_timings(); 1424 1423 if (cx->entry_method == ACPI_CSTATE_FFH) { 1425 1424 /* Call into architectural FFH based C-state */ 1426 1425 acpi_processor_ffh_cstate_enter(cx); ··· 1437 1432 gets asserted in time to freeze execution properly. */ 1438 1433 unused = inl(acpi_gbl_FADT.xpm_timer_block.address); 1439 1434 } 1435 + start_critical_timings(); 1440 1436 } 1441 1437 1442 1438 /**