aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/process.c
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2011-01-12 18:06:06 -0500
committerLen Brown <len.brown@intel.com>2011-01-12 18:06:06 -0500
commit56dbed129df3fdd4caf9018b6e7599ee258a5420 (patch)
treeb902491aef3a99efe0d9d49edd0f6e414dba654f /arch/x86/kernel/process.c
parent2a2d31c8dc6f1ebcf5eab1d93a0cb0fb4ed57c7c (diff)
parentf878133bf022717b880d0e0995b8f91436fd605c (diff)
Merge branch 'linus' into idle-test
Diffstat (limited to 'arch/x86/kernel/process.c')
-rw-r--r--arch/x86/kernel/process.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index b6472153e45..7c23a0cd3eb 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -86,8 +86,7 @@ void exit_thread(void)
86void show_regs(struct pt_regs *regs) 86void show_regs(struct pt_regs *regs)
87{ 87{
88 show_registers(regs); 88 show_registers(regs);
89 show_trace(NULL, regs, (unsigned long *)kernel_stack_pointer(regs), 89 show_trace(NULL, regs, (unsigned long *)kernel_stack_pointer(regs));
90 regs->bp);
91} 90}
92 91
93void show_regs_common(void) 92void show_regs_common(void)
@@ -369,6 +368,7 @@ void default_idle(void)
369{ 368{
370 if (hlt_use_halt()) { 369 if (hlt_use_halt()) {
371 trace_power_start(POWER_CSTATE, 1, smp_processor_id()); 370 trace_power_start(POWER_CSTATE, 1, smp_processor_id());
371 trace_cpu_idle(1, smp_processor_id());
372 current_thread_info()->status &= ~TS_POLLING; 372 current_thread_info()->status &= ~TS_POLLING;
373 /* 373 /*
374 * TS_POLLING-cleared state must be visible before we 374 * TS_POLLING-cleared state must be visible before we
@@ -439,8 +439,9 @@ EXPORT_SYMBOL_GPL(cpu_idle_wait);
439void mwait_idle_with_hints(unsigned long ax, unsigned long cx) 439void mwait_idle_with_hints(unsigned long ax, unsigned long cx)
440{ 440{
441 trace_power_start(POWER_CSTATE, (ax>>4)+1, smp_processor_id()); 441 trace_power_start(POWER_CSTATE, (ax>>4)+1, smp_processor_id());
442 trace_cpu_idle((ax>>4)+1, smp_processor_id());
442 if (!need_resched()) { 443 if (!need_resched()) {
443 if (cpu_has(&current_cpu_data, X86_FEATURE_CLFLUSH_MONITOR)) 444 if (cpu_has(__this_cpu_ptr(&cpu_info), X86_FEATURE_CLFLUSH_MONITOR))
444 clflush((void *)&current_thread_info()->flags); 445 clflush((void *)&current_thread_info()->flags);
445 446
446 __monitor((void *)&current_thread_info()->flags, 0, 0); 447 __monitor((void *)&current_thread_info()->flags, 0, 0);
@@ -455,7 +456,8 @@ static void mwait_idle(void)
455{ 456{
456 if (!need_resched()) { 457 if (!need_resched()) {
457 trace_power_start(POWER_CSTATE, 1, smp_processor_id()); 458 trace_power_start(POWER_CSTATE, 1, smp_processor_id());
458 if (cpu_has(&current_cpu_data, X86_FEATURE_CLFLUSH_MONITOR)) 459 trace_cpu_idle(1, smp_processor_id());
460 if (cpu_has(__this_cpu_ptr(&cpu_info), X86_FEATURE_CLFLUSH_MONITOR))
459 clflush((void *)&current_thread_info()->flags); 461 clflush((void *)&current_thread_info()->flags);
460 462
461 __monitor((void *)&current_thread_info()->flags, 0, 0); 463 __monitor((void *)&current_thread_info()->flags, 0, 0);
@@ -476,10 +478,12 @@ static void mwait_idle(void)
476static void poll_idle(void) 478static void poll_idle(void)
477{ 479{
478 trace_power_start(POWER_CSTATE, 0, smp_processor_id()); 480 trace_power_start(POWER_CSTATE, 0, smp_processor_id());
481 trace_cpu_idle(0, smp_processor_id());
479 local_irq_enable(); 482 local_irq_enable();
480 while (!need_resched()) 483 while (!need_resched())
481 cpu_relax(); 484 cpu_relax();
482 trace_power_end(0); 485 trace_power_end(smp_processor_id());
486 trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
483} 487}
484 488
485/* 489/*