mirror-linux/drivers/gpu/drm
Janusz Krzysztofik 78b4d6463e drm/vgem-fence: Fix potential deadlock on release
A timer that expires a vgem fence automatically in 10 seconds is now
released with timer_delete_sync() from fence->ops.release() called on last
dma_fence_put().  In some scenarios, it can run in IRQ context, which is
not safe unless TIMER_IRQSAFE is used.  One potentially risky scenario was
demonstrated in Intel DRM CI trybot, BAT run on machine bat-adlp-6, while
working on new IGT subtests syncobj_timeline@stress-* as user space
replacements of some problematic test cases of a dma-fence-chain selftest
[1].

[117.004338] ================================
[117.004340] WARNING: inconsistent lock state
[117.004342] 6.17.0-rc7-CI_DRM_17270-g7644974e648c+ #1 Tainted: G S   U
[117.004346] --------------------------------
[117.004347] inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
[117.004349] swapper/0/0 [HC1[1]:SC1[1]:HE0:SE0] takes:
[117.004352] ffff888138f86aa8 ((&fence->timer)){?.-.}-{0:0}, at: __timer_delete_sync+0x4b/0x190
[117.004361] {HARDIRQ-ON-W} state was registered at:
[117.004363]   lock_acquire+0xc4/0x2e0
[117.004366]   call_timer_fn+0x80/0x2a0
[117.004368]   __run_timers+0x231/0x310
[117.004370]   run_timer_softirq+0x76/0xe0
[117.004372]   handle_softirqs+0xd4/0x4d0
[117.004375]   __irq_exit_rcu+0x13f/0x160
[117.004377]   irq_exit_rcu+0xe/0x20
[117.004379]   sysvec_apic_timer_interrupt+0xa0/0xc0
[117.004382]   asm_sysvec_apic_timer_interrupt+0x1b/0x20
[117.004385]   cpuidle_enter_state+0x12b/0x8a0
[117.004388]   cpuidle_enter+0x2e/0x50
[117.004393]   call_cpuidle+0x22/0x60
[117.004395]   do_idle+0x1fd/0x260
[117.004398]   cpu_startup_entry+0x29/0x30
[117.004401]   start_secondary+0x12d/0x160
[117.004404]   common_startup_64+0x13e/0x141
[117.004407] irq event stamp: 2282669
[117.004409] hardirqs last  enabled at (2282668): [<ffffffff8289db71>] _raw_spin_unlock_irqrestore+0x51/0x80
[117.004414] hardirqs last disabled at (2282669): [<ffffffff82882021>] sysvec_irq_work+0x11/0xc0
[117.004419] softirqs last  enabled at (2254702): [<ffffffff8289fd00>] __do_softirq+0x10/0x18
[117.004423] softirqs last disabled at (2254725): [<ffffffff813d4ddf>] __irq_exit_rcu+0x13f/0x160
[117.004426]
other info that might help us debug this:
[117.004429]  Possible unsafe locking scenario:
[117.004432]        CPU0
[117.004433]        ----
[117.004434]   lock((&fence->timer));
[117.004436]   <Interrupt>
[117.004438]     lock((&fence->timer));
[117.004440]
 *** DEADLOCK ***
