]> 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)
commit462c65aedfb5e37b6b9cc26eec5f10c53f9f6e35
treeee6396424822299e8a53fdda47921b9fdbed910b
parentf5cffcafbf3e927b3c2801f7e318b7aa1cdc45fc
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