From b902d5ed720e1573abed935dd5d26e2798fed94d Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Thu, 22 Nov 2012 15:18:17 +0100 Subject: [PATCH] FOC: Change interrupt mode heuristic Don't touch interrupts modes for IRQs below 16 if not explicitly requested. Fixes issue #512 --- base-foc/src/core/x86/platform_x86.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/base-foc/src/core/x86/platform_x86.cc b/base-foc/src/core/x86/platform_x86.cc index 65fc402b7..7adeed887 100644 --- a/base-foc/src/core/x86/platform_x86.cc +++ b/base-foc/src/core/x86/platform_x86.cc @@ -51,9 +51,14 @@ void Genode::Platform::setup_irq_mode(unsigned irq_number, unsigned trigger, { using namespace Fiasco; + /* don't touch anything below IRQ 16 in the default case */ + if (irq_number < 16 && trigger == Irq_session::TRIGGER_UNCHANGED && + polarity == Irq_session::TRIGGER_UNCHANGED) + return; + /* * Translate ACPI interrupt mode (trigger/polarity) to Fiasco APIC - * values. Default is edge/high for IRQs < 16 and level low for IRQs > 16 + * values. Default is level low for IRQs > 15 */ l4_umword_t mode; mode = (trigger == Irq_session::TRIGGER_LEVEL) ||