aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/vpic.c
diff options
context:
space:
mode:
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-09-18 16:09:19 +0100
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>2007-09-18 16:09:19 +0100
commit7b3cb5e541601bc0d41bc92b53451bbed11a35a8 (patch)
treebda87ca8510da194028f1b669f0fae1b28a544c5 /xen/arch/x86/hvm/vpic.c
parent2af556c077ab270134bb6ab54456165ff6eab015 (diff)
downloadxen-7b3cb5e541601bc0d41bc92b53451bbed11a35a8.tar.gz
xen-7b3cb5e541601bc0d41bc92b53451bbed11a35a8.tar.bz2
xen-7b3cb5e541601bc0d41bc92b53451bbed11a35a8.zip
IRQ injection changes for HVM PCI passthru.
Signed-off-by: Allen Kay <allen.m.kay@intel.com> Signed-off-by: Guy Zana <guy@neocleus.com>
Diffstat (limited to 'xen/arch/x86/hvm/vpic.c')
-rw-r--r--xen/arch/x86/hvm/vpic.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/xen/arch/x86/hvm/vpic.c b/xen/arch/x86/hvm/vpic.c
index 46ab18fc46..1ac08320fa 100644
--- a/xen/arch/x86/hvm/vpic.c
+++ b/xen/arch/x86/hvm/vpic.c
@@ -182,8 +182,7 @@ static void vpic_ioport_write(
vpic_lock(vpic);
- addr &= 1;
- if ( addr == 0 )
+ if ( (addr & 1) == 0 )
{
if ( val & 0x10 )
{
@@ -250,6 +249,11 @@ static void vpic_ioport_write(
vpic->isr &= ~(1 << irq);
if ( cmd == 7 )
vpic->priority_add = (irq + 1) & 7;
+ if ( vtd_enabled )
+ {
+ irq |= ((addr & 0xa0) == 0xa0) ? 8 : 0;
+ hvm_dpci_eoi(hvm_isa_irq_to_gsi(irq), NULL);
+ }
break;
case 6: /* Set Priority */
vpic->priority_add = (val + 1) & 7;