ia64/xen-unstable

changeset 19418:abb87a8387ac

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@intel.com>
author Keir Fraser <keir.fraser@citrix.com>
date Fri Mar 20 09:10:55 2009 +0000 (2009-03-20)
parents e5bed83d5180
children bbfcea821a0d
files xen/drivers/passthrough/vtd/iommu.c
line diff
     1.1 --- a/xen/drivers/passthrough/vtd/iommu.c	Fri Mar 20 08:59:47 2009 +0000
     1.2 +++ b/xen/drivers/passthrough/vtd/iommu.c	Fri Mar 20 09:10:55 2009 +0000
     1.3 @@ -1782,6 +1782,14 @@ int intel_vtd_setup(void)
     1.4          if ( iommu_intremap && !ecap_intr_remap(iommu->ecap) )
     1.5              iommu_intremap = 0;
     1.6      }
     1.7 +
     1.8 +    if ( !iommu_qinval && iommu_intremap )
     1.9 +    {
    1.10 +        iommu_intremap = 0;
    1.11 +        gdprintk(XENLOG_WARNING VTDPREFIX, "Interrupt Remapping disabled "
    1.12 +            "since Queued Invalidation isn't supported or enabled.\n");
    1.13 +    }
    1.14 +
    1.15  #define P(p,s) printk("Intel VT-d %s %ssupported.\n", s, (p)? "" : "not ")
    1.16      P(iommu_snoop, "Snoop Control");
    1.17      P(iommu_passthrough, "DMA Passthrough");