From 58178949ef43320fb7dc9e7c2de5b0c0ddb4cf67 Mon Sep 17 00:00:00 2001 From: Reto Buerki Date: Tue, 12 May 2015 22:07:32 +0200 Subject: [PATCH] hw_x86_64: Make AHCI driver work The assumption that IRQs in the legacy ISA range are always edge-triggered is wrong. For the free-for-use IRQs it depends on the actual device which uses the specific IRQ. Therefore, treat IRQs 9, 10 and 11 as level-triggered. --- repos/base-hw/src/core/include/spec/x86/pic.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/repos/base-hw/src/core/include/spec/x86/pic.h b/repos/base-hw/src/core/include/spec/x86/pic.h index b677c061d..8bfaddc02 100644 --- a/repos/base-hw/src/core/include/spec/x86/pic.h +++ b/repos/base-hw/src/core/include/spec/x86/pic.h @@ -67,7 +67,10 @@ class Genode::Ioapic : public Mmio */ bool _edge_triggered(unsigned const irq) { - return irq <= Board::ISA_IRQ_END || irq > IRTE_COUNT; + if ((irq >= 0 && irq <= 8) || (irq >= 12 && irq <= Board::ISA_IRQ_END)) + return true; + + return false; } /**