diff options
Diffstat (limited to 'arch/powerpc/platforms/cell/pervasive.c')
| -rw-r--r-- | arch/powerpc/platforms/cell/pervasive.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/powerpc/platforms/cell/pervasive.c b/arch/powerpc/platforms/cell/pervasive.c index efdacc82957..d17e98bc0c1 100644 --- a/arch/powerpc/platforms/cell/pervasive.c +++ b/arch/powerpc/platforms/cell/pervasive.c @@ -42,11 +42,9 @@ static void cbe_power_save(void)  {  	unsigned long ctrl, thread_switch_control; -	/* -	 * We need to hard disable interrupts, the local_irq_enable() done by -	 * our caller upon return will hard re-enable. -	 */ -	hard_irq_disable(); +	/* Ensure our interrupt state is properly tracked */ +	if (!prep_irq_for_idle()) +		return;  	ctrl = mfspr(SPRN_CTRLF); @@ -81,6 +79,9 @@ static void cbe_power_save(void)  	 */  	ctrl &= ~(CTRL_RUNLATCH | CTRL_TE);  	mtspr(SPRN_CTRLT, ctrl); + +	/* Re-enable interrupts in MSR */ +	__hard_irq_enable();  }  static int cbe_system_reset_exception(struct pt_regs *regs)  | 
