Merge tag 'linux-can-next-for-4.6-20160226' of git://git.kernel.org/pub/scm/linux...
[cascardo/linux.git] / drivers / iommu / dmar.c
index 80e3c17..fb092f3 100644 (file)
@@ -1063,13 +1063,19 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)
 
        raw_spin_lock_init(&iommu->register_lock);
 
-       drhd->iommu = iommu;
-
-       if (intel_iommu_enabled)
+       if (intel_iommu_enabled) {
                iommu->iommu_dev = iommu_device_create(NULL, iommu,
                                                       intel_iommu_groups,
                                                       "%s", iommu->name);
 
+               if (IS_ERR(iommu->iommu_dev)) {
+                       err = PTR_ERR(iommu->iommu_dev);
+                       goto err_unmap;
+               }
+       }
+
+       drhd->iommu = iommu;
+
        return 0;
 
 err_unmap:
@@ -1347,7 +1353,7 @@ void dmar_disable_qi(struct intel_iommu *iommu)
 
        raw_spin_lock_irqsave(&iommu->register_lock, flags);
 
-       sts =  dmar_readq(iommu->reg + DMAR_GSTS_REG);
+       sts =  readl(iommu->reg + DMAR_GSTS_REG);
        if (!(sts & DMA_GSTS_QIES))
                goto end;