]> xenbits.xensource.com Git - xen.git/commitdiff
VT-d: conditionalize IOTLB register offset check
authorJan Beulich <jbeulich@suse.com>
Wed, 24 Nov 2021 10:12:44 +0000 (11:12 +0100)
committerJan Beulich <jbeulich@suse.com>
Wed, 24 Nov 2021 10:12:44 +0000 (11:12 +0100)
As of commit 6773b1a7584a ("VT-d: Don't assume register-based
invalidation is always supported") we don't (try to) use register based
invalidation anymore when that's not supported by hardware. Hence
there's also no point in the respective check, avoiding pointless IOMMU
initialization failure. After all the spec (version 3.3 at the time of
writing) doesn't say what the respective Extended Capability Register
field would contain in such a case.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
xen/drivers/passthrough/vtd/iommu.c

index c1bf48cbcb4049020cff333c7af4b45945ac1b6f..b33697e36ba84eb3fdfbd36a1e39220fc3956b27 100644 (file)
@@ -1274,7 +1274,8 @@ int __init iommu_alloc(struct acpi_drhd_unit *drhd)
 
     if ( cap_fault_reg_offset(iommu->cap) +
          cap_num_fault_regs(iommu->cap) * PRIMARY_FAULT_REG_LEN > PAGE_SIZE ||
-         ecap_iotlb_offset(iommu->ecap) >= PAGE_SIZE )
+         (has_register_based_invalidation(iommu) &&
+          ecap_iotlb_offset(iommu->ecap) >= PAGE_SIZE) )
     {
         printk(XENLOG_ERR VTDPREFIX "IOMMU: unsupported\n");
         print_iommu_regs(drhd);