]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
BackMerge tag 'v7.0-rc6' into drm-next
authorDave Airlie <airlied@redhat.com>
Mon, 30 Mar 2026 21:47:05 +0000 (07:47 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 30 Mar 2026 21:51:02 +0000 (07:51 +1000)
Linux 7.0-rc6

Requested by a few people on irc to resolve conflicts in other tress.

Signed-off-by: Dave Airlie <airlied@redhat.com>
12 files changed:
1  2 
MAINTAINERS
drivers/accel/ivpu/ivpu_drv.h
drivers/gpu/drm/drm_gem_shmem_helper.c
drivers/gpu/drm/drm_mode_config.c
drivers/gpu/drm/i915/display/intel_display.c
drivers/gpu/drm/i915/display/intel_display_types.h
drivers/gpu/drm/i915/display/intel_dp_tunnel.c
drivers/gpu/drm/i915/display/intel_gmbus.c
drivers/gpu/drm/i915/display/intel_psr.c
drivers/gpu/drm/imagination/pvr_power.c
drivers/gpu/drm/mediatek/mtk_dsi.c
drivers/vfio/pci/vfio_pci_dmabuf.c

diff --cc MAINTAINERS
Simple merge
Simple merge
index 4500deef41278c9a2ef7a8e8c2751b93bff224eb,c549293b5bb6115938b6cd6a454b04974668a507..2062ca607833036f13ccde65dfc5738977d4fb4f
@@@ -574,39 -574,33 +578,38 @@@ static vm_fault_t drm_gem_shmem_any_fau
  {
        struct vm_area_struct *vma = vmf->vma;
        struct drm_gem_object *obj = vma->vm_private_data;
 +      struct drm_device *dev = obj->dev;
        struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
        loff_t num_pages = obj->size >> PAGE_SHIFT;
 -      vm_fault_t ret;
 +      vm_fault_t ret = VM_FAULT_SIGBUS;
        struct page **pages = shmem->pages;
 -      pgoff_t page_offset;
 +      pgoff_t page_offset = vmf->pgoff - vma->vm_pgoff; /* page offset within VMA */
 +      struct page *page;
 +      struct folio *folio;
        unsigned long pfn;
  
 -      /* Offset to faulty address in the VMA. */
 -      page_offset = vmf->pgoff - vma->vm_pgoff;
+       if (order && order != PMD_ORDER)
+               return VM_FAULT_FALLBACK;
 +      dma_resv_lock(obj->resv, NULL);
  
 -      dma_resv_lock(shmem->base.resv, NULL);
 +      if (page_offset >= num_pages || drm_WARN_ON_ONCE(dev, !shmem->pages) ||
 +          shmem->madv < 0)
 +              goto out;
  
 -      if (page_offset >= num_pages ||
 -          drm_WARN_ON_ONCE(obj->dev, !shmem->pages) ||
 -          shmem->madv < 0) {
 -              ret = VM_FAULT_SIGBUS;
 +      page = pages[page_offset];
 +      if (drm_WARN_ON_ONCE(dev, !page))
                goto out;
 -      }
 +      folio = page_folio(page);
 +
 +      pfn = page_to_pfn(page);
  
-       if (folio_test_pmd_mappable(folio))
-               ret = drm_gem_shmem_try_insert_pfn_pmd(vmf, pfn);
-       if (ret != VM_FAULT_NOPAGE)
-               ret = vmf_insert_pfn(vma, vmf->address, pfn);
 -      pfn = page_to_pfn(pages[page_offset]);
+       ret = try_insert_pfn(vmf, order, pfn);
 +      if (ret == VM_FAULT_NOPAGE)
 +              folio_mark_accessed(folio);
  
 - out:
 -      dma_resv_unlock(shmem->base.resv);
 +out:
 +      dma_resv_unlock(obj->resv);
  
        return ret;
  }
@@@ -645,29 -644,13 +653,32 @@@ static void drm_gem_shmem_vm_close(stru
        drm_gem_vm_close(vma);
  }
  
 +static vm_fault_t drm_gem_shmem_pfn_mkwrite(struct vm_fault *vmf)
 +{
 +      struct vm_area_struct *vma = vmf->vma;
 +      struct drm_gem_object *obj = vma->vm_private_data;
 +      struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
 +      loff_t num_pages = obj->size >> PAGE_SHIFT;
 +      pgoff_t page_offset = vmf->pgoff - vma->vm_pgoff; /* page offset within VMA */
 +
 +      if (drm_WARN_ON(obj->dev, !shmem->pages || page_offset >= num_pages))
 +              return VM_FAULT_SIGBUS;
 +
 +      file_update_time(vma->vm_file);
 +
 +      folio_mark_dirty(page_folio(shmem->pages[page_offset]));
 +
 +      return 0;
 +}
 +
  const struct vm_operations_struct drm_gem_shmem_vm_ops = {
        .fault = drm_gem_shmem_fault,
+ #ifdef CONFIG_ARCH_SUPPORTS_PMD_PFNMAP
+       .huge_fault = drm_gem_shmem_any_fault,
+ #endif
        .open = drm_gem_shmem_vm_open,
        .close = drm_gem_shmem_vm_close,
 +      .pfn_mkwrite = drm_gem_shmem_pfn_mkwrite,
  };
  EXPORT_SYMBOL_GPL(drm_gem_shmem_vm_ops);
  
Simple merge
Simple merge
Simple merge