aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/hvm/vioapic.h
diff options
context:
space:
mode:
authorSteven Smith <ssmith@xensource.com>2006-09-29 14:42:04 +0100
committerSteven Smith <ssmith@xensource.com>2006-09-29 14:42:04 +0100
commit1e75ea849ed05552525f57e4318876f66ebbc28a (patch)
treee32976ce8d00c0e4400845defc2c9be52e85a897 /xen/include/asm-x86/hvm/vioapic.h
parent448496a5e2d50d023a5d2aae9d7f35d90b63d78d (diff)
downloadxen-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.h2
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);