linux/drivers/gpu/drm
Marco Crivellari 645abe00a3 drm/gm12u320: Replace system_long_wq with system_dfl_long_wq
Currently the code enqueue work items using {queue|mod}_delayed_work(),
using system_long_wq. This workqueue should be used when long works are
expected, but it is a per-cpu workqueue.

This is important because queue_delayed_work() queue the work using:

   queue_delayed_work_on(WORK_CPU_UNBOUND, ...);

Note that WORK_CPU_UNBOUND = NR_CPUS.

This would end up calling __queue_delayed_work() that does:

    if (housekeeping_enabled(HK_TYPE_TIMER)) {
    //      [....]
    } else {
            if (likely(cpu == WORK_CPU_UNBOUND))
                    add_timer_global(timer);
            else
                    add_timer_on(timer, cpu);
    }

So when cpu == WORK_CPU_UNBOUND the timer is global and is
not using a specific CPU. Later, when __queue_work() is called:

    if (req_cpu == WORK_CPU_UNBOUND) {
            if (wq->flags & WQ_UNBOUND)
                    cpu = wq_select_unbound_cpu(raw_smp_processor_id());
            else
                    cpu = raw_smp_processor_id();
    }

Because the wq is not unbound, it takes the CPU where the timer
fired and enqueue the work on that CPU.
The consequence of all of this is that the work can run anywhere,
depending on where the timer fired.