[117.004443] 1 lock held by swapper/0/0:
[117.004445]  #0: ffffc90000003d50 ((&fence->timer)){?.-.}-{0:0}, at: call_timer_fn+0x7a/0x2a0
[117.004450]
stack backtrace:
[117.004453] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G S   U              6.17.0-rc7-CI_DRM_17270-g7644974e648c+ #1 PREEMPT(voluntary)
[117.004455] Tainted: [S]=CPU_OUT_OF_SPEC, [U]=USER
[117.004455] Hardware name: Intel Corporation Alder Lake Client Platform/AlderLake-P DDR4 RVP, BIOS RPLPFWI1.R00.4035.A00.2301200723 01/20/2023
[117.004456] Call Trace:
[117.004456]  <IRQ>
[117.004457]  dump_stack_lvl+0x91/0xf0
[117.004460]  dump_stack+0x10/0x20
[117.004461]  print_usage_bug.part.0+0x260/0x360
[117.004463]  mark_lock+0x76e/0x9c0
[117.004465]  ? register_lock_class+0x48/0x4a0
[117.004467]  __lock_acquire+0xbc3/0x2860
[117.004469]  lock_acquire+0xc4/0x2e0
[117.004470]  ? __timer_delete_sync+0x4b/0x190
[117.004472]  ? __timer_delete_sync+0x4b/0x190
[117.004473]  __timer_delete_sync+0x68/0x190
[117.004474]  ? __timer_delete_sync+0x4b/0x190
[117.004475]  timer_delete_sync+0x10/0x20
[117.004476]  vgem_fence_release+0x19/0x30 [vgem]
[117.004478]  dma_fence_release+0xc1/0x3b0
[117.004480]  ? dma_fence_release+0xa1/0x3b0
[117.004481]  dma_fence_chain_release+0xe7/0x130
[117.004483]  dma_fence_release+0xc1/0x3b0
[117.004484]  ? _raw_spin_unlock_irqrestore+0x27/0x80
[117.004485]  dma_fence_chain_irq_work+0x59/0x80
[117.004487]  irq_work_single+0x75/0xa0
[117.004490]  irq_work_run_list+0x33/0x60
[117.004491]  irq_work_run+0x18/0x40
[117.004493]  __sysvec_irq_work+0x35/0x170
[117.004494]  sysvec_irq_work+0x47/0xc0
[117.004496]  asm_sysvec_irq_work+0x1b/0x20
[117.004497] RIP: 0010:_raw_spin_unlock_irqrestore+0x57/0x80
[117.004499] Code: 00 75 1c 65 ff 0d d9 34 68 01 74 20 5b 41 5c 5d 31 c0 31 d2 31 c9 31 f6 31 ff c3 cc cc cc cc e8 7f 9d d3 fe fb 0f 1f 44 00 00 <eb> d7 0f 1f 44 00 00 5b 41 5c 5d 31 c0 31 d2 31 c9 31 f6 31 ff c3
[117.004499] RSP: 0018:ffffc90000003cf0 EFLAGS: 00000246
[117.004500] RAX: 0000000000000000 RBX: ffff888155e94c40 RCX: 0000000000000000
[117.004501] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
[117.004502] RBP: ffffc90000003d00 R08: 0000000000000000 R09: 0000000000000000
[117.004502] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000246
[117.004502] R13: 0000000000000001 R14: 0000000000000246 R15: ffff888155e94c80
[117.004506]  dma_fence_signal+0x49/0xb0
[117.004507]  ? __pfx_vgem_fence_timeout+0x10/0x10 [vgem]
[117.004508]  vgem_fence_timeout+0x12/0x20 [vgem]
[117.004509]  call_timer_fn+0xa1/0x2a0
[117.004512]  ? __pfx_vgem_fence_timeout+0x10/0x10 [vgem]
[117.004513]  __run_timers+0x231/0x310
[117.004514]  ? tmigr_handle_remote+0x2ac/0x560
[117.004517]  timer_expire_remote+0x46/0x70
[117.004518]  tmigr_handle_remote+0x433/0x560
[117.004520]  ? __run_timers+0x239/0x310
[117.004521]  ? run_timer_softirq+0x21/0xe0
[117.004522]  ? lock_release+0xce/0x2a0
[117.004524]  run_timer_softirq+0xcf/0xe0
[117.004525]  handle_softirqs+0xd4/0x4d0
[117.004526]  __irq_exit_rcu+0x13f/0x160
[117.004527]  irq_exit_rcu+0xe/0x20
[117.004528]  sysvec_apic_timer_interrupt+0xa0/0xc0
[117.004529]  </IRQ>
[117.004529]  <TASK>
[117.004529]  asm_sysvec_apic_timer_interrupt+0x1b/0x20
[117.004530] RIP: 0010:cpuidle_enter_state+0x12b/0x8a0
[117.004532] Code: 48 0f a3 05 97 ce 0e 01 0f 82 2e 03 00 00 31 ff e8 8a 41 bd fe 80 7d d0 00 0f 85 11 03 00 00 e8 8b 06 d5 fe fb 0f 1f 44 00 00 <45> 85 f6 0f 88 67 02 00 00 4d 63 ee 49 83 fd 0a 0f 83 34 06 00 00
[117.004532] RSP: 0018:ffffffff83403d88 EFLAGS: 00000246
[117.004533] RAX: 0000000000000000 RBX: ffff88888f046440 RCX: 0000000000000000
[117.004533] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
[117.004534] RBP: ffffffff83403dd8 R08: 0000000000000000 R09: 0000000000000000
[117.004534] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff837cbe80
[117.004534] R13: 0000000000000004 R14: 0000000000000004 R15: 0000001ad1df466b
[117.004537]  ? cpuidle_enter_state+0x125/0x8a0
[117.004538]  ? sched_clock_noinstr+0x9/0x10
[117.004540]  cpuidle_enter+0x2e/0x50
[117.004542]  call_cpuidle+0x22/0x60
[117.004542]  do_idle+0x1fd/0x260
[117.004544]  cpu_startup_entry+0x29/0x30
[117.004546]  rest_init+0x104/0x200
[117.004548]  start_kernel+0x93d/0xbd0
[117.004550]  ? load_ucode_intel_bsp+0x2a/0x90
[117.004551]  ? sme_unmap_bootdata+0x14/0x80
[117.004554]  x86_64_start_reservations+0x18/0x30
[117.004555]  x86_64_start_kernel+0xfd/0x150
[117.004556]  ? soft_restart_cpu+0x14/0x14
[117.004558]  common_startup_64+0x13e/0x141
[117.004560]  </TASK>
[117.004565] ------------[ cut here ]------------
[117.004692] WARNING: CPU: 0 PID: 0 at kernel/time/timer.c:1610 __timer_delete_sync+0x126/0x190
[117.004697] Modules linked in: vgem snd_hda_codec_intelhdmi snd_hda_codec_hdmi i915 prime_numbers ttm drm_buddy drm_display_helper cec rc_core i2c_algo_bit hid_sensor_custom hid_sensor_hub hid_generic intel_ishtp_hid hid intel_uncore_frequency intel_uncore_frequency_common x86_pkg_temp_thermal intel_powerclamp cmdlinepart ee1004 r8153_ecm spi_nor coretemp cdc_ether mei_pxp mei_hdcp usbnet mtd intel_rapl_msr wmi_bmof kvm_intel snd_hda_intel snd_intel_dspcfg processor_thermal_device_pci kvm snd_hda_codec processor_thermal_device irqbypass processor_thermal_wt_hint polyval_clmulni platform_temperature_control snd_hda_core ghash_clmulni_intel processor_thermal_rfim spi_pxa2xx_platform snd_hwdep aesni_intel processor_thermal_rapl dw_dmac snd_pcm dw_dmac_core intel_rapl_common r8152 rapl mii intel_cstate spi_pxa2xx_core i2c_i801 processor_thermal_wt_req snd_timer i2c_mux mei_me intel_ish_ipc processor_thermal_power_floor e1000e snd i2c_smbus spi_intel_pci processor_thermal_mbox mei soundcore intel_ishtp thunderbolt idma64
[117.004733]  spi_intel int340x_thermal_zone igen6_edac binfmt_misc intel_skl_int3472_tps68470 intel_pmc_core tps68470_regulator video clk_tps68470 pmt_telemetry pmt_discovery nls_iso8859_1 pmt_class intel_pmc_ssram_telemetry intel_skl_int3472_discrete int3400_thermal intel_hid intel_skl_int3472_common acpi_thermal_rel intel_vsec wmi pinctrl_tigerlake acpi_tad sparse_keymap acpi_pad dm_multipath msr nvme_fabrics fuse efi_pstore nfnetlink autofs4
[117.004782] CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Tainted: G S   U              6.17.0-rc7-CI_DRM_17270-g7644974e648c+ #1 PREEMPT(voluntary)
[117.004787] Tainted: [S]=CPU_OUT_OF_SPEC, [U]=USER
[117.004789] Hardware name: Intel Corporation Alder Lake Client Platform/AlderLake-P DDR4 RVP, BIOS RPLPFWI1.R00.4035.A00.2301200723 01/20/2023
[117.004793] RIP: 0010:__timer_delete_sync+0x126/0x190
[117.004795] Code: 31 c0 45 31 c9 c3 cc cc cc cc 48 8b 75 d0 45 84 f6 74 63 49 c7 45 18 00 00 00 00 48 89 c7 e8 51 46 39 01 f3 90 e9 66 ff ff ff <0f> 0b e9 5f ff ff ff e8 ee e4 0c 00 49 8d 5d 28 45 31 c9 31 c9 4c
[117.004801] RSP: 0018:ffffc90000003a40 EFLAGS: 00010046
[117.004804] RAX: ffffffff815093fb RBX: ffff888138f86aa8 RCX: 0000000000000000
[117.004807] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
[117.004809] RBP: ffffc90000003a70 R08: 0000000000000000 R09: 0000000000000000
[117.004812] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff815093fb
[117.004814] R13: ffff888138f86a80 R14: 0000000000000000 R15: 0000000000000000
[117.004817] FS:  0000000000000000(0000) GS:ffff88890b0f7000(0000) knlGS:0000000000000000
[117.004820] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[117.004823] CR2: 00005db8131eb7f0 CR3: 0000000003448000 CR4: 0000000000f52ef0
[117.004826] PKRU: 55555554
[117.004827] Call Trace:
[117.004829]  <IRQ>
[117.004831]  timer_delete_sync+0x10/0x20
[117.004833]  vgem_fence_release+0x19/0x30 [vgem]
[117.004836]  dma_fence_release+0xc1/0x3b0
[117.004838]  ? dma_fence_release+0xa1/0x3b0
[117.004841]  dma_fence_chain_release+0xe7/0x130
[117.004844]  dma_fence_release+0xc1/0x3b0
[117.004847]  ? _raw_spin_unlock_irqrestore+0x27/0x80
[117.004850]  dma_fence_chain_irq_work+0x59/0x80
[117.004853]  irq_work_single+0x75/0xa0
[117.004857]  irq_work_run_list+0x33/0x60
[117.004860]  irq_work_run+0x18/0x40
[117.004863]  __sysvec_irq_work+0x35/0x170
[117.004865]  sysvec_irq_work+0x47/0xc0
[117.004868]  asm_sysvec_irq_work+0x1b/0x20
[117.004871] RIP: 0010:_raw_spin_unlock_irqrestore+0x57/0x80
[117.004874] Code: 00 75 1c 65 ff 0d d9 34 68 01 74 20 5b 41 5c 5d 31 c0 31 d2 31 c9 31 f6 31 ff c3 cc cc cc cc e8 7f 9d d3 fe fb 0f 1f 44 00 00 <eb> d7 0f 1f 44 00 00 5b 41 5c 5d 31 c0 31 d2 31 c9 31 f6 31 ff c3
[117.004879] RSP: 0018:ffffc90000003cf0 EFLAGS: 00000246
[117.004882] RAX: 0000000000000000 RBX: ffff888155e94c40 RCX: 0000000000000000
[117.004884] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
[117.004887] RBP: ffffc90000003d00 R08: 0000000000000000 R09: 0000000000000000
[117.004890] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000246
[117.004892] R13: 0000000000000001 R14: 0000000000000246 R15: ffff888155e94c80
[117.004897]  dma_fence_signal+0x49/0xb0
[117.004899]  ? __pfx_vgem_fence_timeout+0x10/0x10 [vgem]
[117.004902]  vgem_fence_timeout+0x12/0x20 [vgem]
[117.004904]  call_timer_fn+0xa1/0x2a0
[117.004908]  ? __pfx_vgem_fence_timeout+0x10/0x10 [vgem]
[117.004910]  __run_timers+0x231/0x310
[117.004913]  ? tmigr_handle_remote+0x2ac/0x560
[117.004917]  timer_expire_remote+0x46/0x70
[117.004919]  tmigr_handle_remote+0x433/0x560
[117.004923]  ? __run_timers+0x239/0x310
[117.004925]  ? run_timer_softirq+0x21/0xe0
[117.004928]  ? lock_release+0xce/0x2a0
[117.004931]  run_timer_softirq+0xcf/0xe0
[117.004933]  handle_softirqs+0xd4/0x4d0
[117.004936]  __irq_exit_rcu+0x13f/0x160
[117.004938]  irq_exit_rcu+0xe/0x20
[117.004940]  sysvec_apic_timer_interrupt+0xa0/0xc0
[117.004943]  </IRQ>
[117.004944]  <TASK>
[117.004946]  asm_sysvec_apic_timer_interrupt+0x1b/0x20
[117.004949] RIP: 0010:cpuidle_enter_state+0x12b/0x8a0
[117.004953] Code: 48 0f a3 05 97 ce 0e 01 0f 82 2e 03 00 00 31 ff e8 8a 41 bd fe 80 7d d0 00 0f 85 11 03 00 00 e8 8b 06 d5 fe fb 0f 1f 44 00 00 <45> 85 f6 0f 88 67 02 00 00 4d 63 ee 49 83 fd 0a 0f 83 34 06 00 00
[117.004961] RSP: 0018:ffffffff83403d88 EFLAGS: 00000246
[117.004963] RAX: 0000000000000000 RBX: ffff88888f046440 RCX: 0000000000000000
[117.004966] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
[117.004968] RBP: ffffffff83403dd8 R08: 0000000000000000 R09: 0000000000000000
[117.004971] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff837cbe80
[117.004974] R13: 0000000000000004 R14: 0000000000000004 R15: 0000001ad1df466b
[117.004978]  ? cpuidle_enter_state+0x125/0x8a0
[117.004981]  ? sched_clock_noinstr+0x9/0x10
[117.004985]  cpuidle_enter+0x2e/0x50
[117.004989]  call_cpuidle+0x22/0x60
[117.004991]  do_idle+0x1fd/0x260
[117.005001]  cpu_startup_entry+0x29/0x30
[117.005004]  rest_init+0x104/0x200
[117.005008]  start_kernel+0x93d/0xbd0
[117.005011]  ? load_ucode_intel_bsp+0x2a/0x90
[117.005014]  ? sme_unmap_bootdata+0x14/0x80
[117.005017]  x86_64_start_reservations+0x18/0x30
[117.005020]  x86_64_start_kernel+0xfd/0x150
[117.005023]  ? soft_restart_cpu+0x14/0x14
[117.005026]  common_startup_64+0x13e/0x141
[117.005030]  </TASK>
[117.005032] irq event stamp: 2282669
[117.005034] hardirqs last  enabled at (2282668): [<ffffffff8289db71>] _raw_spin_unlock_irqrestore+0x51/0x80
[117.005038] hardirqs last disabled at (2282669): [<ffffffff82882021>] sysvec_irq_work+0x11/0xc0
[117.005043] softirqs last  enabled at (2254702): [<ffffffff8289fd00>] __do_softirq+0x10/0x18
[117.005047] softirqs last disabled at (2254725): [<ffffffff813d4ddf>] __irq_exit_rcu+0x13f/0x160
[117.005051] ---[ end trace 0000000000000000 ]---

