Merge branches 'iommu/fixes', 'arm/mediatek', 'arm/smmu', 'arm/exynos', 'unisoc'...
[linux-2.6-microblaze.git] / drivers / vfio / vfio_iommu_type1.c
index 45cbfd4..3c8048d 100644 (file)
@@ -2262,7 +2262,7 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
        int ret;
        bool resv_msi, msi_remap;
        phys_addr_t resv_msi_base = 0;
-       struct iommu_domain_geometry geo;
+       struct iommu_domain_geometry *geo;
        LIST_HEAD(iova_copy);
        LIST_HEAD(group_resv_regions);
 
@@ -2330,10 +2330,7 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
        }
 
        if (iommu->nesting) {
-               int attr = 1;
-
-               ret = iommu_domain_set_attr(domain->domain, DOMAIN_ATTR_NESTING,
-                                           &attr);
+               ret = iommu_enable_nesting(domain->domain);
                if (ret)
                        goto out_domain;
        }
@@ -2343,10 +2340,9 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
                goto out_domain;
 
        /* Get aperture info */
-       iommu_domain_get_attr(domain->domain, DOMAIN_ATTR_GEOMETRY, &geo);
-
-       if (vfio_iommu_aper_conflict(iommu, geo.aperture_start,
-                                    geo.aperture_end)) {
+       geo = &domain->domain->geometry;
+       if (vfio_iommu_aper_conflict(iommu, geo->aperture_start,
+                                    geo->aperture_end)) {
                ret = -EINVAL;
                goto out_detach;
        }
@@ -2369,8 +2365,8 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
        if (ret)
                goto out_detach;
 
-       ret = vfio_iommu_aper_resize(&iova_copy, geo.aperture_start,
-                                    geo.aperture_end);
+       ret = vfio_iommu_aper_resize(&iova_copy, geo->aperture_start,
+                                    geo->aperture_end);
        if (ret)
                goto out_detach;
 
@@ -2503,7 +2499,6 @@ static void vfio_iommu_aper_expand(struct vfio_iommu *iommu,
                                   struct list_head *iova_copy)
 {
        struct vfio_domain *domain;
-       struct iommu_domain_geometry geo;
        struct vfio_iova *node;
        dma_addr_t start = 0;
        dma_addr_t end = (dma_addr_t)~0;
@@ -2512,12 +2507,12 @@ static void vfio_iommu_aper_expand(struct vfio_iommu *iommu,
                return;
 
        list_for_each_entry(domain, &iommu->domain_list, next) {
-               iommu_domain_get_attr(domain->domain, DOMAIN_ATTR_GEOMETRY,
-                                     &geo);
-               if (geo.aperture_start > start)
-                       start = geo.aperture_start;
-               if (geo.aperture_end < end)
-                       end = geo.aperture_end;
+               struct iommu_domain_geometry *geo = &domain->domain->geometry;
+
+               if (geo->aperture_start > start)
+                       start = geo->aperture_start;
+               if (geo->aperture_end < end)
+                       end = geo->aperture_end;
        }
 
        /* Modify aperture limits. The new aper is either same or bigger */