diff --git a/arch/powerpc/platforms/cell/pervasive.c b/arch/powerpc/platforms/cell/pervasive.c index c68fabdc7874cb287a4f45fa7cbed60b532244a1..8c20f0fb8651f23b204f455bbf75a23581bef746 100644 --- a/arch/powerpc/platforms/cell/pervasive.c +++ b/arch/powerpc/platforms/cell/pervasive.c @@ -41,6 +41,15 @@ static void cbe_power_save(void) { unsigned long ctrl, thread_switch_control; + + /* + * We need to hard disable interrupts, but we also need to mark them + * hard disabled in the PACA so that the local_irq_enable() done by + * our caller upon return propertly hard enables. + */ + hard_irq_disable(); + get_paca()->hard_enabled = 0; + ctrl = mfspr(SPRN_CTRLF); /* Enable DEC and EE interrupt request */