All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shrikanth Hegde <sshegde@linux.ibm.com>
To: Mukesh Kumar Chaurasiya <mkchauras@gmail.com>,
	Venkat Rao Bagalkote <venkat88@linux.ibm.com>
Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, npiggin@gmail.com,
	chleroy@kernel.org, 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: Wed, 19 Aug 2026 16:22:31 +0530	[thread overview]
Message-ID: <d9c19203-a9d8-4815-9f60-97e7411976e4@linux.ibm.com> (raw)
In-Reply-To: <aoVrvjiSMmEDbwIF@li-1a3e774c-28e4-11b2-a85c-acc9f2883e29.ibm.com>



On 8/19/26 2:16 PM, Mukesh Kumar Chaurasiya wrote:
> On Wed, Aug 19, 2026 at 11:24:40AM +0530, Venkat Rao Bagalkote wrote:
>>
> [...]
>>> 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;
>>>    	/*
>>>
>> Hello Mukesh,
>>
>> With the proposed change, I still the issue.
>>
>> [    0.742633] ------------[ cut here ]------------
>> [    0.742633] WARNING: arch/powerpc/kernel/irq_64.c:75 at
>> __replay_soft_interrupts+0x104/0x220, CPU#6: swapper/0/1
>> [    0.742637] Modules linked in:
>> [    0.742638] CPU: 6 UID: 0 PID: 1 Comm: swapper/0 Tainted: G   W
>>   7.2.0-rc7-dirty #25 PREEMPT
>> [    0.742639] Tainted: [W]=WARN
>> [    0.742640] Hardware name: IBM,9080-HEX Power11 (architected) 0x820200
>> 0xf000007 of:IBM,FW1110.01 (NH1110_069) hv:phyp pSeries
>> [    0.742641] NIP:  c00000000003a384 LR: c00000000003a360 CTR:
>> c000000000029f00
>> [    0.742642] REGS: c000000009757410 TRAP: 0700   Tainted: G W
>> (7.2.0-rc7-dirty)
>> [    0.742643] MSR:  8000000002021033 <SF,VEC,ME,IR,DR,RI,LE> CR: 88024824
>> XER: 00000003
>> [    0.742646] CFAR: c00000000002a708 IRQMASK: 1
>> [    0.742646] GPR00: c00000000003a360 c0000000097576b0 c000000001b28100
>> c0000000097576d8
>> [    0.742646] GPR04: 0000000000000000 0000000000000001 c00000000968d200
>> c0000000096eb200
>> [    0.742646] GPR08: 0000000000000001 0000000000000041 0000000000000001
>> 000000002c1b8100
>> [    0.742646] GPR12: c000000000029f00 c0000005ffff8f00 0000000000000000
>> c00000000968d200
>> [    0.742646] GPR16: c000000002f3aaf8 0000000000000000 c00000000284e138
>> 0000000000000000
>> [    0.742646] GPR20: c00000000303aaf8 c00000000303ade8 0000000000000001
>> 0000000000000000
>> [    0.742646] GPR24: c00000000303ae08 0000000000000000 0000000000000000
>> 0000000000000002
>> [    0.742646] GPR28: 0000000000000003 fcffffffffffffff fcffffffffffffff
>> c00000000968d200
>> [    0.742662] NIP [c00000000003a384] __replay_soft_interrupts+0x104/0x220
>> [    0.742665] LR [c00000000003a360] __replay_soft_interrupts+0xe0/0x220
>> [    0.742668] Call Trace:
>> [    0.742668] [c0000000097576b0] [c00000000003a360]
>> __replay_soft_interrupts+0xe0/0x220 (unreliable)
>> [    0.742672] [c000000009757860] [c00000000003a694]
>> arch_local_irq_restore+0x1f4/0x2d8
>> [    0.742675] [c0000000097578b0] [c0000000002face0]
>> console_flush_all+0x3ec/0x558
>> [    0.742676] [c000000009757a00] [c0000000002faee4]
>> console_unlock+0x98/0x1d8
>> [    0.742678] [c000000009757a80] [c0000000002fc698]
>> vprintk_emit+0x2c0/0x3f4
>> [    0.742680] [c000000009757af0] [c0000000002fdc70] vprintk+0x30/0x7c
>> [    0.742682] [c000000009757b10] [c0000000002f6c78] _printk+0x3c/0x50
>> [    0.742683] [c000000009757b30] [c00000000205d814]
>> load_system_certificate_list+0x24/0x5c
>> [    0.742685] [c000000009757b90] [c00000000001111c]
>> do_one_initcall+0x5c/0x3f0
>> [    0.742687] [c000000009757c70] [c00000000200684c]
>> do_initcalls+0x11c/0x270
>> [    0.742689] [c000000009757d30] [c000000002006c78]
>> kernel_init_freeable+0x228/0x3c0
>> [    0.742690] [c000000009757de0] [c000000000011600] kernel_init+0x30/0x260
>>
>> [    0.742692] [c000000009757e50] [c00000000000df7c]
>> ret_from_kernel_user_thread+0x14/0x1c
>>
>>
>> Regards,
>>
>> Venkat.
>>
> 
> Hey Venkat,
> Thanks for verifying.
> 
> The regs.softe = IRQS_DISABLED change only prevents
> irqentry_exit_cond_resched() preemption path from running — it does nothing
> about PACA_IRQ_HARD_DIS being cleared by the handler and not restored.
> hard_irq_disable() fixes both: it atomically sets PACA_IRQ_HARD_DIS, sets
> irq_soft_mask = IRQS_ALL_DISABLED, and clears MSR[EE], leaving a fully
> consistent disabled state that next_interrupt() expects, regardless of
> which entry path (idle wakeup or irqrestore) triggered the replay.
> 
> To answer's shrikanth question
> it worked before because there was literally no interrupt-disabling code
> on the handler exit path during replay. The new GENERIC_ENTRY
> infrastructure brought a real exit sequence with it, and that sequence
> needs hard_irq_disable() — not local_irq_disable() — to keep PPC64's
> two-level interrupt state (irq_soft_mask + PACA_IRQ_HARD_DIS) consistent.
> 
> Hey Madhavan,
> I think we are ok with this patch if there are no more objections from
> anyone.
> 

Venkat,

Can you collect vmcore with panic on warning enabled?

It maybe nested replay of soft interrupts which maybe causing problems 
here. We should see the regs state.

> Regards,
> Mukesh



  reply	other threads:[~2026-08-19 10:53 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-12 15:20 [PATCH] powerpc/entry: Use hard_irq_disable() in arch_interrupt_exit_prepare() 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
2026-08-14  5:36 ` Shrikanth Hegde
2026-08-14  6:12   ` Mukesh Kumar Chaurasiya
2026-08-15  4:57     ` Mukesh Kumar Chaurasiya
2026-08-19  5:54       ` Venkat Rao Bagalkote
2026-08-19  8:46         ` Mukesh Kumar Chaurasiya
2026-08-19 10:52           ` Shrikanth Hegde [this message]
2026-08-20  4:53             ` 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=d9c19203-a9d8-4815-9f60-97e7411976e4@linux.ibm.com \
    --to=sshegde@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=venkat88@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.