summaryrefslogtreecommitdiffstats
path: root/usr.sbin/bhyve/ioapic.c
diff options
context:
space:
mode:
authorgrehan <grehan@FreeBSD.org>2013-09-06 05:55:43 +0000
committergrehan <grehan@FreeBSD.org>2013-09-06 05:55:43 +0000
commitb669765ba2f25c8728a64074b58066017eff9e5f (patch)
tree79fc1b81ba6f4c675ddc3fdb1a57959b11c638a9 /usr.sbin/bhyve/ioapic.c
parent1d24f8b2c76c5013cd5b2e661fb0f035fba19a5c (diff)
downloadFreeBSD-src-b669765ba2f25c8728a64074b58066017eff9e5f.zip
FreeBSD-src-b669765ba2f25c8728a64074b58066017eff9e5f.tar.gz
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.
Diffstat (limited to 'usr.sbin/bhyve/ioapic.c')
-rw-r--r--usr.sbin/bhyve/ioapic.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/usr.sbin/bhyve/ioapic.c b/usr.sbin/bhyve/ioapic.c
index c712692..114b446 100644
--- a/usr.sbin/bhyve/ioapic.c
+++ b/usr.sbin/bhyve/ioapic.c
@@ -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;
OpenPOWER on IntegriCloud