All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH Dovetail] arm: irq_pipeline: Fix IRQ state checking in do_page_fault()
@ 2026-09-29 20:55 Florian Bezdeka
  2026-10-15 10:19 ` Philippe Gerum
  0 siblings, 1 reply; 3+ messages in thread
From: Florian Bezdeka @ 2026-09-29 20:55 UTC (permalink / raw)
  To: xenomai; +Cc: Florian Bezdeka, Philippe Gerum, Jan Kiszka

When correcting some fault handlers in the patch series referenced below
one call site was missed. That is corrected now.

do_page_fault() migrates to the inband stage and enabled the inband IRQs
depending on the hardware state. Instead, we have to check if the inband
stage was stalled on kernel entry.

Link: https://lore.kernel.org/xenomai/20260610-wip-flo-v7-1-arm-pipelining-fixes-v2-6-62c9c477f8f2@siemens.com/
Signed-off-by: Florian Bezdeka <florian.bezdeka@siemens.com>
---
Found while scanning the code for necessary 7.3-rc adjustments.

To: xenomai@lists.linux.dev
Cc: Philippe Gerum <rpm@xenomai.org>
Cc: Jan Kiszka <jan.kiszka@siemens.com>
---
 arch/arm/mm/fault.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index 8f7feb1a228fc12c2d14389f865b13e23d11460d..91d0afe7985d55b424009cc29d8f3343cfca90fd 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -376,7 +376,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
 	irqflags = dovetail_fault_entry(ARM_TRAP_ACCESS, regs);
 
 	/* Enable interrupts if they were enabled in the parent context. */
-	if (interrupts_enabled(regs))
+	if (!arch_kentry_test_stalled(regs))
 		local_irq_enable();
 
 	/*

---
base-commit: 58e8e0f74c2b20f6228b7d327ec2e955ffd5b491
change-id: 20260929-wip-flo-7-2-arm-pipeline-fix-939fc6370fb2

Best regards,
-- 
Florian Bezdeka <florian.bezdeka@siemens.com>


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH Dovetail] arm: irq_pipeline: Fix IRQ state checking in do_page_fault()
  2026-09-29 20:55 [PATCH Dovetail] arm: irq_pipeline: Fix IRQ state checking in do_page_fault() Florian Bezdeka
@ 2026-10-15 10:19 ` Philippe Gerum
  2026-10-15 10:31   ` Florian Bezdeka
  0 siblings, 1 reply; 3+ messages in thread
From: Philippe Gerum @ 2026-10-15 10:19 UTC (permalink / raw)
  To: Florian Bezdeka; +Cc: xenomai, Jan Kiszka

Florian Bezdeka <florian.bezdeka@siemens.com> writes:

> When correcting some fault handlers in the patch series referenced below
> one call site was missed. That is corrected now.
>
> do_page_fault() migrates to the inband stage and enabled the inband IRQs
> depending on the hardware state. Instead, we have to check if the inband
> stage was stalled on kernel entry.
>
> Link: https://lore.kernel.org/xenomai/20260610-wip-flo-v7-1-arm-pipelining-fixes-v2-6-62c9c477f8f2@siemens.com/
> Signed-off-by: Florian Bezdeka <florian.bezdeka@siemens.com>
> ---
> Found while scanning the code for necessary 7.3-rc adjustments.
>
> To: xenomai@lists.linux.dev
> Cc: Philippe Gerum <rpm@xenomai.org>
> Cc: Jan Kiszka <jan.kiszka@siemens.com>
> ---
>  arch/arm/mm/fault.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
> index 8f7feb1a228fc12c2d14389f865b13e23d11460d..91d0afe7985d55b424009cc29d8f3343cfca90fd 100644
> --- a/arch/arm/mm/fault.c
> +++ b/arch/arm/mm/fault.c
> @@ -376,7 +376,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
>  	irqflags = dovetail_fault_entry(ARM_TRAP_ACCESS, regs);
>  
>  	/* Enable interrupts if they were enabled in the parent context. */
> -	if (interrupts_enabled(regs))
> +	if (!arch_kentry_test_stalled(regs))
>  		local_irq_enable();
>  
>  	/*
>
> ---
> base-commit: 58e8e0f74c2b20f6228b7d327ec2e955ffd5b491
> change-id: 20260929-wip-flo-7-2-arm-pipeline-fix-939fc6370fb2
>
> Best regards,

This patch [1] uncovered an issue with the series introducing
dovetail_fault_entry() and friends. Fixed by that patch [2] living in
next/evl-6.12.y-cip-evl for now, on top of a backport of the series
mentioned above. Tests look ok so far, I'll update all the affected
branches next.

[1] https://lore.kernel.org/xenomai/20260929-wip-flo-7-2-arm-pipeline-fix-v1-1-300c70cfae7f@siemens.com/T/#u
[2] https://gitlab.com/Xenomai/xenomai4/linux-evl/-/commit/020af735209333b180993f03534baf078fcddfb9

-- 
Philippe.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH Dovetail] arm: irq_pipeline: Fix IRQ state checking in do_page_fault()
  2026-10-15 10:19 ` Philippe Gerum
