Re: [PATCH] powerpc/entry: Use hard_irq_disable() in arch_interrupt_exit_prepare()

Mukesh Kumar Chaurasiya <[email protected]>
Newsgroups org.ozlabs.lists.linuxppc-dev,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Fri, Aug 14, 2026 at 11:42:22AM +0530, Mukesh Kumar Chaurasiya wrote:
> On Fri, Aug 14, 2026 at 11:06:43AM +0530, Shrikanth Hegde wrote:
> [...]
> > This is good explanation, but what i not understanding is,
> > 
> > why pattern of setting PACA_IRQ_HARD_DIS changed?
> > Previous code at interrupt_exit_kernel_prepare which did local_irq_disable too.
> > 
> > Please check where was PACA_IRQ_HARD_DIS set without GENERIC_ENTRY which was preventing
> > this from happening?
> 
> That's an excellent point. I think we are looking at this incorrectly,
> If this is related to the nested soft replay interrupt than this whole 
> dynamics changes, local_irq_disable will work for the actual interrupt
> but when we go nested something is telling that the nested interrupt
> that interrupts are enabled. Let me look at this more deeply.
> 
> Regards,
> Mukesh

Hey Venkat,

Can you try this diff,

diff --git a/arch/powerpc/kernel/irq_64.c b/arch/powerpc/kernel/irq_64.c
index d5c48d1b0a31..2fbfebef74fe 100644
--- a/arch/powerpc/kernel/irq_64.c
+++ b/arch/powerpc/kernel/irq_64.c
@@ -117,7 +117,7 @@ static __no_kcsan void __replay_soft_interrupts(void)
 	local_paca->irq_happened |= PACA_IRQ_REPLAYING;
 
 	ppc_save_regs(&regs);
-	regs.softe = IRQS_ENABLED;
+	regs.softe = IRQS_DISABLED;
 	regs.msr |= MSR_EE;
 
 	/*
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.