[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] vtd: only enable Interrupt Remapping if Queued Invalidation is also enabled.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1237540255 0
# Node ID abb87a8387acbfd80a9e3475206f392db12e9c5e
# Parent  e5bed83d5180a37126ae60c3e7a43a5aff382b69
vtd: only enable Interrupt Remapping if Queued Invalidation is also enabled.

If Queued Invalidation is not supported or not enabled, we should not
enable Interrupt Remapping even if HW supports it, because Interrupt
Remapping needs Queued Invalidation to invalidate Interrupt Remapping
Cache.

Signed-off-by: Dexuan Cui <dexuan.cui@xxxxxxxxx>
---
 xen/drivers/passthrough/vtd/iommu.c |    8 ++++++++
 1 files changed, 8 insertions(+)

diff -r e5bed83d5180 -r abb87a8387ac xen/drivers/passthrough/vtd/iommu.c
--- a/xen/drivers/passthrough/vtd/iommu.c       Fri Mar 20 08:59:47 2009 +0000
+++ b/xen/drivers/passthrough/vtd/iommu.c       Fri Mar 20 09:10:55 2009 +0000
@@ -1782,6 +1782,14 @@ int intel_vtd_setup(void)
         if ( iommu_intremap && !ecap_intr_remap(iommu->ecap) )
             iommu_intremap = 0;
     }
+
+    if ( !iommu_qinval && iommu_intremap )
+    {
+        iommu_intremap = 0;
+        gdprintk(XENLOG_WARNING VTDPREFIX, "Interrupt Remapping disabled "
+            "since Queued Invalidation isn't supported or enabled.\n");
+    }
+
 #define P(p,s) printk("Intel VT-d %s %ssupported.\n", s, (p)? "" : "not ")
     P(iommu_snoop, "Snoop Control");
     P(iommu_passthrough, "DMA Passthrough");

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.