From 6cdbe63badcb524c88f2c8b3cee08f2ffc099a1b Mon Sep 17 00:00:00 2001 From: Daniel Palmer Date: Fri, 28 Aug 2026 18:49:40 +0900 Subject: [PATCH] m68k: apollo: Fix interrupt setup The user interrupt vector needs to be installed before the interrupts are unmasked otherwise the timer tick isn't handled and boot up gets stuck in calibrate_delay(). Assisted-by: Claude:claude-fable-5 # Wrote Apollo DN3000 emulator using QEMU Fixes: 0aa78106c661cf6c ("[PATCH] m68k: convert apollo irq code") Signed-off-by: Daniel Palmer Reviewed-by: Geert Uytterhoeven Link: https://patch.msgid.link/20260828094940.3882602-1-daniel@0x0f.com Signed-off-by: Geert Uytterhoeven --- arch/m68k/apollo/dn_ints.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arch/m68k/apollo/dn_ints.c b/arch/m68k/apollo/dn_ints.c index ba96a92f8f18..89bfb5aaad9d 100644 --- a/arch/m68k/apollo/dn_ints.c +++ b/arch/m68k/apollo/dn_ints.c @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -11,10 +12,13 @@ static unsigned int apollo_irq_startup(struct irq_data *data) { unsigned int irq = data->irq; + m68k_irq_startup(data); + if (irq < 8) *(volatile unsigned char *)(pica+1) &= ~(1 << irq); else *(volatile unsigned char *)(picb+1) &= ~(1 << (irq - 8)); + return 0; } @@ -26,6 +30,8 @@ static void apollo_irq_shutdown(struct irq_data *data) *(volatile unsigned char *)(pica+1) |= (1 << irq); else *(volatile unsigned char *)(picb+1) |= (1 << (irq - 8)); + + m68k_irq_shutdown(data); } static void apollo_irq_eoi(struct irq_data *data)