Allow level-triggered interrupt sources. While this isn't

precisely emulated, it is good enough for the single consumer
i.e. irq4, the serial port on Linux.
This commit is contained in:
Peter Grehan 2013-09-06 05:55:43 +00:00
parent 1338ab601f
commit 841caa4090

View file

@ -101,13 +101,13 @@ ioapic_set_pinstate(struct vmctx *ctx, int pin, bool newstate)
* XXX
* We only deal with:
* - edge triggered interrupts
* - physical destination mode
* - fixed delivery mode
* Level-triggered sources will work so long as their is
* no sharing.
*/
low = ioapic->redtbl[pin];
high = ioapic->redtbl[pin] >> 32;
if ((low & IOART_INTMASK) == IOART_INTMCLR &&
(low & IOART_TRGRMOD) == IOART_TRGREDG &&
(low & IOART_DESTMOD) == IOART_DESTPHY &&
(low & IOART_DELMOD) == IOART_DELFIXED) {
vector = low & IOART_INTVEC;