> In previous version IRQ was lowered every time if enable bits were > not set. If platform has splitted IRQ source to pass IRQ to two > identical GICs simultaneously in first of which IRQ passing is > enabled but in second is disabled, handling IRQ by second GIC would > lower IRQ previously raised by first GIC. > Linux kernel v3.0 faces this problem. > The problem is avoided if IRQ is only lowered as result of > transitioning enable bits to zeroes.
This is almost certainly wrong. IRQ lines are state based, not event based. Re-asserting an existing level should always be a no-op. My guess is your real bug it that your IRQ wiring is broken, and you have multiple outputs connected to a single input. Don't do that. Ever. If you need to connent multiple output pins to a single input pin then you need an explicit device (e.g. an or gate) in between. Paul