Merge tag 'iommu-updates-v6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/joro...
[sfrench/cifs-2.6.git] / drivers / iommu / intel / dmar.c
index 23828d189c2a609cff3145afd951faae6bdee17c..a3414afe11b07e832dcc195169ed6b7816a015d4 100644 (file)
@@ -127,8 +127,6 @@ dmar_alloc_pci_notify_info(struct pci_dev *dev, unsigned long event)
        struct pci_dev *tmp;
        struct dmar_pci_notify_info *info;
 
-       BUG_ON(dev->is_virtfn);
-
        /*
         * Ignore devices that have a domain number higher than what can
         * be looked up in DMAR, e.g. VMD subdevices with domain 0x10000
@@ -264,7 +262,8 @@ int dmar_insert_dev_scope(struct dmar_pci_notify_info *info,
                                                   get_device(dev));
                                return 1;
                        }
-               BUG_ON(i >= devices_cnt);
+               if (WARN_ON(i >= devices_cnt))
+                       return -EINVAL;
        }
 
        return 0;
@@ -993,8 +992,6 @@ static int map_iommu(struct intel_iommu *iommu, struct dmar_drhd_unit *drhd)
                warn_invalid_dmar(phys_addr, " returns all ones");
                goto unmap;
        }
-       if (ecap_vcs(iommu->ecap))
-               iommu->vccap = dmar_readq(iommu->reg + DMAR_VCCAP_REG);
 
        /* the registers might be more than one page */
        map_size = max_t(int, ecap_max_iotlb_offset(iommu->ecap),
@@ -1690,7 +1687,7 @@ static void __dmar_enable_qi(struct intel_iommu *iommu)
         * is present.
         */
        if (ecap_smts(iommu->ecap))
-               val |= (1 << 11) | 1;
+               val |= BIT_ULL(11) | BIT_ULL(0);
 
        raw_spin_lock_irqsave(&iommu->register_lock, flags);
 
@@ -1961,7 +1958,7 @@ static int dmar_fault_do_one(struct intel_iommu *iommu, int type,
                return 0;
        }
 
-       if (pasid == INVALID_IOASID)
+       if (pasid == IOMMU_PASID_INVALID)
                pr_err("[%s NO_PASID] Request device [%02x:%02x.%d] fault addr 0x%llx [fault reason 0x%02x] %s\n",
                       type ? "DMA Read" : "DMA Write",
                       source_id >> 8, PCI_SLOT(source_id & 0xFF),
@@ -2042,7 +2039,7 @@ irqreturn_t dmar_fault(int irq, void *dev_id)
                if (!ratelimited)
                        /* Using pasid -1 if pasid is not present */
                        dmar_fault_do_one(iommu, type, fault_reason,
-                                         pasid_present ? pasid : INVALID_IOASID,
+                                         pasid_present ? pasid : IOMMU_PASID_INVALID,
                                          source_id, guest_addr);
 
                fault_index++;