Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'drm-misc-next-fixes-2026-04-09' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next

Short summary of fixes pull:

dma-buf:
- fence: fix docs for dma_fence_unlock_irqrestore()

fb-helper:
- unlock in error path

gem-shmem:
- fix PMD write update

gem-vram:
- remove obsolete documentation

ivpu:
- fix device-recovery handling

Signed-off-by: Dave Airlie <airlied@redhat.com>

From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patch.msgid.link/20260409113921.GA181028@linux.fritz.box

+45 -22
+6
drivers/accel/ivpu/ivpu_pm.c
··· 221 221 222 222 abort: 223 223 atomic_set(&vdev->job_timeout_counter, 0); 224 + 225 + if (vdev->fw->sched_mode == VPU_SCHEDULING_MODE_OS) { 226 + ivpu_pm_trigger_recovery(vdev, "Job timeout"); 227 + return; 228 + } 229 + 224 230 ivpu_jsm_state_dump(vdev); 225 231 ivpu_dev_coredump(vdev); 226 232 queue_work(system_percpu_wq, &vdev->context_abort_work);
+3 -1
drivers/gpu/drm/drm_fb_helper.c
··· 1627 1627 drm_client_modeset_probe(&fb_helper->client, width, height); 1628 1628 1629 1629 info = drm_fb_helper_alloc_info(fb_helper); 1630 - if (IS_ERR(info)) 1630 + if (IS_ERR(info)) { 1631 + mutex_unlock(&fb_helper->lock); 1631 1632 return PTR_ERR(info); 1633 + } 1632 1634 1633 1635 ret = drm_fb_helper_single_fb_probe(fb_helper); 1634 1636 if (ret < 0) {
+32 -14
drivers/gpu/drm/drm_gem_shmem_helper.c
··· 554 554 } 555 555 EXPORT_SYMBOL_GPL(drm_gem_shmem_dumb_create); 556 556 557 + static void drm_gem_shmem_record_mkwrite(struct vm_fault *vmf) 558 + { 559 + struct vm_area_struct *vma = vmf->vma; 560 + struct drm_gem_object *obj = vma->vm_private_data; 561 + struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); 562 + loff_t num_pages = obj->size >> PAGE_SHIFT; 563 + pgoff_t page_offset = vmf->pgoff - vma->vm_pgoff; /* page offset within VMA */ 564 + 565 + if (drm_WARN_ON(obj->dev, !shmem->pages || page_offset >= num_pages)) 566 + return; 567 + 568 + file_update_time(vma->vm_file); 569 + folio_mark_dirty(page_folio(shmem->pages[page_offset])); 570 + } 571 + 557 572 static vm_fault_t try_insert_pfn(struct vm_fault *vmf, unsigned int order, 558 573 unsigned long pfn) 559 574 { ··· 581 566 582 567 if (aligned && 583 568 folio_test_pmd_mappable(page_folio(pfn_to_page(pfn)))) { 569 + vm_fault_t ret; 570 + 584 571 pfn &= PMD_MASK >> PAGE_SHIFT; 585 - return vmf_insert_pfn_pmd(vmf, pfn, false); 572 + 573 + /* Unlike PTEs which are automatically upgraded to 574 + * writeable entries, the PMD upgrades go through 575 + * .huge_fault(). Make sure we pass the "write" info 576 + * along in that case. 577 + * This also means we have to record the write fault 578 + * here, instead of in .pfn_mkwrite(). 579 + */ 580 + ret = vmf_insert_pfn_pmd(vmf, pfn, 581 + vmf->flags & FAULT_FLAG_WRITE); 582 + if (ret == VM_FAULT_NOPAGE && (vmf->flags & FAULT_FLAG_WRITE)) 583 + drm_gem_shmem_record_mkwrite(vmf); 584 + 585 + return ret; 586 586 } 587 587 #endif 588 588 } ··· 685 655 686 656 static vm_fault_t drm_gem_shmem_pfn_mkwrite(struct vm_fault *vmf) 687 657 { 688 - struct vm_area_struct *vma = vmf->vma; 689 - struct drm_gem_object *obj = vma->vm_private_data; 690 - struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj); 691 - loff_t num_pages = obj->size >> PAGE_SHIFT; 692 - pgoff_t page_offset = vmf->pgoff - vma->vm_pgoff; /* page offset within VMA */ 693 - 694 - if (drm_WARN_ON(obj->dev, !shmem->pages || page_offset >= num_pages)) 695 - return VM_FAULT_SIGBUS; 696 - 697 - file_update_time(vma->vm_file); 698 - 699 - folio_mark_dirty(page_folio(shmem->pages[page_offset])); 700 - 658 + drm_gem_shmem_record_mkwrite(vmf); 701 659 return 0; 702 660 } 703 661
+2 -5
drivers/gpu/drm/drm_gem_vram_helper.c
··· 49 49 * To initialize the VRAM helper library call drmm_vram_helper_init(). 50 50 * The function allocates and initializes an instance of &struct drm_vram_mm 51 51 * in &struct drm_device.vram_mm . Use &DRM_GEM_VRAM_DRIVER to initialize 52 - * &struct drm_driver and &DRM_VRAM_MM_FILE_OPERATIONS to initialize 52 + * &struct drm_driver and &DEFINE_DRM_GEM_FOPS to define 53 53 * &struct file_operations; as illustrated below. 54 54 * 55 55 * .. code-block:: c 56 56 * 57 - * struct file_operations fops ={ 58 - * .owner = THIS_MODULE, 59 - * DRM_VRAM_MM_FILE_OPERATION 60 - * }; 57 + * DEFINE_DRM_GEM_FOPS(fops); 61 58 * struct drm_driver drv = { 62 59 * .driver_feature = DRM_ ... , 63 60 * .fops = &fops,
+2 -2
include/linux/dma-fence.h
··· 408 408 /** 409 409 * dma_fence_unlock_irqrestore - unlock the fence and irqrestore 410 410 * @fence: the fence to unlock 411 - * @flags the CPU flags to restore 411 + * @flags: the CPU flags to restore 412 412 * 413 - * Unlock the fence, allowing it to change it's state to signaled again. 413 + * Unlock the fence, allowing it to change its state to signaled again. 414 414 */ 415 415 #define dma_fence_unlock_irqrestore(fence, flags) \ 416 416 spin_unlock_irqrestore(dma_fence_spinlock(fence), flags)