@ 2026-10-15 10:31   ` Florian Bezdeka
  0 siblings, 0 replies; 3+ messages in thread
From: Florian Bezdeka @ 2026-10-15 10:31 UTC (permalink / raw)
  To: Philippe Gerum; +Cc: xenomai, Jan Kiszka

On Thu, 2026-10-15 at 12:19 +0200, Philippe Gerum wrote:
> Florian Bezdeka <florian.bezdeka@siemens.com> writes:
> 
> > When correcting some fault handlers in the patch series referenced below
> > one call site was missed. That is corrected now.
> > 
> > do_page_fault() migrates to the inband stage and enabled the inband IRQs
> > depending on the hardware state. Instead, we have to check if the inband
> > stage was stalled on kernel entry.
> > 
> > Link: https://lore.kernel.org/xenomai/20260610-wip-flo-v7-1-arm-pipelining-fixes-v2-6-62c9c477f8f2@siemens.com/
> > Signed-off-by: Florian Bezdeka <florian.bezdeka@siemens.com>
> > ---
> > Found while scanning the code for necessary 7.3-rc adjustments.
> > 
> > To: xenomai@lists.linux.dev
> > Cc: Philippe Gerum <rpm@xenomai.org>
> > Cc: Jan Kiszka <jan.kiszka@siemens.com>
> > ---
> >  arch/arm/mm/fault.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
> > index 8f7feb1a228fc12c2d14389f865b13e23d11460d..91d0afe7985d55b424009cc29d8f3343cfca90fd 100644
> > --- a/arch/arm/mm/fault.c
> > +++ b/arch/arm/mm/fault.c
> > @@ -376,7 +376,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
> >  	irqflags = dovetail_fault_entry(ARM_TRAP_ACCESS, regs);
> >  
> >  	/* Enable interrupts if they were enabled in the parent context. */
> > -	if (interrupts_enabled(regs))
> > +	if (!arch_kentry_test_stalled(regs))
> >  		local_irq_enable();
> >  
> >  	/*
> > 
> > ---
> > base-commit: 58e8e0f74c2b20f6228b7d327ec2e955ffd5b491
> > change-id: 20260929-wip-flo-7-2-arm-pipeline-fix-939fc6370fb2
> > 
> > Best regards,
> 
> This patch [1] uncovered an issue with the series introducing
> dovetail_fault_entry() and friends. Fixed by that patch [2] living in
> next/evl-6.12.y-cip-evl for now, on top of a backport of the series
> mentioned above. Tests look ok so far, I'll update all the affected
> branches next.
> 
> [1] https://lore.kernel.org/xenomai/20260929-wip-flo-7-2-arm-pipeline-fix-v1-1-300c70cfae7f@siemens.com/T/#u
> [2] https://gitlab.com/Xenomai/xenomai4/linux-evl/-/commit/020af735209333b180993f03534baf078fcddfb9

Thanks for debugging this!

I have to go an check why my testing did not reveal that.

I will combine [1], this patch and [2] in a new version of the patch
series. I will publish that once I applied it on top of 7.3 - as soon as
I have 7.3 available...

PS: I'm currently rebasing against latest 7.2 stable releases. Having
fun with arm64 right now...

Best regards,
Florian

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-10-15 10:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-29 20:55 [PATCH Dovetail] arm: irq_pipeline: Fix IRQ state checking in do_page_fault() Florian Bezdeka
2026-10-15 10:19 ` Philippe Gerum
2026-10-15 10:31   ` Florian Bezdeka

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.