On Tue, Jun 02, 2026 at 03:26:11PM +0530, Shrikanth Hegde wrote: > > I would suggest trying something a little more focussed like so: > > > > diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c > > index 806c74e0d5ab..b002c179415c 100644 > > --- a/arch/powerpc/mm/fault.c > > +++ b/arch/powerpc/mm/fault.c > > @@ -589,6 +589,7 @@ static __always_inline void __do_page_fault(struct > > pt_regs *regs) > > err = ___do_page_fault(regs, regs->dar, regs->dsisr); > > if (unlikely(err)) > > bad_page_fault(regs, err); > > + local_irq_disable(); > > } > > DEFINE_INTERRUPT_HANDLER(do_page_fault) > > > > Since only ___do_page_fault() will enable interrupts, you only need to > > disable them again on its return path. > > > > Seems there are more... > > do_program_check (called by program_check_exception, > emulation_assist_interrupt) > alignment_exception > SPEFloatingPointException > facility_unavailable_exception > > > Many looks like it can recover only if hit in userspace. > Hence i though it would make sense to put it under arch_interrupt_exit_prepare > which is called just before irqentry_exit.
Ah, fair enough.
