diff options
author | Steven Smith <ssmith@xensource.com> | 2006-09-29 14:42:04 +0100 |
---|---|---|
committer | Steven Smith <ssmith@xensource.com> | 2006-09-29 14:42:04 +0100 |
commit | 1e75ea849ed05552525f57e4318876f66ebbc28a (patch) | |
tree | e32976ce8d00c0e4400845defc2c9be52e85a897 /xen/include/asm-x86/hvm/vioapic.h | |
parent | 448496a5e2d50d023a5d2aae9d7f35d90b63d78d (diff) | |
download | xen-1e75ea849ed05552525f57e4318876f66ebbc28a.tar.gz xen-1e75ea849ed05552525f57e4318876f66ebbc28a.tar.bz2 xen-1e75ea849ed05552525f57e4318876f66ebbc28a.zip |
[XEN][HVM] Make sure that the interrupt which event channel events come in
on is level triggered rather than edge triggered, since it's a PCI device.
This is complicated by the possibility that another PCI device could be
on the same interrupt; the workaround is to have two irr registers
for the PIC and APIC, and have qemu and Xen generated interrupts go
into different ones.
This broke the alt_irq stuff. Fortunately, nobody uses that anymore, so
I've removed it.
Signed-off-by: Steven Smith <sos22@cam.ac.uk>
Diffstat (limited to 'xen/include/asm-x86/hvm/vioapic.h')
-rw-r--r-- | xen/include/asm-x86/hvm/vioapic.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/xen/include/asm-x86/hvm/vioapic.h b/xen/include/asm-x86/hvm/vioapic.h index 72c758c133..b5ec7e4597 100644 --- a/xen/include/asm-x86/hvm/vioapic.h +++ b/xen/include/asm-x86/hvm/vioapic.h @@ -88,6 +88,7 @@ typedef union RedirStatus typedef struct hvm_vioapic { uint32_t irr; + uint32_t irr_xen; /* interrupts forced on by the hypervisor. */ uint32_t isr; /* This is used for level trigger */ uint32_t imr; uint32_t ioregsel; @@ -105,6 +106,7 @@ hvm_vioapic_t *hvm_vioapic_init(struct domain *d); void hvm_vioapic_do_irqs_clear(struct domain *d, uint16_t irqs); void hvm_vioapic_do_irqs(struct domain *d, uint16_t irqs); +void hvm_vioapic_set_xen_irq(struct domain *d, int irq, int level); void hvm_vioapic_set_irq(struct domain *d, int irq, int level); int hvm_vioapic_add_lapic(struct vlapic *vlapic, struct vcpu *v); |