[PATCH Dovetail v3 6/6] arm: irq_pipeline: Fix IRQ state checking in trap entry paths
Florian Bezdeka <[email protected]> Mon, 22 Jun 2026 10:05:30 +0200
| Newsgroups | dev.linux.lists.xenomai |
|---|---|
| Message-ID | <20260622-wip-flo-v7-1-arm-pipelining-fixes-v3-6-230f03227abb@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 6266380737dd88dca7fe8fde14b786a52ec42635..c94383d8d81da902d9bee1240ad14d91526f70a4 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_irqs_enabled(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..1af7d306fcb1f09497b026e30ad49891ec5a3ff1 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_irqs_enabled(regs)) local_irq_enable(); instrptr = instruction_pointer(regs); diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index 08ebc043971000fd8d6245bcbb6c170d801c73b3..049c2733e695ee4e4a4d228f023c2e0bf755196c 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_irqs_enabled(regs)) local_irq_enable(); __do_kernel_fault(mm, addr, fsr, regs); -- 2.54.0