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>
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");