Merge tag 'v6.2' into iommufd.git for-next
authorJason Gunthorpe <jgg@nvidia.com>
Tue, 21 Feb 2023 15:11:03 +0000 (11:11 -0400)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 21 Feb 2023 15:11:03 +0000 (11:11 -0400)
Resolve conflicts from the signature change in iommu_map:

 - drivers/infiniband/hw/usnic/usnic_uiom.c
   Switch iommu_map_atomic() to iommu_map(.., GFP_ATOMIC)

 - drivers/vfio/vfio_iommu_type1.c
   Following indenting change for GFP_KERNEL

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
1  2 
drivers/infiniband/hw/usnic/usnic_uiom.c
drivers/iommu/iommu.c
drivers/vfio/vfio_iommu_type1.c
kernel/irq/irqdomain.c
kernel/irq/msi.c

index aeeaca65ace96ac782e5a6f4149116da7e0f6b55,a2857accc4273e374e07e50473e66df0c19d5f80..2a5cac2658eccb81d22fe85763297ec89bd0385f
@@@ -276,8 -276,8 +276,8 @@@ iter_chunk
                                size = pa_end - pa_start + PAGE_SIZE;
                                usnic_dbg("va 0x%lx pa %pa size 0x%zx flags 0x%x",
                                        va_start, &pa_start, size, flags);
 -                              err = iommu_map_atomic(pd->domain, va_start,
 -                                                     pa_start, size, flags);
 +                              err = iommu_map(pd->domain, va_start, pa_start,
-                                               size, flags, GFP_KERNEL);
++                                              size, flags, GFP_ATOMIC);
                                if (err) {
                                        usnic_err("Failed to map va 0x%lx pa %pa size 0x%zx with err %d\n",
                                                va_start, &pa_start, size, err);
                                size = pa - pa_start + PAGE_SIZE;
                                usnic_dbg("va 0x%lx pa %pa size 0x%zx flags 0x%x\n",
                                        va_start, &pa_start, size, flags);
 -                              err = iommu_map_atomic(pd->domain, va_start,
 -                                                     pa_start, size, flags);
 +                              err = iommu_map(pd->domain, va_start, pa_start,
-                                               size, flags, GFP_KERNEL);
++                                              size, flags, GFP_ATOMIC);
                                if (err) {
                                        usnic_err("Failed to map va 0x%lx pa %pa size 0x%zx with err %d\n",
                                                va_start, &pa_start, size, err);
Simple merge
index 7bea5594bc4598572170a1071ddc97dd060b2f87,2209372f236dbb84d1b77c335c3acbe3d9584e82..a44ac3fe657c04ff4cf145980ee6f6b4b7aa76ef
@@@ -1865,15 -1867,22 +1867,22 @@@ static void vfio_test_domain_fgsp(struc
        if (!pages)
                return;
  
-       ret = iommu_map(domain->domain, 0, page_to_phys(pages), PAGE_SIZE * 2,
-                       IOMMU_READ | IOMMU_WRITE | IOMMU_CACHE, GFP_KERNEL);
-       if (!ret) {
-               size_t unmapped = iommu_unmap(domain->domain, 0, PAGE_SIZE);
+       list_for_each_entry(region, regions, list) {
+               start = ALIGN(region->start, PAGE_SIZE * 2);
+               if (start >= region->end || (region->end - start < PAGE_SIZE * 2))
+                       continue;
  
-               if (unmapped == PAGE_SIZE)
-                       iommu_unmap(domain->domain, PAGE_SIZE, PAGE_SIZE);
-               else
-                       domain->fgsp = true;
+               ret = iommu_map(domain->domain, start, page_to_phys(pages), PAGE_SIZE * 2,
 -                              IOMMU_READ | IOMMU_WRITE | IOMMU_CACHE);
++                              IOMMU_READ | IOMMU_WRITE | IOMMU_CACHE, GFP_KERNEL);
+               if (!ret) {
+                       size_t unmapped = iommu_unmap(domain->domain, start, PAGE_SIZE);
+                       if (unmapped == PAGE_SIZE)
+                               iommu_unmap(domain->domain, start + PAGE_SIZE, PAGE_SIZE);
+                       else
+                               domain->fgsp = true;
+               }
+               break;
        }
  
        __free_pages(pages, order);
Simple merge
Simple merge