[PATCH Dovetail v4 8/8] arm: irq_pipeline: Fix IRQ state checking in trap entry paths
Florian Bezdeka <[email protected]> Tue, 07 Jul 2026 11:50:24 +0200
| Newsgroups | dev.linux.lists.xenomai |
|---|---|
| Message-ID | <20260707-wip-flo-v7-1-arm-pipelining-fixes-v4-8-057b8af5a2ca@siemens.com> |
A couple of trap handlers where checking the hardware IRQ state after inband migration instead of the inband stage state. As we now have arch_kentry_irqs_enabled() available we can migrate all callers. Signed-off-by: Florian Bezdeka <[email protected]> --- arch/arm/kernel/hw_breakpoint.c | 2 +- arch/arm/mm/alignment.c | 2 +- arch/arm/mm/fault.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c index 2ef431f96a6aca9a396f4bb9642e318e9e1712a7..24b35df649becdd2f1976b683f6bb2ed642a00c3 100644 --- a/arch/arm/kernel/hw_breakpoint.c +++ b/arch/arm/kernel/hw_breakpoint.c @@ -951,7 +951,7 @@ static int hw_breakpoint_pending(unsigned long addr, unsigned int fsr, preempt_disable(); - if (interrupts_enabled(regs)) + if (!arch_kentry_test_stalled(regs)) local_irq_enable(); /* We only handle watchpoints and hardware breakpoints. */ diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index 37023b96a468531c026ea5f6c47d25f3d49fd6a7..612db267f6246d5e5ed1c2e9291d51e315aaec25 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c @@ -817,7 +817,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) mark_trap_entry(ARM_TRAP_ALIGNMENT, regs); - if (interrupts_enabled(regs)) + if (!arch_kentry_test_stalled(regs)) local_irq_enable(); instrptr = instruction_pointer(regs); diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index 08ebc043971000fd8d6245bcbb6c170d801c73b3..8f7feb1a228fc12c2d14389f865b13e23d11460d 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -341,7 +341,7 @@ do_kernel_address_page_fault(struct mm_struct *mm, unsigned long addr, * PTE or PTE permission fault. This may happen in exceptional * circumstances and need the fixup tables to be walked. */ - if (interrupts_enabled(regs)) + if (!arch_kentry_test_stalled(regs)) local_irq_enable(); __do_kernel_fault(mm, addr, fsr, regs); -- 2.55.0