Recently, a new unbound workqueue specific for long running work has
been added in commit c116737e97 ("workqueue: Add system_dfl_long_wq
for long unbound works").

So change system_long_wq with system_dfl_long_wq so that the work may
benefit from scheduler task placement.

Signed-off-by: Marco Crivellari <marco.crivellari@suse.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patch.msgid.link/20260430091532.115846-1-marco.crivellari@suse.com
2026-05-29 09:11:26 +02:00
..
adp drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
amd Merge drm/drm-next into drm-misc-next 2026-05-28 11:27:53 +02:00
arm drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
armada drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
aspeed
ast drm-misc-next for v7.1-rc1: 2026-05-06 10:12:25 +10:00
atmel-hlcdc drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
bridge Merge drm/drm-next into drm-misc-next 2026-05-28 11:27:53 +02:00
ci drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
clients Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
display drm/dp: Add DSC virtual DPCD quirk for Realtek MST branch device 2026-05-27 16:36:58 +03:00
etnaviv Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
exynos Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
fsl-dcu drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
gma500 Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
gud drm/gud: Add RCade Display Adapter VID/PID pair 2026-05-12 08:35:00 +02:00
hisilicon drm/hisilicon/kirin: switch to of_drm_get_bridge_by_endpoint() 2026-05-19 10:57:25 +02:00
hyperv drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
i915 Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
imagination drm/imagination: Fix missing argument in pvr_power_fw_{en,dis}able() 2026-05-20 10:52:10 +02:00
imx drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
ingenic drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
kmb drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
lima drm/lima: Remove drm_sched_init_args->num_rqs usage 2026-04-17 14:43:29 +02:00
logicvc drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
loongson Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
mcde drm/mcde: dsi: convert to of_drm_find_and_get_bridge() 2026-02-23 10:10:34 +01:00
mediatek Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
meson drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
mgag200 drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
msm Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
mxsfb drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
nouveau drm/nouveau/gsp: formally support GA100 2026-05-28 19:30:15 +02:00
nova rust: gem: Introduce DriverObject::Args 2026-03-26 02:08:04 +01:00
omapdrm drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
panel Merge drm/drm-next into drm-misc-next 2026-05-28 11:27:53 +02:00
panfrost Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
panthor drm/panthor: Reduce padding in gems debugfs for refcount 2026-05-28 16:47:37 +02:00
pl111 Linux 6.19-rc7 2026-01-28 12:44:28 +10:00
qxl Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
radeon drm/radeon/evergreen_cs: Add missing NULL prefix check in surface check 2026-05-19 12:16:16 -04:00
renesas drm: renesas: rz-du: Add support for RZ/T2H SoC 2026-05-22 07:31:55 +01:00
rockchip drm/rockchip: dw_hdmi: avoid direct dereference of phy->dev.of_node 2026-05-21 11:35:04 +02:00
scheduler drm/sched: Remove drm_sched_init_args->num_rqs usage 2026-04-17 14:43:29 +02:00
sitronix drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
solomon drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
sprd drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
sti Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
stm drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
sun4i drm/sun4i: hdmi: Use the common TMDS char rate constant 2026-05-21 11:45:53 +02:00
sysfb drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
tegra drm/tegra: Fix iommu_map_sgtable() return value check 2026-05-28 17:19:30 +02:00
tests drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
tidss drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
tilcdc drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
tiny drm/gm12u320: Replace system_long_wq with system_dfl_long_wq 2026-05-29 09:11:26 +02:00
ttm drm/ttm: Fix ttm_bo_shrink() infinite LRU walk on backup failure 2026-05-14 15:32:29 +02:00
tve200 drm/tve200: Fix probe cleanup after register failure 2026-05-05 11:16:39 +02:00
tyr drm for v7.1-rc1 2026-04-15 08:45:00 -07:00
udl drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
v3d Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
vboxvideo drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
vc4 drm-misc-next for v7.1-rc1: 2026-05-06 10:12:25 +10:00
verisilicon drm: verisilicon: fix build failure of cursor plane code 2026-05-26 16:05:53 +08:00
vgem Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
virtio drm/virtio: use uninterruptible resv lock for plane updates 2026-05-20 18:12:11 +03:00
vkms drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
vmwgfx drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
xe Merge drm/drm-next into drm-misc-next 2026-05-28 11:27:53 +02:00
xen Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses 2026-02-22 08:26:33 -08:00
xlnx drm: zynqmp_dp: switch to of_drm_get_bridge_by_endpoint() 2026-05-19 10:57:26 +02:00
drm_atomic_helper.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_atomic_state_helper.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_atomic_uapi.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_atomic.c drm-misc-next for v7.2-rc1: 2026-05-08 14:16:04 +10:00
drm_auth.c drm/auth: Only drm_drop_master if it exists 2026-04-21 22:05:51 +08:00
drm_blend.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_bridge_helper.c
drm_bridge.c drm/bridge: add of_drm_get_bridge_by_endpoint() 2026-05-19 10:57:25 +02:00
drm_buddy.c drm/buddy: Integrate lockdep annotations for gpu buddy manager 2026-05-08 19:16:19 +05:30
drm_cache.c
drm_client_event.c
drm_client_modeset.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_client_sysrq.c
drm_client.c drm/client: Export drm_client_buffer_create() 2026-03-03 09:28:31 +01:00
drm_color_mgmt.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_colorop.c drm/colorop: Check if getting curve_1d_type default succeeds 2026-04-17 03:11:21 +08:00
drm_connector.c drm/connector: Make drm_connector_attach_hdr_output_metadata_property() return void 2026-04-10 10:59:09 -03:00
drm_crtc_helper_internal.h
drm_crtc_helper.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_crtc_internal.h drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_crtc.c drm/simple-kms: Deprecate simple-kms helpers 2026-03-25 15:05:22 +01:00
drm_damage_helper.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_debugfs_crc.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
drm_debugfs.c
drm_displayid_internal.h
drm_displayid.c
drm_draw_internal.h
drm_draw.c
drm_drv.c drm/gem: Make the GEM LRU lock part of drm_device 2026-05-18 15:16:47 +02:00
drm_dumb_buffers.c drm: Remove unused header in drm_dumb_buffers.c 2026-05-29 09:09:37 +02:00
drm_edid_load.c
drm_edid.c Revert "drm/edid: add CTA Video Format Data Block support" 2026-05-06 11:22:15 +02:00
drm_eld.c
drm_encoder.c drm/encoder: drm_encoder_cleanup: lock the encoder chain mutex during removal 2026-04-16 09:08:42 +02:00
drm_exec.c drm/exec, drm/xe: Avoid abusing the drm_exec retry pointer 2026-05-25 10:45:38 +02:00
drm_fb_dma_helper.c
drm_fb_helper.c Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
drm_fbdev_dma.c
drm_fbdev_shmem.c
drm_fbdev_ttm.c
drm_file.c Revert "drm: Fix use-after-free on framebuffers and property blobs when calling drm_dev_unplug" 2026-03-26 14:09:26 +01:00
drm_flip_work.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
drm_format_helper.c
drm_format_internal.h
drm_fourcc.c drm/fourcc: Add DRM_FORMAT_XVUY2101010 2026-05-05 14:04:29 +03:00
drm_framebuffer.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_gem_atomic_helper.c drm/simple-kms: Deprecate simple-kms helpers 2026-03-25 15:05:22 +01:00
drm_gem_dma_helper.c drm/gem-dma: set VM_DONTDUMP for mmap 2026-03-26 14:35:18 +08:00
drm_gem_framebuffer_helper.c drm/gem: Fix inconsistent plane dimension calculation in drm_gem_fb_init_with_funcs() 2026-04-27 11:27:22 +02:00
drm_gem_shmem_helper.c drm/shmem_helper: Make sure PMD entries get the writeable upgrade 2026-04-03 10:11:04 +02:00
drm_gem_ttm_helper.c
drm_gem_vram_helper.c drm/vram: remove DRM_VRAM_MM_FILE_OPERATIONS from docs 2026-04-09 09:34:28 +02:00
drm_gem.c Linux 7.1-rc5 2026-05-28 09:58:36 +02:00
drm_gpusvm.c drm: Drop HPAGE_PMD_SIZE dependency in dma_iova_try_alloc calls 2026-05-07 14:07:36 -04:00
drm_gpuvm.c drm/exec: Remove the index parameter from drm_exec_for_each_locked_obj[_reverse] 2026-05-25 10:45:38 +02:00
drm_internal.h
drm_ioc32.c drm/ioc32: stop speculation on the drm_compat_ioctl path 2026-04-02 08:24:55 +02:00
drm_ioctl.c
drm_kms_helper_common.c
drm_lease.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
drm_managed.c
drm_mipi_dbi.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_mipi_dsi.c drm/mipi-dsi: add mipi_dsi_shutdown_peripheral_multi 2026-04-24 10:12:16 -07:00
drm_mm.c
drm_mode_config.c Linux 7.0-rc7 2026-04-07 12:36:31 +02:00
drm_mode_object.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_modes.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
drm_modeset_helper.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_modeset_lock.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
drm_of.c drm: of: forbid bridge-only calls to drm_of_find_panel_or_bridge() 2026-05-19 10:57:26 +02:00
drm_pagemap_util.c drm/pagemap_util: Ensure proper cache lock management on free 2026-03-17 15:39:07 +01:00
drm_pagemap.c drm: Drop HPAGE_PMD_SIZE dependency in dma_iova_try_alloc calls 2026-05-07 14:07:36 -04:00
drm_panel_backlight_quirks.c
drm_panel_orientation_quirks.c
drm_panel.c drm/panel: fix kernel-doc warning for devm_drm_panel_add() 2026-05-26 16:00:32 +02:00
drm_panic_qr.rs
drm_panic.c
drm_pci.c
drm_plane_helper.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
drm_plane.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
drm_prime.c drm/prime: Limit scatter list size with dedicated DMA device 2026-03-23 13:23:29 +08:00
drm_print.c
drm_privacy_screen_x86.c
drm_privacy_screen.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
drm_probe_helper.c drm/probe-helper: replace use of system_wq with system_percpu_wq 2026-02-09 09:41:09 +01:00
drm_property.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
drm_ras_genl_family.c drm/ras: Introduce the DRM RAS infrastructure over generic netlink 2026-03-05 19:38:55 -05:00
drm_ras_nl.c drm/drm_ras: Add clear-error-counter netlink command to drm_ras 2026-04-24 08:43:42 -04:00
drm_ras_nl.h drm/drm_ras: Add clear-error-counter netlink command to drm_ras 2026-04-24 08:43:42 -04:00
drm_ras.c drm/drm_ras: Add clear-error-counter netlink command to drm_ras 2026-04-24 08:43:42 -04:00
drm_rect.c
drm_self_refresh_helper.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_simple_kms_helper.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_suballoc.c Merge tag 'drm-xe-next-2026-03-02' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-next 2026-03-03 10:37:29 +10:00
drm_syncobj.c drm/syncobj: Fix memory leak in drm_syncobj_find_fence() 2026-05-18 11:19:59 +01:00
drm_sysfs.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
drm_trace_points.c
drm_trace.h
drm_vblank_helper.c drm: Rename struct drm_atomic_state to drm_atomic_commit 2026-05-04 14:05:04 +10:00
drm_vblank_work.c
drm_vblank.c drm/vblank: Extract get_vblank_counter_and_timestamp() 2026-03-27 13:40:44 +02:00
drm_vma_manager.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
drm_writeback.c dma-buf: inline spinlock for fence protection v5 2026-02-23 16:14:19 +01:00
Kconfig DRM Rust changes for v7.1-rc1 2026-04-01 07:32:05 +10:00
Kconfig.debug drm: fix dead default for DRM_TTM_KUNIT_TEST 2026-03-24 16:19:04 +01:00
Makefile Merge drm/drm-next into drm-xe-next 2026-03-12 07:23:23 -07:00