FOC: Change interrupt mode heuristic

Don't touch interrupts modes for IRQs below 16 if not explicitly requested.

Fixes issue #512
This commit is contained in:
Sebastian Sumpf 2012-11-22 15:18:17 +01:00 committed by Norman Feske
parent 5f81705488
commit b902d5ed72

View File

@ -51,9 +51,14 @@ void Genode::Platform::setup_irq_mode(unsigned irq_number, unsigned trigger,
{ {
using namespace Fiasco; 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 * 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; l4_umword_t mode;
mode = (trigger == Irq_session::TRIGGER_LEVEL) || mode = (trigger == Irq_session::TRIGGER_LEVEL) ||