diff options
| author | Len Brown <len.brown@intel.com> | 2011-01-12 18:06:19 -0500 |
|---|---|---|
| committer | Len Brown <len.brown@intel.com> | 2011-01-12 18:06:19 -0500 |
| commit | 43952886f0b8b3c344c3392b88de067d5fa5419a (patch) | |
| tree | c1a738f11a479246c09976902be5b73aaf731722 | |
| parent | 56dbed129df3fdd4caf9018b6e7599ee258a5420 (diff) | |
| parent | f77cfe4ea21760268c0277fa3e4b02dfd2a2c2f4 (diff) | |
Merge branch 'cpuidle-perf-events' into idle-test
| -rw-r--r-- | arch/x86/kernel/process.c | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/process_32.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/process_64.c | 6 | ||||
| -rw-r--r-- | drivers/cpuidle/cpuidle.c | 10 | ||||
| -rw-r--r-- | drivers/idle/intel_idle.c | 2 |
5 files changed, 12 insertions, 16 deletions
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 7c23a0cd3eb9..d8286ed54ffa 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c | |||
| @@ -381,6 +381,8 @@ void default_idle(void) | |||
| 381 | else | 381 | else |
| 382 | local_irq_enable(); | 382 | local_irq_enable(); |
| 383 | current_thread_info()->status |= TS_POLLING; | 383 | current_thread_info()->status |= TS_POLLING; |
| 384 | trace_power_end(smp_processor_id()); | ||
| 385 | trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id()); | ||
| 384 | } else { | 386 | } else { |
| 385 | local_irq_enable(); | 387 | local_irq_enable(); |
| 386 | /* loop is done by the caller */ | 388 | /* loop is done by the caller */ |
| @@ -438,8 +440,6 @@ EXPORT_SYMBOL_GPL(cpu_idle_wait); | |||
| 438 | */ | 440 | */ |
| 439 | void mwait_idle_with_hints(unsigned long ax, unsigned long cx) | 441 | void mwait_idle_with_hints(unsigned long ax, unsigned long cx) |
| 440 | { | 442 | { |
| 441 | trace_power_start(POWER_CSTATE, (ax>>4)+1, smp_processor_id()); | ||
| 442 | trace_cpu_idle((ax>>4)+1, smp_processor_id()); | ||
| 443 | if (!need_resched()) { | 443 | if (!need_resched()) { |
| 444 | if (cpu_has(__this_cpu_ptr(&cpu_info), X86_FEATURE_CLFLUSH_MONITOR)) | 444 | if (cpu_has(__this_cpu_ptr(&cpu_info), X86_FEATURE_CLFLUSH_MONITOR)) |
| 445 | clflush((void *)¤t_thread_info()->flags); | 445 | clflush((void *)¤t_thread_info()->flags); |
| @@ -466,6 +466,8 @@ static void mwait_idle(void) | |||
| 466 | __sti_mwait(0, 0); | 466 | __sti_mwait(0, 0); |
| 467 | else | 467 | else |
| 468 | local_irq_enable(); | 468 | local_irq_enable(); |
| 469 | trace_power_end(smp_processor_id()); | ||
| 470 | trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id()); | ||
| 469 | } else | 471 | } else |
| 470 | local_irq_enable(); | 472 | local_irq_enable(); |
| 471 | } | 473 | } |
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index 4b9befa0e347..8d128783af47 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c | |||
| @@ -57,8 +57,6 @@ | |||
| 57 | #include <asm/syscalls.h> | 57 | #include <asm/syscalls.h> |
| 58 | #include <asm/debugreg.h> | 58 | #include <asm/debugreg.h> |
| 59 | 59 | ||
| 60 | #include <trace/events/power.h> | ||
| 61 | |||
| 62 | asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); | 60 | asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); |
| 63 | 61 | ||
| 64 | /* | 62 | /* |
| @@ -113,8 +111,6 @@ void cpu_idle(void) | |||
| 113 | stop_critical_timings(); | 111 | stop_critical_timings(); |
| 114 | pm_idle(); | 112 | pm_idle(); |
| 115 | start_critical_timings(); | 113 | start_critical_timings(); |
| 116 | trace_power_end(smp_processor_id()); | ||
| 117 | trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id()); | ||
| 118 | } | 114 | } |
| 119 | tick_nohz_restart_sched_tick(); | 115 | tick_nohz_restart_sched_tick(); |
| 120 | preempt_enable_no_resched(); | 116 | preempt_enable_no_resched(); |
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 4c818a738396..bd387e8f73b4 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
| @@ -51,8 +51,6 @@ | |||
| 51 | #include <asm/syscalls.h> | 51 | #include <asm/syscalls.h> |
| 52 | #include <asm/debugreg.h> | 52 | #include <asm/debugreg.h> |
| 53 | 53 | ||
| 54 | #include <trace/events/power.h> | ||
| 55 | |||
| 56 | asmlinkage extern void ret_from_fork(void); | 54 | asmlinkage extern void ret_from_fork(void); |
| 57 | 55 | ||
| 58 | DEFINE_PER_CPU(unsigned long, old_rsp); | 56 | DEFINE_PER_CPU(unsigned long, old_rsp); |
| @@ -141,10 +139,6 @@ void cpu_idle(void) | |||
| 141 | pm_idle(); | 139 | pm_idle(); |
| 142 | start_critical_timings(); | 140 | start_critical_timings(); |
| 143 | 141 | ||
| 144 | trace_power_end(smp_processor_id()); | ||
| 145 | trace_cpu_idle(PWR_EVENT_EXIT, | ||
| 146 | smp_processor_id()); | ||
| 147 | |||
| 148 | /* In many cases the interrupt that ended idle | 142 | /* In many cases the interrupt that ended idle |
| 149 | has already called exit_idle. But some idle | 143 | has already called exit_idle. But some idle |
| 150 | loops can be woken up without interrupt. */ | 144 | loops can be woken up without interrupt. */ |
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index a2d5b95a6d64..bf5092455a8f 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c | |||
| @@ -96,7 +96,15 @@ static void cpuidle_idle_call(void) | |||
| 96 | 96 | ||
| 97 | /* enter the state and update stats */ | 97 | /* enter the state and update stats */ |
| 98 | dev->last_state = target_state; | 98 | dev->last_state = target_state; |
| 99 | |||
| 100 | trace_power_start(POWER_CSTATE, next_state, dev->cpu); | ||
| 101 | trace_cpu_idle(next_state, dev->cpu); | ||
| 102 | |||
| 99 | dev->last_residency = target_state->enter(dev, target_state); | 103 | dev->last_residency = target_state->enter(dev, target_state); |
| 104 | |||
| 105 | trace_power_end(dev->cpu); | ||
| 106 | trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu); | ||
| 107 | |||
| 100 | if (dev->last_state) | 108 | if (dev->last_state) |
| 101 | target_state = dev->last_state; | 109 | target_state = dev->last_state; |
| 102 | 110 | ||
| @@ -106,8 +114,6 @@ static void cpuidle_idle_call(void) | |||
| 106 | /* give the governor an opportunity to reflect on the outcome */ | 114 | /* give the governor an opportunity to reflect on the outcome */ |
| 107 | if (cpuidle_curr_governor->reflect) | 115 | if (cpuidle_curr_governor->reflect) |
| 108 | cpuidle_curr_governor->reflect(dev); | 116 | cpuidle_curr_governor->reflect(dev); |
| 109 | trace_power_end(smp_processor_id()); | ||
| 110 | trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id()); | ||
| 111 | } | 117 | } |
| 112 | 118 | ||
| 113 | /** | 119 | /** |
diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c index d14585b2e045..7acb32e7f817 100644 --- a/drivers/idle/intel_idle.c +++ b/drivers/idle/intel_idle.c | |||
| @@ -231,8 +231,6 @@ static int intel_idle(struct cpuidle_device *dev, struct cpuidle_state *state) | |||
| 231 | kt_before = ktime_get_real(); | 231 | kt_before = ktime_get_real(); |
| 232 | 232 | ||
| 233 | stop_critical_timings(); | 233 | stop_critical_timings(); |
| 234 | trace_power_start(POWER_CSTATE, (eax >> 4) + 1, cpu); | ||
| 235 | trace_cpu_idle((eax >> 4) + 1, cpu); | ||
| 236 | if (!need_resched()) { | 234 | if (!need_resched()) { |
| 237 | 235 | ||
| 238 | __monitor((void *)¤t_thread_info()->flags, 0, 0); | 236 | __monitor((void *)¤t_thread_info()->flags, 0, 0); |
