From: Ronny Tschüter on 29 Jun 2010 10:50 I use Linux performance counters to trace some performance related events. Unfortunately power:power_start events are not reported on my machine. In /drivers/acpi/processor_idle.c I found three different ways to call a C-state, but only one way (via architectural FFH based C-state and using MONITOR/MWAIT) is currently instrumented. Here is my patch to instrument the remaining two possibilities: diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index b1b3856..08e7c42 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c @@ -43,6 +43,7 @@ #include <linux/clockchips.h> #include <linux/cpuidle.h> #include <linux/irqflags.h> +#include <trace/events/power.h> /* * Include the apic definitions for x86 to have the APIC timer related defines @@ -136,6 +137,7 @@ static void acpi_safe_halt(void) */ smp_mb(); if (!need_resched()) { + trace_power_start(POWER_CSTATE,1); safe_halt(); local_irq_disable(); } @@ -797,6 +799,10 @@ static inline void acpi_idle_do_entry(struct acpi_processor_cx *cx) } else { int unused; /* IO port based C-state */ + trace_power_start(POWER_CSTATE, + cx->type == ACPI_STATE_C1 ? 1 : + cx->type == ACPI_STATE_C2 ? 2 : + 3); inb(cx->address); /* Dummy wait op - must do something useless after P_LVL2 read because chipsets cannot guarantee that STPCLK# signal -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|
Pages: 1 Prev: [PATCH 0/4, v2] x86: enlightenment for ticket spin locks Next: perf: Default PMU ops |