diff options
Diffstat (limited to 'arch/x86/kernel/process.c')
| -rw-r--r-- | arch/x86/kernel/process.c | 12 | 
1 files changed, 7 insertions, 5 deletions
| diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index ba4593a913fa..145a7ac0c19a 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -685,7 +685,7 @@ void arch_cpu_idle(void)   */  void __cpuidle default_idle(void)  { -	safe_halt(); +	raw_safe_halt();  }  #if defined(CONFIG_APM_MODULE) || defined(CONFIG_HALTPOLL_CPUIDLE_MODULE)  EXPORT_SYMBOL(default_idle); @@ -736,6 +736,8 @@ void stop_this_cpu(void *dummy)  /*   * AMD Erratum 400 aware idle routine. We handle it the same way as C3 power   * states (local apic timer and TSC stop). + * + * XXX this function is completely buggered vs RCU and tracing.   */  static void amd_e400_idle(void)  { @@ -757,9 +759,9 @@ static void amd_e400_idle(void)  	 * The switch back from broadcast mode needs to be called with  	 * interrupts disabled.  	 */ -	local_irq_disable(); +	raw_local_irq_disable();  	tick_broadcast_exit(); -	local_irq_enable(); +	raw_local_irq_enable();  }  /* @@ -801,9 +803,9 @@ static __cpuidle void mwait_idle(void)  		if (!need_resched())  			__sti_mwait(0, 0);  		else -			local_irq_enable(); +			raw_local_irq_enable();  	} else { -		local_irq_enable(); +		raw_local_irq_enable();  	}  	__current_clr_polling();  } | 