Make the timer IRQ safe.

[1] https://patchwork.freedesktop.org/series/154987/#rev2

Fixes: 4077798484 ("drm/vgem: Attach sw fences to exported vGEM dma-buf (ioctl)")
Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Link: https://lore.kernel.org/r/20250926152628.2165080-2-janusz.krzysztofik@linux.intel.com
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
2025-10-06 15:05:17 +02:00
..
adp drm: convert many bridge drivers from devm_kzalloc() to devm_drm_bridge_alloc() API 2025-05-23 15:03:47 +02:00
amd drm/ttm: rename ttm_bo_put to _fini v3 2025-09-17 14:03:21 +02:00
arm drm/arm/malidp: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:09 +02:00
armada drm/armada: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:10 +02:00
aspeed
ast drm/ast: Remove generic device initialization 2025-09-29 13:28:16 +02:00
atmel-hlcdc drm/atmel-hlcdc: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:11 +02:00
bridge drm/bridge: imx: add driver for HDMI TX Parallel Audio Interface 2025-09-29 09:46:04 +08:00
ci drm/ci: Uprev igt 2025-07-04 11:06:38 -07:00
clients drm/fbdev-client: Skip DRM clients if modesetting is absent 2025-07-06 14:05:07 +03:00
display drm/display: bridge_connector: get/put the stored bridges 2025-10-03 08:48:43 +02:00
etnaviv drm for 6.17-rc1 2025-07-30 19:26:49 -07:00
exynos drm/exynos: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:11 +02:00
fsl-dcu
gma500 drm/gma500: Remove unused helper psb_fbdev_fb_setcolreg() 2025-09-30 08:50:35 +02:00
gud drm/gud: fix accidentally deleted IS_ERR() check 2025-09-23 10:02:44 +02:00
hisilicon drm/hisilicon/hibmc: fix dp and vga cannot show together 2025-08-17 18:32:31 +03:00
hyperv drm/hypervdrm: Use vblank timer 2025-10-01 08:32:02 +02:00
i915 drm/ttm: rename ttm_bo_put to _fini v3 2025-09-17 14:03:21 +02:00
imagination drm/imagination: Enable PowerVR driver for RISC-V 2025-09-01 12:11:00 +01:00
imx drm/imx-ipuv3: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:13 +02:00
ingenic drm/ingenic: crtc: Switch to ingenic_drm_get_new_priv_state() 2025-10-06 13:59:22 +02:00
kmb drm/kmb: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:14 +02:00
lib drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
lima drm for 6.17-rc1 2025-07-30 19:26:49 -07:00
logicvc drm/logicvc: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:15 +02:00
loongson drm/loongson: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:15 +02:00
mcde drm/mcde/mcde_clk_div: convert from round_rate() to determine_rate() 2025-09-15 15:08:15 +02:00
mediatek drm/mediatek: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:16 +02:00
meson drm-misc-next for 6.17: 2025-06-18 08:09:35 +10:00
mgag200 drm for 6.17-rc1 2025-07-30 19:26:49 -07:00
msm drm/msm/mdp5: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:16 +02:00
mxsfb drm/mxsfb: put the bridge returned by drm_bridge_chain_get_first_bridge() 2025-07-22 13:01:28 +02:00
nouveau drm/nouveau: Compute dumb-buffer sizes with drm_mode_size_dumb() 2025-09-29 14:00:57 +02:00
nova Linux 6.17-rc6 2025-09-15 17:51:07 +10:00
omapdrm drm/omap: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:17 +02:00
panel gpu/drm: panel-edp: add AUO B116XAN02.0 panel entry 2025-10-02 14:21:59 -07:00
panfrost drm/panfrost: Bump the minor version number 2025-09-19 10:37:59 +01:00
panthor drm/panthor: add custom ASN_HASH support for mt8196 2025-10-06 10:50:59 +01:00
pl111 drm/pl111: convert from round_rate() to determine_rate() 2025-09-15 15:08:43 +02:00
qxl drm/ttm: rename ttm_bo_put to _fini v3 2025-09-17 14:03:21 +02:00
radeon drm/ttm: rename ttm_bo_put to _fini v3 2025-09-17 14:03:21 +02:00
renesas drm: renesas: rz-du: Drop ARCH_RZG2L dependency 2025-10-04 12:37:11 +01:00
rockchip drm/rockchip: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:17 +02:00
scheduler drm/sched/tests: Remove relict of done_list 2025-09-19 14:10:34 +02:00
sitronix drm/sitronix/st7571-i2c: reset position before clearing display 2025-10-03 12:01:50 +02:00
solomon drm/solomon: Enforce one assignment per line 2025-09-26 15:04:46 +02:00
sprd
sti drm/sti: Remove redundant ternary operators 2025-09-05 13:17:21 +02:00
stm drm/stm/lvds: convert from round_rate() to determine_rate() 2025-09-15 15:08:44 +02:00
sun4i drm/sun4i: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:18 +02:00
sysfb drm/sysfb: simpledrm: Sort headers correctly 2025-09-23 15:59:01 +02:00
tegra drm/tegra: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:18 +02:00
tests drm/tests: make sure drm_client_modeset tests are enabled 2025-09-16 20:20:21 +03:00
tidss drm/tidss: crtc: Cleanup reset implementation 2025-09-30 11:57:12 +02:00
tilcdc drm/tilcdc: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:19 +02:00
tiny drm/tiny/bochs: Convert dev_err() to drm_err() 2025-09-08 14:50:35 +02:00
ttm drm/ttm: rename ttm_bo_put to _fini v3 2025-09-17 14:03:21 +02:00
tve200
udl drm/gem-shmem: Do not map s/g table by default 2025-07-07 15:23:41 +02:00
v3d drm/v3d: Protect per-fd reset counter against fd release 2025-08-29 10:28:11 -03:00
vboxvideo drm/vboxvideo: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:19 +02:00
vc4 drm/vc4: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:20 +02:00
vgem drm/vgem-fence: Fix potential deadlock on release 2025-10-06 15:05:17 +02:00
virtio drm/virtio: clean up minor codestyle issues 2025-08-20 13:36:45 +03:00
vkms drm/vkms: Convert vkms_crtc_atomic_check() to use new plane state 2025-10-06 13:59:06 +02:00
vmwgfx drm/vmwgfx: Compute dumb-buffer sizes with drm_mode_size_dumb() 2025-09-29 14:00:57 +02:00
xe drm/xe: Compute dumb-buffer sizes with drm_mode_size_dumb() 2025-09-29 17:50:40 +02:00
xen drm/gem: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() 2025-07-16 20:05:58 +03:00
xlnx drm/xlnx: Compute dumb-buffer sizes with drm_mode_size_dumb() 2025-09-29 17:50:54 +02:00
Kconfig pci-v6.16-changes 2025-06-04 11:26:17 -07:00
Kconfig.debug drm/format-helper: Move drm_fb_build_fourcc_list() to sysfb helpers 2025-06-18 10:46:03 +02:00
Makefile drm/vblank: Add vblank timer 2025-10-01 08:31:59 +02:00
drm_atomic.c drm/atomic: Convert drm_atomic_get_private_obj_state() to use new plane state 2025-10-06 13:59:23 +02:00
drm_atomic_helper.c drm/atomic-helper: put the bridge returned by drm_bridge_chain_get_first_bridge() 2025-07-22 13:01:28 +02:00
drm_atomic_state_helper.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_atomic_uapi.c drm: re-allow no-op changes on non-primary planes in async flips 2025-08-22 14:31:21 -03:00
drm_auth.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_blend.c
drm_bridge.c drm/bridge: refcount last_bridge in drm_atomic_bridge_chain_select_bus_fmts() 2025-10-03 09:05:25 +02:00
drm_bridge_helper.c drm/bridge: Include <linux/export.h> 2025-06-16 09:02:25 +02:00
drm_buddy.c drm for 6.17-rc1 2025-07-30 19:26:49 -07:00
drm_cache.c drm/gpu: Remove dead checks on wbinvd_on_all_cpus()'s return value 2025-07-10 13:07:26 +02:00
drm_client.c drm/client: Include <linux/export.h> 2025-06-16 09:02:29 +02:00
drm_client_event.c drm/client: Include <linux/export.h> 2025-06-16 09:02:29 +02:00
drm_client_modeset.c drm/fb-helper: Synchronize dirty worker with vblank 2025-09-16 12:42:52 +02:00
drm_color_mgmt.c drm/color-mgmt: Prepare for RGB332 palettes 2025-08-26 09:54:18 +02:00
drm_connector.c drm/connector: move HDR sink metadata to display info 2025-06-23 21:44:55 +03:00
drm_crtc.c
drm_crtc_helper.c
drm_crtc_helper_internal.h
drm_crtc_internal.h
drm_damage_helper.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_debugfs.c drm: add debugfs support on per client-id basis 2025-07-04 15:59:06 +02:00
drm_debugfs_crc.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_displayid.c
drm_displayid_internal.h
drm_draw.c
drm_draw_internal.h
drm_drv.c drm: Add a vendor-specific recovery method to drm device wedged uevent 2025-08-26 10:11:34 -04:00
drm_dumb_buffers.c drm/dumb-buffers: Provide helper to set pitch and size 2025-09-29 13:57:43 +02:00
drm_edid.c drm-misc-next for 6.17: 2025-06-27 09:58:05 +10:00
drm_edid_load.c
drm_eld.c
drm_encoder.c
drm_exec.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_fb_dma_helper.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_fb_helper.c drm/fb-helper: Synchronize dirty worker with vblank 2025-09-16 12:42:52 +02:00
drm_fbdev_dma.c drm/client: Include <linux/export.h> 2025-06-16 09:02:29 +02:00
drm_fbdev_shmem.c drm/client: Include <linux/export.h> 2025-06-16 09:02:29 +02:00
drm_fbdev_ttm.c drm/client: Include <linux/export.h> 2025-06-16 09:02:29 +02:00
drm_file.c drm: add debugfs support on per client-id basis 2025-07-04 15:59:06 +02:00
drm_flip_work.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_format_helper.c drm/format-helper: Remove drm_fb_blit() 2025-09-23 15:06:06 +02:00
drm_format_internal.h drm/format-helper: Split off byte swapping from drm_fb_xrgb8888_to_rgb565() 2025-06-27 15:59:23 +02:00
drm_fourcc.c drm: Pass pixel_format+modifier directly to drm_get_format_info() 2025-07-16 20:01:13 +03:00
drm_framebuffer.c drm/framebuffer: Switch to drm_atomic_get_new_crtc_state() 2025-10-06 13:59:21 +02:00
drm_gem.c drm: Replace the deprecated DRM_* logging macros in gem helper files 2025-09-15 12:36:44 +02:00
drm_gem_atomic_helper.c drm/gem: Include <linux/export.h> 2025-06-16 09:02:35 +02:00
drm_gem_dma_helper.c drm/gem-dma: Compute dumb-buffer sizes with drm_mode_size_dumb() 2025-09-29 13:57:44 +02:00
drm_gem_framebuffer_helper.c drm for 6.17-rc1 2025-07-30 19:26:49 -07:00
drm_gem_shmem_helper.c drm/gem-shmem: Compute dumb-buffer sizes with drm_mode_size_dumb() 2025-09-29 13:57:45 +02:00
drm_gem_ttm_helper.c drm/gem: Include <linux/export.h> 2025-06-16 09:02:35 +02:00
drm_gem_vram_helper.c drm/ttm: rename ttm_bo_put to _fini v3 2025-09-17 14:03:21 +02:00
drm_gpusvm.c Merge drm/drm-next into drm-xe-next 2025-08-25 22:08:34 -07:00
drm_gpuvm.c Linux 6.17-rc6 2025-09-15 17:51:07 +10:00
drm_internal.h Merge drm/drm-next into drm-misc-n 2025-08-11 14:37:45 +02:00
drm_ioc32.c
drm_ioctl.c drm: Add DRM prime interface to reassign GEM handle 2025-07-18 08:59:24 +02:00
drm_kms_helper_common.c
drm_lease.c
drm_managed.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_mipi_dbi.c drm/format-helper: Split off byte swapping from drm_fb_xrgb8888_to_rgb565() 2025-06-27 15:59:23 +02:00
drm_mipi_dsi.c drm: Add MIPI read_multi func and two write macros 2025-08-14 15:42:26 -07:00
drm_mm.c
drm_mode_config.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_mode_object.c
drm_modes.c
drm_modeset_helper.c drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory 2025-07-16 20:12:35 +03:00
drm_modeset_lock.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_of.c drm: of: fix documentation reference 2025-08-21 16:21:08 +02:00
drm_pagemap.c drm/pagemap: Allocate folios when possible 2025-08-06 13:34:58 +02:00
drm_panel.c drm/panel: Allow powering on panel follower after panel is enabled 2025-08-25 09:17:49 -07:00
drm_panel_backlight_quirks.c drm: panel-backlight-quirks: Add Steam Deck brightness quirk 2025-09-03 10:23:03 -05:00
drm_panel_orientation_quirks.c drm/panel: Include <linux/export.h> 2025-06-16 09:02:39 +02:00
drm_panic.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_panic_qr.rs drm/panic: Add a u64 divide by 10 for arm32 2025-08-12 09:33:05 +02:00
drm_pci.c drm: Do not include <linux/export.h> 2025-06-16 09:00:09 +02:00
drm_plane.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_plane_helper.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_prime.c Merge drm/drm-next into drm-misc-n 2025-08-11 14:37:45 +02:00
drm_print.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_privacy_screen.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_privacy_screen_x86.c
drm_probe_helper.c drm/probe-helper: put the bridge returned by drm_bridge_chain_get_first_bridge() 2025-07-22 13:01:28 +02:00
drm_property.c
drm_rect.c
drm_self_refresh_helper.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_simple_kms_helper.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_suballoc.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_syncobj.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_sysfs.c DRM: Add a new 'boot_display' attribute 2025-09-10 09:35:33 -05:00
drm_trace.h
drm_trace_points.c
drm_vblank.c drm/vblank: Add vblank timer 2025-10-01 08:31:59 +02:00
drm_vblank_helper.c drm/vblank: Add CRTC helpers for simple use cases 2025-10-01 08:32:00 +02:00
drm_vblank_work.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_vma_manager.c drm: Include <linux/export.h> 2025-06-16 09:01:23 +02:00
drm_writeback.c drm for 6.17-rc1 2025-07-30 19:26:49 -07:00