SPEFloatingPointException() is the only exception handler which 'forgets' to
re-enable interrupts. This patch makes sure it does.
Suggested-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
        int code = FPE_FLTUNK;
        int err;
 
+       /* We restore the interrupt state now */
+       if (!arch_irq_disabled_regs(regs))
+               local_irq_enable();
+
        flush_spe_to_thread(current);
 
        spefscr = current->thread.spefscr;
        extern int speround_handler(struct pt_regs *regs);
        int err;
 
+       /* We restore the interrupt state now */
+       if (!arch_irq_disabled_regs(regs))
+               local_irq_enable();
+
        preempt_disable();
        if (regs->msr & MSR_SPE)
                giveup_spe(current);