]> Projects (at) Tadryanom (dot) Me - AdrOS.git/commit
fix: add IOAPIC route for IRQ 15 (secondary ATA channel)
authorTulio A M Mendes <[email protected]>
Fri, 13 Feb 2026 08:22:35 +0000 (05:22 -0300)
committerTulio A M Mendes <[email protected]>
Fri, 13 Feb 2026 08:22:35 +0000 (05:22 -0300)
commit640347bb92215d41df23c147caf0e513b0329544
treeb03f696a9c4e3d526bf04616de60b361008e33ba
parent49c7b8e63ad31b13c6a3ad0040d0c444a9b6942c
fix: add IOAPIC route for IRQ 15 (secondary ATA channel)

The secondary ATA channel (IRQ 15, vector 47) was not routed through
the IOAPIC. After the multi-drive ATA refactor, ata_pio_init() probes
the secondary channel, which can generate IRQ 15 (e.g. IDENTIFY to
QEMU's ATAPI CD-ROM). Without a proper IOAPIC route:

1. The interrupt was lost (PIC disabled, IOAPIC not routing it)
2. The IOAPIC pin 15 remained in an undefined state
3. Depending on timing, this could cause spurious behavior

This was the likely root cause of intermittent kernel panics/reboots
when booting without the 'ring3' cmdline flag — the timing difference
meant the secondary ATA probe's unhandled IRQ could manifest as an
unrecoverable interrupt state.

Build: clean, cppcheck: clean, smoke: 19/19 pass
src/arch/x86/arch_platform.c