Re: [PATCH v5 0/8] Generic IRQ entry/exit support for powerpc
From: Mukesh Kumar Chaurasiya <hidden>
Date: 2026-07-07 06:05:37
Also in:
lkml
Subsystem:
linux for powerpc (32-bit and 64-bit), the rest · Maintainers:
Madhavan Srinivasan, Michael Ellerman, Linus Torvalds
On Sun, Jul 05, 2026 at 08:00:21PM +0200, Andreas Schwab wrote:
Most of the time it prints nothing, and when it prints something it is mostly scrolled out. .handle_softirqs+0xcc/0x264 .do_softirq_own_stack+0x30/0x38 .__irq_exit_rcu++0x7c/0x120 .timer_interrupt+90x1ß9/0x2c4 decrementer_common_virt+9x214/0x22ß -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different."
Hey, Thanks for reporting this. I don't have a powermacG5 to test this. Can you try out the below diff and check whether this fixes the issue? Please note this is not a proper fix, I just want to understand the issue so that i can make a proper fix. Regards, Mukesh
diff --git a/arch/powerpc/include/asm/entry-common.h b/arch/powerpc/include/asm/entry-common.h
index fc636c42e89a..b6373bae4524 100644
--- a/arch/powerpc/include/asm/entry-common.h
+++ b/arch/powerpc/include/asm/entry-common.h@@ -286,14 +286,6 @@ static inline void arch_interrupt_async_enter_prepare(struct pt_regs *regs) static inline void arch_interrupt_async_exit_prepare(struct pt_regs *regs) { - /* - * Adjust at exit so the main handler sees the true NIA. This must - * come before irq_exit() because irq_exit can enable interrupts, and - * if another interrupt is taken before nap_adjust_return has run - * here, then that interrupt would return directly to idle nap return. - */ - nap_adjust_return(regs); - arch_interrupt_exit_prepare(regs); }
diff --git a/arch/powerpc/include/asm/interrupt.h b/arch/powerpc/include/asm/interrupt.h
index fb42a664ae54..1b45a49e9bed 100644
--- a/arch/powerpc/include/asm/interrupt.h
+++ b/arch/powerpc/include/asm/interrupt.h@@ -246,6 +246,7 @@ interrupt_handler void func(struct pt_regs *regs) \ instrumentation_begin(); \ irq_enter_rcu(); \ ____##func (regs); \ + nap_adjust_return(regs); \ irq_exit_rcu(); \ instrumentation_end(); \ arch_interrupt_async_exit_prepare(regs); \