From: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
To: "Christophe Leroy (CS GROUP)" <chleroy@kernel.org>,
"Mukesh Kumar Chaurasiya (IBM)" <mkchauras@gmail.com>,
maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com,
sshegde@linux.ibm.com, mchauras@linux.ibm.com,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] powerpc/entry: Use hard_irq_disable() in arch_interrupt_exit_prepare()
Date: Thu, 13 Aug 2026 13:29:41 +0530 [thread overview]
Message-ID: <47a762fc-40da-4df2-be3a-8f4ab1ca1093@linux.ibm.com> (raw)
In-Reply-To: <4e0d3ccc-04b2-41a7-b498-a7f55c18d596@kernel.org>
On 13/08/26 12:12 pm, Christophe Leroy (CS GROUP) wrote:
>
>
> Le 13/08/2026 à 08:36, Venkat Rao Bagalkote a écrit :
>>
>> On 12/08/26 8:50 pm, Mukesh Kumar Chaurasiya (IBM) wrote:
>>> commit 334f3f6d7a16 ("powerpc/entry: Disable interrupts before
>>> irqentry_exit")
>>> fixed a BUG in preempt_schedule_irq() by calling local_irq_disable()
>>> unconditionally in arch_interrupt_exit_prepare() before
>>> irqentry_exit().
>>> The fix is correct in intent but uses the wrong primitive for PPC64.
>>>
>>> On PPC64, local_irq_disable() only sets the soft-mask
>>> (irq_soft_mask = IRQS_DISABLED). It does not set PACA_IRQ_HARD_DIS in
>>> irq_happened and does not clear MSR[EE].
>>>
>>> This causes a continuous WARN_ON boot hang on Power11 pSeries LPARs
>>> using the dedicated-cede cpuidle path. When the CPU wakes from H_CEDE,
>>> interrupt_exit_kernel_prepare() calls replay_soft_interrupts(), which
>>> dispatches pending async handlers (timer_interrupt, do_IRQ) using the
>>> DEFINE_INTERRUPT_HANDLER_ASYNC macro. That macro calls
>>> arch_interrupt_async_exit_prepare() -> arch_interrupt_exit_prepare()
>>> before irqentry_exit(). With local_irq_disable(), PACA_IRQ_HARD_DIS
>>> is not set, but next_interrupt() unconditionally asserts it:
>>>
>>> WARN_ON(!(local_paca->irq_happened & PACA_IRQ_HARD_DIS));
>>>
>>> This fires on every replayed interrupt, looping indefinitely and
>>> preventing boot completion.
>>>
>>> Fix this by replacing local_irq_disable() with hard_irq_disable().
>>> On PPC64, hard_irq_disable() sets irq_soft_mask to IRQS_ALL_DISABLED,
>>> sets PACA_IRQ_HARD_DIS in irq_happened, and clears MSR[EE] — satisfying
>>> all of:
>>>
>>> - lockdep_assert_irqs_disabled() in irqentry_exit_to_kernel_mode()
>>> - next_interrupt()'s WARN_ON(!(irq_happened & PACA_IRQ_HARD_DIS))
>>> - preempt_schedule_irq()'s BUG_ON(!irqs_disabled())
>>>
>>> On PPC32/non-64, hard_irq_disable() is equivalent to
>>> local_irq_disable(),
>>> so there is no regression on those platforms.
>>>
>>> Fixes: 334f3f6d7a16 ("powerpc/entry: Disable interrupts before
>>> irqentry_exit")
>>> Reported-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
>>> Closes: https://eur01.safelinks.protection.outlook.com/?
>>> url=https%3A%2F%2Flore.kernel.org%2Fall%2F6f9bfb0f-b14c-468e-bb9f-
>>> c157d120d0dc%40linux.ibm.com%2F&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7Cf780f6a2abcf425c875808def90533e4%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639221997929524168%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=kOer%2B610LkQs0ZKBn%2FutIB6j1bMoFasK4DmX4AEWOXA%3D&reserved=0
>>>
>>> Signed-off-by: Mukesh Kumar Chaurasiya (IBM) <mkchauras@gmail.com>
>>> ---
>>
>>
>> Tested this, and it fixes the reported issue.
>>
>> Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
>
> Didn't you say yesterday [1] that the change doesn't fix the issue ?
> Did I miss something ?
>
> [1]
> https://lore.kernel.org/all/2f7e6c34-7258-4b20-a38e-cedebccb835f@linux.ibm.com/
>
>
>
Hi Christophe,
I think there are two separate issues being mixed together here, both of
which were reported by me.
The first issue is the early boot hang. I tested the patch in that
context and reported that the boot hang still persisted.
The second issue is the WARN in __replay_soft_interrupts(). For that
issue, the same patch fixes the problem, which is why I provided the
Tested-by tag.
I believe the confusion comes from the fact that the same patch ended up
being discussed in relation to both reports. My earlier comment that the
patch did not fix the issue was referring to the boot hang, while my
Tested-by was for the WARN in __replay_soft_interrupts().
So, to clarify:
Boot hang issue: not fixed by the patch.
WARN in __replay_soft_interrupts(): fixed by the patch.
Regards,
Venkat
>>
>>
>> Regards,
>>
>> Venkat.
>>
>>
>>> arch/powerpc/include/asm/entry-common.h | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/arch/powerpc/include/asm/entry-common.h b/arch/powerpc/
>>> include/asm/entry-common.h
>>> index c5adb5006361..de64389b0815 100644
>>> --- a/arch/powerpc/include/asm/entry-common.h
>>> +++ b/arch/powerpc/include/asm/entry-common.h
>>> @@ -270,7 +270,7 @@ static inline void
>>> arch_interrupt_exit_prepare(struct pt_regs *regs)
>>> }
>>> /* irqentry_exit expects to be called with interrupts disabled */
>>> - local_irq_disable();
>>> + hard_irq_disable();
>>> }
>>> static inline void arch_interrupt_async_enter_prepare(struct
>>> pt_regs *regs)
>
next prev parent reply other threads:[~2026-08-13 8:00 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-12 15:20 Mukesh Kumar Chaurasiya (IBM)
2026-08-13 6:36 ` Venkat Rao Bagalkote
2026-08-13 6:42 ` Christophe Leroy (CS GROUP)
2026-08-13 7:59 ` Venkat Rao Bagalkote [this message]
2026-08-14 5:36 ` Shrikanth Hegde
2026-08-14 6:12 ` Mukesh Kumar Chaurasiya
2026-08-15 4:57 ` Mukesh Kumar Chaurasiya
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47a762fc-40da-4df2-be3a-8f4ab1ca1093@linux.ibm.com \
--to=venkat88@linux.ibm.com \
--cc=chleroy@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mchauras@linux.ibm.com \
--cc=mkchauras@gmail.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=sshegde@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®