* [PATCH] drm/intel/display: Use drmm for intel_mode_config_cleanup
@ 2026-04-08 11:47 Maarten Lankhorst
2026-04-08 19:39 ` ✗ i915.CI.BAT: failure for " Patchwork
2026-04-10 9:17 ` [PATCH] " Ville Syrjälä
0 siblings, 2 replies; 4+ messages in thread
From: Maarten Lankhorst @ 2026-04-08 11:47 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Maarten Lankhorst
When force unbinding the driver on xe, xe unloads cleanly except for
framebuffers and user blobs.
This happens because intel_mode_config_cleanup is called during driver
unbind, but it should be called only after all drm files are closed,
during drmm cleanup.
Related warnings for framebuffers on the subtest:
[ 739.713076] ------------[ cut here ]------------
WARN_ON(!list_empty(&dev->mode_config.fb_list))
[ 739.713079] WARNING: drivers/gpu/drm/drm_mode_config.c:584 at drm_mode_config_cleanup+0x30b/0x320 [drm], CPU#12: xe_module_load/13145
....
[ 739.713328] Call Trace:
[ 739.713330] <TASK>
[ 739.713335] ? intel_pmdemand_destroy_state+0x11/0x20 [xe]
[ 739.713574] ? intel_atomic_global_obj_cleanup+0xe4/0x1a0 [xe]
[ 739.713794] intel_display_driver_remove_noirq+0x51/0xb0 [xe]
[ 739.714041] xe_display_fini_early+0x33/0x50 [xe]
[ 739.714284] devm_action_release+0xf/0x20
[ 739.714294] devres_release_all+0xad/0xf0
[ 739.714301] device_unbind_cleanup+0x12/0xa0
[ 739.714305] device_release_driver_internal+0x1b7/0x210
[ 739.714311] device_driver_detach+0x14/0x20
[ 739.714315] unbind_store+0xa6/0xb0
[ 739.714319] drv_attr_store+0x21/0x30
[ 739.714322] sysfs_kf_write+0x48/0x60
[ 739.714328] kernfs_fop_write_iter+0x16b/0x240
[ 739.714333] vfs_write+0x266/0x520
[ 739.714341] ksys_write+0x72/0xe0
[ 739.714345] __x64_sys_write+0x19/0x20
[ 739.714347] x64_sys_call+0xa15/0xa30
[ 739.714355] do_syscall_64+0xd8/0xab0
[ 739.714361] entry_SYSCALL_64_after_hwframe+0x4b/0x53
and
[ 739.714459] ------------[ cut here ]------------
[ 739.714461] xe 0000:67:00.0: [drm] drm_WARN_ON(!list_empty(&fb->filp_head))
[ 739.714464] WARNING: drivers/gpu/drm/drm_framebuffer.c:833 at drm_framebuffer_free+0x6c/0x90 [drm], CPU#12: xe_module_load/13145
[ 739.714715] RIP: 0010:drm_framebuffer_free+0x7a/0x90 [drm]
...
[ 739.714869] Call Trace:
[ 739.714871] <TASK>
[ 739.714876] drm_mode_config_cleanup+0x26a/0x320 [drm]
[ 739.714998] ? __drm_printfn_seq_file+0x20/0x20 [drm]
[ 739.715115] ? drm_mode_config_cleanup+0x207/0x320 [drm]
[ 739.715235] intel_display_driver_remove_noirq+0x51/0xb0 [xe]
[ 739.715576] xe_display_fini_early+0x33/0x50 [xe]
[ 739.715821] devm_action_release+0xf/0x20
[ 739.715828] devres_release_all+0xad/0xf0
[ 739.715843] device_unbind_cleanup+0x12/0xa0
[ 739.715850] device_release_driver_internal+0x1b7/0x210
[ 739.715856] device_driver_detach+0x14/0x20
[ 739.715860] unbind_store+0xa6/0xb0
[ 739.715865] drv_attr_store+0x21/0x30
[ 739.715868] sysfs_kf_write+0x48/0x60
[ 739.715873] kernfs_fop_write_iter+0x16b/0x240
[ 739.715878] vfs_write+0x266/0x520
[ 739.715886] ksys_write+0x72/0xe0
[ 739.715890] __x64_sys_write+0x19/0x20
[ 739.715893] x64_sys_call+0xa15/0xa30
[ 739.715900] do_syscall_64+0xd8/0xab0
[ 739.715905] entry_SYSCALL_64_after_hwframe+0x4b/0x53
and then finally file close blows up:
[ 743.186530] Oops: general protection fault, probably for non-canonical address 0xdead000000000122: 0000 [#1] SMP
[ 743.186535] CPU: 3 UID: 1000 PID: 3453 Comm: kwin_wayland Tainted: G W 7.0.0-rc1-valkyria+ #110 PREEMPT_{RT,(lazy)}
[ 743.186537] Tainted: [W]=WARN
[ 743.186538] Hardware name: Gigabyte Technology Co., Ltd. X299 AORUS Gaming 3/X299 AORUS Gaming 3-CF, BIOS F8n 12/06/2021
[ 743.186539] RIP: 0010:drm_framebuffer_cleanup+0x55/0xc0 [drm]
[ 743.186588] Code: d8 72 73 0f b6 42 05 ff c3 39 c3 72 e8 49 8d bd 50 07 00 00 31 f6 e8 3a 80 d3 e1 49 8b 44 24 10 49 8d 7c 24 08 49 8b 54 24 08 <48> 3b 38 0f 85 95 7f 02 00 48 3b 7a 08 0f 85 8b 7f 02 00 48 89 42
[ 743.186589] RSP: 0018:ffffc900085e3cf8 EFLAGS: 00010202
[ 743.186591] RAX: dead000000000122 RBX: 0000000000000001 RCX: ffffffff8217ed03
[ 743.186592] RDX: dead000000000100 RSI: 0000000000000000 RDI: ffff88814675ba08
[ 743.186593] RBP: ffffc900085e3d10 R08: 0000000000000000 R09: 0000000000000000
[ 743.186593] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88814675ba00
[ 743.186594] R13: ffff88810d778000 R14: ffff888119f6dca0 R15: ffff88810c660bb0
[ 743.186595] FS: 00007ff377d21280(0000) GS:ffff888cec3f8000(0000) knlGS:0000000000000000
[ 743.186596] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 743.186596] CR2: 000055690b55e000 CR3: 0000000113586003 CR4: 00000000003706f0
[ 743.186597] Call Trace:
[ 743.186598] <TASK>
[ 743.186603] intel_user_framebuffer_destroy+0x12/0x90 [xe]
[ 743.186722] drm_framebuffer_free+0x3a/0x90 [drm]
[ 743.186750] ? trace_hardirqs_on+0x5f/0x120
[ 743.186754] drm_mode_object_put+0x51/0x70 [drm]
[ 743.186786] drm_fb_release+0x105/0x190 [drm]
[ 743.186812] ? rt_mutex_slowunlock+0x3aa/0x410
[ 743.186817] ? rt_spin_lock+0xea/0x1b0
[ 743.186819] drm_file_free+0x1e0/0x2c0 [drm]
[ 743.186843] drm_release_noglobal+0x91/0xf0 [drm]
[ 743.186865] __fput+0x100/0x2e0
[ 743.186869] fput_close_sync+0x40/0xa0
[ 743.186870] __x64_sys_close+0x3e/0x80
[ 743.186873] x64_sys_call+0xa07/0xa30
[ 743.186879] do_syscall_64+0xd8/0xab0
[ 743.186881] entry_SYSCALL_64_after_hwframe+0x4b/0x53
[ 743.186882] RIP: 0033:0x7ff37e567732
[ 743.186884] Code: 08 0f 85 a1 38 ff ff 49 89 fb 48 89 f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89 5c 24 08 0f 05 <c3> 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 f3 0f 1e fa 55 bf 01 00
[ 743.186885] RSP: 002b:00007ffc818169a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
[ 743.186886] RAX: ffffffffffffffda RBX: 00007ffc81816a30 RCX: 00007ff37e567732
[ 743.186887] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000012
[ 743.186888] RBP: 00007ffc818169d0 R08: 0000000000000000 R09: 0000000000000000
[ 743.186889] R10: 0000000000000000 R11: 0000000000000246 R12: 000055d60a7996e0
[ 743.186889] R13: 00007ffc81816a90 R14: 00007ffc81816a90 R15: 000055d60a782a30
[ 743.186892] </TASK>
[ 743.186893] Modules linked in: rfcomm snd_hrtimer xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_addrtype nft_compat x_tables nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables overlay cfg80211 bnep mtd_intel_dg snd_hda_codec_intelhdmi mtd snd_hda_codec_hdmi nls_utf8 mxm_wmi intel_wmi_thunderbolt gigabyte_wmi wmi_bmof xe drm_gpuvm drm_gpusvm_helper i2c_algo_bit drm_buddy drm_ttm_helper ttm video drm_suballoc_helper gpu_sched drm_client_lib drm_exec drm_display_helper cec drm_kunit_helpers drm_kms_helper kunit x86_pkg_temp_thermal intel_powerclamp coretemp snd_hda_codec_alc882 snd_hda_codec_realtek_lib snd_hda_codec_generic snd_hda_intel snd_soc_avs snd_soc_hda_codec snd_hda_ext_core snd_hda_codec snd_hwdep snd_hda_core snd_intel_dspcfg snd_soc_core snd_compress ac97_bus snd_pcm snd_seq snd_seq_device snd_timer i2c_i801 i2c_mux snd i2c_smbus btusb btrtl btbcm btmtk btintel bluetooth ecdh_generic rfkill ecc mei_me mei ioatdma dca wmi nfsd drm i2c_dev fuse nfnetlink
[ 743.186938] ---[ end trace 0000000000000000 ]---
And for property blobs:
[ 371.072940] BUG: unable to handle page fault for address: 000001ffffffffff
[ 371.072944] #PF: supervisor read access in kernel mode
[ 371.072945] #PF: error_code(0x0000) - not-present page
[ 371.072947] PGD 0 P4D 0
[ 371.072950] Oops: Oops: 0000 [#1] SMP
[ 371.072953] CPU: 0 UID: 1000 PID: 3693 Comm: kwin_wayland Not tainted 7.0.0-rc1-valkyria+ #111 PREEMPT_{RT,(lazy)}
[ 371.072956] Hardware name: Gigabyte Technology Co., Ltd. X299 AORUS Gaming 3/X299 AORUS Gaming 3-CF, BIOS F8n 12/06/2021
[ 371.072957] RIP: 0010:drm_property_destroy_user_blobs+0x3b/0x90 [drm]
[ 371.073019] Code: 00 00 48 83 ec 10 48 8b 86 30 01 00 00 48 39 c3 74 59 48 89 c2 48 8d 48 c8 48 8b 00 4c 8d 60 c8 eb 04 4c 8d 60 c8 48 8b 71 40 <48> 39 16 0f 85 39 32 01 00 48 3b 50 08 0f 85 2f 32 01 00 48 89 70
[ 371.073021] RSP: 0018:ffffc90006a73de8 EFLAGS: 00010293
[ 371.073022] RAX: 000001ffffffffff RBX: ffff888118a1a930 RCX: ffff8881b92355c0
[ 371.073024] RDX: ffff8881b92355f8 RSI: 000001ffffffffff RDI: ffff888118be4000
[ 371.073025] RBP: ffffc90006a73e08 R08: ffff8881009b7300 R09: ffff888cecc5b000
[ 371.073026] R10: ffffc90006a73e90 R11: 0000000000000002 R12: 000001ffffffffc7
[ 371.073027] R13: ffff888118a1a980 R14: ffff88810b366d20 R15: ffff888118a1a970
[ 371.073028] FS: 00007f1faccbb280(0000) GS:ffff888cec2db000(0000) knlGS:0000000000000000
[ 371.073029] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 371.073030] CR2: 000001ffffffffff CR3: 000000010655c001 CR4: 00000000003706f0
[ 371.073031] Call Trace:
[ 371.073033] <TASK>
[ 371.073036] drm_file_free+0x1df/0x2a0 [drm]
[ 371.073077] drm_release_noglobal+0x7a/0xe0 [drm]
[ 371.073113] __fput+0xe2/0x2b0
[ 371.073118] fput_close_sync+0x40/0xa0
[ 371.073119] __x64_sys_close+0x3e/0x80
[ 371.073122] x64_sys_call+0xa07/0xa30
[ 371.073126] do_syscall_64+0xc0/0x840
[ 371.073130] entry_SYSCALL_64_after_hwframe+0x4b/0x53
[ 371.073132] RIP: 0033:0x7f1fb3501732
[ 371.073133] Code: 08 0f 85 a1 38 ff ff 49 89 fb 48 89 f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89 5c 24 08 0f 05 <c3> 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 f3 0f 1e fa 55 bf 01 00
[ 371.073135] RSP: 002b:00007ffe8e6f0278 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
[ 371.073136] RAX: ffffffffffffffda RBX: 00007ffe8e6f0300 RCX: 00007f1fb3501732
[ 371.073137] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000012
[ 371.073138] RBP: 00007ffe8e6f02a0 R08: 0000000000000000 R09: 0000000000000000
[ 371.073139] R10: 0000000000000000 R11: 0000000000000246 R12: 00005585ba46eea0
[ 371.073140] R13: 00007ffe8e6f0360 R14: 00007ffe8e6f0360 R15: 00005585ba458a30
[ 371.073143] </TASK>
[ 371.073144] Modules linked in: rfcomm snd_hrtimer xt_addrtype xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp nft_compat x_tables nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables overlay cfg80211 bnep snd_hda_codec_intelhdmi snd_hda_codec_hdmi mtd_intel_dg mtd nls_utf8 wmi_bmof mxm_wmi gigabyte_wmi intel_wmi_thunderbolt xe drm_gpuvm drm_gpusvm_helper i2c_algo_bit drm_buddy drm_ttm_helper ttm video drm_suballoc_helper gpu_sched drm_client_lib drm_exec drm_display_helper cec drm_kunit_helpers drm_kms_helper kunit x86_pkg_temp_thermal intel_powerclamp coretemp snd_hda_codec_alc882 snd_hda_codec_realtek_lib snd_hda_codec_generic snd_hda_intel snd_soc_avs snd_soc_hda_codec snd_hda_ext_core snd_hda_codec snd_hwdep snd_hda_core snd_intel_dspcfg snd_soc_core snd_compress ac97_bus snd_pcm snd_seq snd_seq_device snd_timer i2c_i801 btusb i2c_mux i2c_smbus btrtl snd btbcm btmtk btintel bluetooth ecdh_generic rfkill ecc mei_me mei ioatdma dca wmi nfsd drm i2c_dev fuse nfnetlink
[ 371.073198] CR2: 000001ffffffffff
[ 371.073199] ---[ end trace 0000000000000000 ]---
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
.../drm/i915/display/intel_display_driver.c | 28 ++++++++++---------
1 file changed, 15 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
index 23bfecc983e8d..c073f7c1c0805 100644
--- a/drivers/gpu/drm/i915/display/intel_display_driver.c
+++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
@@ -12,6 +12,7 @@
#include <drm/display/drm_dp_mst_helper.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_client_event.h>
+#include <drm/drm_managed.h>
#include <drm/drm_mode_config.h>
#include <drm/drm_privacy_screen_consumer.h>
#include <drm/drm_print.h>
@@ -111,7 +112,15 @@ static const struct drm_mode_config_helper_funcs intel_mode_config_funcs = {
.atomic_commit_setup = drm_dp_mst_atomic_setup_commit,
};
-static void intel_mode_config_init(struct intel_display *display)
+static void intel_mode_config_cleanup(struct drm_device *dev, void *arg)
+{
+ struct intel_display *display = arg;
+
+ intel_atomic_global_obj_cleanup(display);
+ drm_mode_config_cleanup(display->drm);
+}
+
+static int intel_mode_config_init(struct intel_display *display)
{
struct drm_mode_config *mode_config = &display->drm->mode_config;
@@ -148,12 +157,8 @@ static void intel_mode_config_init(struct intel_display *display)
}
intel_cursor_mode_config_init(display);
-}
-static void intel_mode_config_cleanup(struct intel_display *display)
-{
- intel_atomic_global_obj_cleanup(display);
- drm_mode_config_cleanup(display->drm);
+ return drmm_add_action_or_reset(display->drm, intel_mode_config_cleanup, display);
}
static void intel_plane_possible_crtcs_init(struct intel_display *display)
@@ -255,7 +260,9 @@ int intel_display_driver_probe_noirq(struct intel_display *display)
intel_dmc_init(display);
- intel_mode_config_init(display);
+ ret = intel_mode_config_init(display);
+ if (ret)
+ goto cleanup_wq_unordered;
ret = intel_cdclk_init(display);
if (ret)
@@ -456,7 +463,7 @@ int intel_display_driver_probe_nogem(struct intel_display *display)
ret = intel_crtc_init(display);
if (ret)
- goto err_mode_config;
+ return ret;
intel_plane_possible_crtcs_init(display);
intel_dpll_init(display);
@@ -497,9 +504,6 @@ int intel_display_driver_probe_nogem(struct intel_display *display)
err_hdcp:
intel_hdcp_component_fini(display);
-err_mode_config:
- intel_mode_config_cleanup(display);
-
return ret;
}
@@ -618,8 +622,6 @@ void intel_display_driver_remove_noirq(struct intel_display *display)
intel_hdcp_component_fini(display);
- intel_mode_config_cleanup(display);
-
intel_dp_tunnel_mgr_cleanup(display);
intel_overlay_cleanup(display);
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* ✗ i915.CI.BAT: failure for drm/intel/display: Use drmm for intel_mode_config_cleanup
2026-04-08 11:47 [PATCH] drm/intel/display: Use drmm for intel_mode_config_cleanup Maarten Lankhorst
@ 2026-04-08 19:39 ` Patchwork
2026-04-10 9:17 ` [PATCH] " Ville Syrjälä
1 sibling, 0 replies; 4+ messages in thread
From: Patchwork @ 2026-04-08 19:39 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 13384 bytes --]
== Series Details ==
Series: drm/intel/display: Use drmm for intel_mode_config_cleanup
URL : https://patchwork.freedesktop.org/series/164528/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_18292 -> Patchwork_164528v1
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_164528v1 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_164528v1, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/index.html
Participating hosts (42 -> 40)
------------------------------
Missing (2): bat-dg2-13 fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_164528v1:
### IGT changes ###
#### Possible regressions ####
* igt@core_hotunplug@unbind-rebind:
- fi-cfl-guc: [PASS][1] -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-cfl-guc/igt@core_hotunplug@unbind-rebind.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-cfl-guc/igt@core_hotunplug@unbind-rebind.html
- bat-dg2-9: [PASS][3] -> [ABORT][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-dg2-9/igt@core_hotunplug@unbind-rebind.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-dg2-9/igt@core_hotunplug@unbind-rebind.html
- fi-kbl-x1275: [PASS][5] -> [ABORT][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-kbl-x1275/igt@core_hotunplug@unbind-rebind.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-kbl-x1275/igt@core_hotunplug@unbind-rebind.html
- bat-adlp-11: [PASS][7] -> [ABORT][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-adlp-11/igt@core_hotunplug@unbind-rebind.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-adlp-11/igt@core_hotunplug@unbind-rebind.html
- bat-dg1-6: [PASS][9] -> [ABORT][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-dg1-6/igt@core_hotunplug@unbind-rebind.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-dg1-6/igt@core_hotunplug@unbind-rebind.html
- fi-cfl-8700k: [PASS][11] -> [ABORT][12]
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-cfl-8700k/igt@core_hotunplug@unbind-rebind.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-cfl-8700k/igt@core_hotunplug@unbind-rebind.html
- bat-kbl-2: [PASS][13] -> [ABORT][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-kbl-2/igt@core_hotunplug@unbind-rebind.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-kbl-2/igt@core_hotunplug@unbind-rebind.html
- bat-adlp-6: [PASS][15] -> [ABORT][16]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-adlp-6/igt@core_hotunplug@unbind-rebind.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-adlp-6/igt@core_hotunplug@unbind-rebind.html
- fi-skl-6600u: [PASS][17] -> [ABORT][18]
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-skl-6600u/igt@core_hotunplug@unbind-rebind.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-skl-6600u/igt@core_hotunplug@unbind-rebind.html
- bat-twl-2: [PASS][19] -> [ABORT][20]
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-twl-2/igt@core_hotunplug@unbind-rebind.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-twl-2/igt@core_hotunplug@unbind-rebind.html
- fi-ivb-3770: [PASS][21] -> [ABORT][22]
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-ivb-3770/igt@core_hotunplug@unbind-rebind.html
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-ivb-3770/igt@core_hotunplug@unbind-rebind.html
- bat-dg2-14: [PASS][23] -> [ABORT][24]
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-dg2-14/igt@core_hotunplug@unbind-rebind.html
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-dg2-14/igt@core_hotunplug@unbind-rebind.html
- fi-elk-e7500: [PASS][25] -> [ABORT][26]
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-elk-e7500/igt@core_hotunplug@unbind-rebind.html
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-elk-e7500/igt@core_hotunplug@unbind-rebind.html
- bat-dg2-8: [PASS][27] -> [ABORT][28]
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-dg2-8/igt@core_hotunplug@unbind-rebind.html
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-dg2-8/igt@core_hotunplug@unbind-rebind.html
- fi-bsw-nick: [PASS][29] -> [ABORT][30]
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-bsw-nick/igt@core_hotunplug@unbind-rebind.html
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-bsw-nick/igt@core_hotunplug@unbind-rebind.html
- fi-bsw-n3050: [PASS][31] -> [ABORT][32]
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-bsw-n3050/igt@core_hotunplug@unbind-rebind.html
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-bsw-n3050/igt@core_hotunplug@unbind-rebind.html
- bat-mtlp-9: [PASS][33] -> [ABORT][34]
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-mtlp-9/igt@core_hotunplug@unbind-rebind.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-mtlp-9/igt@core_hotunplug@unbind-rebind.html
- bat-arls-6: [PASS][35] -> [ABORT][36]
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-arls-6/igt@core_hotunplug@unbind-rebind.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-arls-6/igt@core_hotunplug@unbind-rebind.html
- fi-hsw-4770: [PASS][37] -> [ABORT][38]
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-hsw-4770/igt@core_hotunplug@unbind-rebind.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-hsw-4770/igt@core_hotunplug@unbind-rebind.html
- bat-mtlp-8: [PASS][39] -> [ABORT][40]
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-mtlp-8/igt@core_hotunplug@unbind-rebind.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-mtlp-8/igt@core_hotunplug@unbind-rebind.html
- bat-adls-6: [PASS][41] -> [ABORT][42]
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-adls-6/igt@core_hotunplug@unbind-rebind.html
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-adls-6/igt@core_hotunplug@unbind-rebind.html
- bat-arls-5: [PASS][43] -> [ABORT][44]
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-arls-5/igt@core_hotunplug@unbind-rebind.html
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-arls-5/igt@core_hotunplug@unbind-rebind.html
- bat-arlh-2: [PASS][45] -> [ABORT][46]
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-arlh-2/igt@core_hotunplug@unbind-rebind.html
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-arlh-2/igt@core_hotunplug@unbind-rebind.html
- fi-rkl-11600: [PASS][47] -> [ABORT][48]
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-rkl-11600/igt@core_hotunplug@unbind-rebind.html
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-rkl-11600/igt@core_hotunplug@unbind-rebind.html
- bat-arlh-3: [PASS][49] -> [ABORT][50]
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-arlh-3/igt@core_hotunplug@unbind-rebind.html
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-arlh-3/igt@core_hotunplug@unbind-rebind.html
- fi-pnv-d510: [PASS][51] -> [ABORT][52]
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-pnv-d510/igt@core_hotunplug@unbind-rebind.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-pnv-d510/igt@core_hotunplug@unbind-rebind.html
- bat-dg1-7: [PASS][53] -> [ABORT][54]
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-dg1-7/igt@core_hotunplug@unbind-rebind.html
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-dg1-7/igt@core_hotunplug@unbind-rebind.html
- fi-glk-j4005: [PASS][55] -> [ABORT][56]
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-glk-j4005/igt@core_hotunplug@unbind-rebind.html
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-glk-j4005/igt@core_hotunplug@unbind-rebind.html
- bat-adlp-9: [PASS][57] -> [ABORT][58]
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-adlp-9/igt@core_hotunplug@unbind-rebind.html
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-adlp-9/igt@core_hotunplug@unbind-rebind.html
- bat-rpls-4: [PASS][59] -> [ABORT][60]
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-rpls-4/igt@core_hotunplug@unbind-rebind.html
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-rpls-4/igt@core_hotunplug@unbind-rebind.html
- fi-cfl-8109u: [PASS][61] -> [ABORT][62]
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-cfl-8109u/igt@core_hotunplug@unbind-rebind.html
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-cfl-8109u/igt@core_hotunplug@unbind-rebind.html
- fi-kbl-7567u: [PASS][63] -> [ABORT][64]
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-kbl-7567u/igt@core_hotunplug@unbind-rebind.html
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-kbl-7567u/igt@core_hotunplug@unbind-rebind.html
- bat-twl-1: [PASS][65] -> [ABORT][66]
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-twl-1/igt@core_hotunplug@unbind-rebind.html
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-twl-1/igt@core_hotunplug@unbind-rebind.html
- fi-kbl-8809g: [PASS][67] -> [ABORT][68]
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-kbl-8809g/igt@core_hotunplug@unbind-rebind.html
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-kbl-8809g/igt@core_hotunplug@unbind-rebind.html
- bat-jsl-5: [PASS][69] -> [ABORT][70]
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-jsl-5/igt@core_hotunplug@unbind-rebind.html
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-jsl-5/igt@core_hotunplug@unbind-rebind.html
- bat-rplp-1: [PASS][71] -> [ABORT][72]
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-rplp-1/igt@core_hotunplug@unbind-rebind.html
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-rplp-1/igt@core_hotunplug@unbind-rebind.html
- fi-ilk-650: [PASS][73] -> [ABORT][74]
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-ilk-650/igt@core_hotunplug@unbind-rebind.html
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-ilk-650/igt@core_hotunplug@unbind-rebind.html
- fi-tgl-1115g4: [PASS][75] -> [ABORT][76]
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-tgl-1115g4/igt@core_hotunplug@unbind-rebind.html
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-tgl-1115g4/igt@core_hotunplug@unbind-rebind.html
#### Warnings ####
* igt@core_hotunplug@unbind-rebind:
- bat-apl-1: [DMESG-WARN][77] ([i915#13735] / [i915#180]) -> [ABORT][78]
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/bat-apl-1/igt@core_hotunplug@unbind-rebind.html
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/bat-apl-1/igt@core_hotunplug@unbind-rebind.html
Known issues
------------
Here are the changes found in Patchwork_164528v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_hdmi_inject@inject-audio:
- fi-tgl-1115g4: [PASS][79] -> [SKIP][80] ([i915#13030])
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18292/fi-tgl-1115g4/igt@kms_hdmi_inject@inject-audio.html
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/fi-tgl-1115g4/igt@kms_hdmi_inject@inject-audio.html
[i915#13030]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13030
[i915#13735]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13735
[i915#180]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/180
Build changes
-------------
* Linux: CI_DRM_18292 -> Patchwork_164528v1
CI-20190529: 20190529
CI_DRM_18292: f074368a55893ee121ba2920497b6c25e265d190 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8850: 8850
Patchwork_164528v1: f074368a55893ee121ba2920497b6c25e265d190 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_164528v1/index.html
[-- Attachment #2: Type: text/html, Size: 14187 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/intel/display: Use drmm for intel_mode_config_cleanup
2026-04-08 11:47 [PATCH] drm/intel/display: Use drmm for intel_mode_config_cleanup Maarten Lankhorst
2026-04-08 19:39 ` ✗ i915.CI.BAT: failure for " Patchwork
@ 2026-04-10 9:17 ` Ville Syrjälä
2026-04-10 18:25 ` Maarten Lankhorst
1 sibling, 1 reply; 4+ messages in thread
From: Ville Syrjälä @ 2026-04-10 9:17 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx, intel-xe
On Wed, Apr 08, 2026 at 01:47:56PM +0200, Maarten Lankhorst wrote:
> When force unbinding the driver on xe, xe unloads cleanly except for
> framebuffers and user blobs.
>
> This happens because intel_mode_config_cleanup is called during driver
> unbind, but it should be called only after all drm files are closed,
> during drmm cleanup.
>
> Related warnings for framebuffers on the subtest:
> [ 739.713076] ------------[ cut here ]------------
> WARN_ON(!list_empty(&dev->mode_config.fb_list))
> [ 739.713079] WARNING: drivers/gpu/drm/drm_mode_config.c:584 at drm_mode_config_cleanup+0x30b/0x320 [drm], CPU#12: xe_module_load/13145
> ....
> [ 739.713328] Call Trace:
> [ 739.713330] <TASK>
> [ 739.713335] ? intel_pmdemand_destroy_state+0x11/0x20 [xe]
> [ 739.713574] ? intel_atomic_global_obj_cleanup+0xe4/0x1a0 [xe]
> [ 739.713794] intel_display_driver_remove_noirq+0x51/0xb0 [xe]
> [ 739.714041] xe_display_fini_early+0x33/0x50 [xe]
> [ 739.714284] devm_action_release+0xf/0x20
> [ 739.714294] devres_release_all+0xad/0xf0
> [ 739.714301] device_unbind_cleanup+0x12/0xa0
> [ 739.714305] device_release_driver_internal+0x1b7/0x210
> [ 739.714311] device_driver_detach+0x14/0x20
> [ 739.714315] unbind_store+0xa6/0xb0
> [ 739.714319] drv_attr_store+0x21/0x30
> [ 739.714322] sysfs_kf_write+0x48/0x60
> [ 739.714328] kernfs_fop_write_iter+0x16b/0x240
> [ 739.714333] vfs_write+0x266/0x520
> [ 739.714341] ksys_write+0x72/0xe0
> [ 739.714345] __x64_sys_write+0x19/0x20
> [ 739.714347] x64_sys_call+0xa15/0xa30
> [ 739.714355] do_syscall_64+0xd8/0xab0
> [ 739.714361] entry_SYSCALL_64_after_hwframe+0x4b/0x53
>
> and
>
> [ 739.714459] ------------[ cut here ]------------
> [ 739.714461] xe 0000:67:00.0: [drm] drm_WARN_ON(!list_empty(&fb->filp_head))
> [ 739.714464] WARNING: drivers/gpu/drm/drm_framebuffer.c:833 at drm_framebuffer_free+0x6c/0x90 [drm], CPU#12: xe_module_load/13145
> [ 739.714715] RIP: 0010:drm_framebuffer_free+0x7a/0x90 [drm]
> ...
> [ 739.714869] Call Trace:
> [ 739.714871] <TASK>
> [ 739.714876] drm_mode_config_cleanup+0x26a/0x320 [drm]
> [ 739.714998] ? __drm_printfn_seq_file+0x20/0x20 [drm]
> [ 739.715115] ? drm_mode_config_cleanup+0x207/0x320 [drm]
> [ 739.715235] intel_display_driver_remove_noirq+0x51/0xb0 [xe]
> [ 739.715576] xe_display_fini_early+0x33/0x50 [xe]
> [ 739.715821] devm_action_release+0xf/0x20
> [ 739.715828] devres_release_all+0xad/0xf0
> [ 739.715843] device_unbind_cleanup+0x12/0xa0
> [ 739.715850] device_release_driver_internal+0x1b7/0x210
> [ 739.715856] device_driver_detach+0x14/0x20
> [ 739.715860] unbind_store+0xa6/0xb0
> [ 739.715865] drv_attr_store+0x21/0x30
> [ 739.715868] sysfs_kf_write+0x48/0x60
> [ 739.715873] kernfs_fop_write_iter+0x16b/0x240
> [ 739.715878] vfs_write+0x266/0x520
> [ 739.715886] ksys_write+0x72/0xe0
> [ 739.715890] __x64_sys_write+0x19/0x20
> [ 739.715893] x64_sys_call+0xa15/0xa30
> [ 739.715900] do_syscall_64+0xd8/0xab0
> [ 739.715905] entry_SYSCALL_64_after_hwframe+0x4b/0x53
>
> and then finally file close blows up:
>
> [ 743.186530] Oops: general protection fault, probably for non-canonical address 0xdead000000000122: 0000 [#1] SMP
> [ 743.186535] CPU: 3 UID: 1000 PID: 3453 Comm: kwin_wayland Tainted: G W 7.0.0-rc1-valkyria+ #110 PREEMPT_{RT,(lazy)}
> [ 743.186537] Tainted: [W]=WARN
> [ 743.186538] Hardware name: Gigabyte Technology Co., Ltd. X299 AORUS Gaming 3/X299 AORUS Gaming 3-CF, BIOS F8n 12/06/2021
> [ 743.186539] RIP: 0010:drm_framebuffer_cleanup+0x55/0xc0 [drm]
> [ 743.186588] Code: d8 72 73 0f b6 42 05 ff c3 39 c3 72 e8 49 8d bd 50 07 00 00 31 f6 e8 3a 80 d3 e1 49 8b 44 24 10 49 8d 7c 24 08 49 8b 54 24 08 <48> 3b 38 0f 85 95 7f 02 00 48 3b 7a 08 0f 85 8b 7f 02 00 48 89 42
> [ 743.186589] RSP: 0018:ffffc900085e3cf8 EFLAGS: 00010202
> [ 743.186591] RAX: dead000000000122 RBX: 0000000000000001 RCX: ffffffff8217ed03
> [ 743.186592] RDX: dead000000000100 RSI: 0000000000000000 RDI: ffff88814675ba08
> [ 743.186593] RBP: ffffc900085e3d10 R08: 0000000000000000 R09: 0000000000000000
> [ 743.186593] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88814675ba00
> [ 743.186594] R13: ffff88810d778000 R14: ffff888119f6dca0 R15: ffff88810c660bb0
> [ 743.186595] FS: 00007ff377d21280(0000) GS:ffff888cec3f8000(0000) knlGS:0000000000000000
> [ 743.186596] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 743.186596] CR2: 000055690b55e000 CR3: 0000000113586003 CR4: 00000000003706f0
> [ 743.186597] Call Trace:
> [ 743.186598] <TASK>
> [ 743.186603] intel_user_framebuffer_destroy+0x12/0x90 [xe]
> [ 743.186722] drm_framebuffer_free+0x3a/0x90 [drm]
> [ 743.186750] ? trace_hardirqs_on+0x5f/0x120
> [ 743.186754] drm_mode_object_put+0x51/0x70 [drm]
> [ 743.186786] drm_fb_release+0x105/0x190 [drm]
> [ 743.186812] ? rt_mutex_slowunlock+0x3aa/0x410
> [ 743.186817] ? rt_spin_lock+0xea/0x1b0
> [ 743.186819] drm_file_free+0x1e0/0x2c0 [drm]
> [ 743.186843] drm_release_noglobal+0x91/0xf0 [drm]
> [ 743.186865] __fput+0x100/0x2e0
> [ 743.186869] fput_close_sync+0x40/0xa0
> [ 743.186870] __x64_sys_close+0x3e/0x80
> [ 743.186873] x64_sys_call+0xa07/0xa30
> [ 743.186879] do_syscall_64+0xd8/0xab0
> [ 743.186881] entry_SYSCALL_64_after_hwframe+0x4b/0x53
> [ 743.186882] RIP: 0033:0x7ff37e567732
> [ 743.186884] Code: 08 0f 85 a1 38 ff ff 49 89 fb 48 89 f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89 5c 24 08 0f 05 <c3> 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 f3 0f 1e fa 55 bf 01 00
> [ 743.186885] RSP: 002b:00007ffc818169a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
> [ 743.186886] RAX: ffffffffffffffda RBX: 00007ffc81816a30 RCX: 00007ff37e567732
> [ 743.186887] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000012
> [ 743.186888] RBP: 00007ffc818169d0 R08: 0000000000000000 R09: 0000000000000000
> [ 743.186889] R10: 0000000000000000 R11: 0000000000000246 R12: 000055d60a7996e0
> [ 743.186889] R13: 00007ffc81816a90 R14: 00007ffc81816a90 R15: 000055d60a782a30
> [ 743.186892] </TASK>
> [ 743.186893] Modules linked in: rfcomm snd_hrtimer xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_addrtype nft_compat x_tables nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables overlay cfg80211 bnep mtd_intel_dg snd_hda_codec_intelhdmi mtd snd_hda_codec_hdmi nls_utf8 mxm_wmi intel_wmi_thunderbolt gigabyte_wmi wmi_bmof xe drm_gpuvm drm_gpusvm_helper i2c_algo_bit drm_buddy drm_ttm_helper ttm video drm_suballoc_helper gpu_sched drm_client_lib drm_exec drm_display_helper cec drm_kunit_helpers drm_kms_helper kunit x86_pkg_temp_thermal intel_powerclamp coretemp snd_hda_codec_alc882 snd_hda_codec_realtek_lib snd_hda_codec_generic snd_hda_intel snd_soc_avs snd_soc_hda_codec snd_hda_ext_core snd_hda_codec snd_hwdep snd_hda_core snd_intel_dspcfg snd_soc_core snd_compress ac97_bus snd_pcm snd_seq snd_seq_device snd_timer i2c_i801 i2c_mux snd i2c_smbus btusb btrtl btbcm btmtk btintel bluetooth ecdh_generic rfkill ecc mei_me mei ioatdma dca wmi nfsd drm i2c_dev fuse nfnetlink
> [ 743.186938] ---[ end trace 0000000000000000 ]---
>
> And for property blobs:
>
> [ 371.072940] BUG: unable to handle page fault for address: 000001ffffffffff
> [ 371.072944] #PF: supervisor read access in kernel mode
> [ 371.072945] #PF: error_code(0x0000) - not-present page
> [ 371.072947] PGD 0 P4D 0
> [ 371.072950] Oops: Oops: 0000 [#1] SMP
> [ 371.072953] CPU: 0 UID: 1000 PID: 3693 Comm: kwin_wayland Not tainted 7.0.0-rc1-valkyria+ #111 PREEMPT_{RT,(lazy)}
> [ 371.072956] Hardware name: Gigabyte Technology Co., Ltd. X299 AORUS Gaming 3/X299 AORUS Gaming 3-CF, BIOS F8n 12/06/2021
> [ 371.072957] RIP: 0010:drm_property_destroy_user_blobs+0x3b/0x90 [drm]
> [ 371.073019] Code: 00 00 48 83 ec 10 48 8b 86 30 01 00 00 48 39 c3 74 59 48 89 c2 48 8d 48 c8 48 8b 00 4c 8d 60 c8 eb 04 4c 8d 60 c8 48 8b 71 40 <48> 39 16 0f 85 39 32 01 00 48 3b 50 08 0f 85 2f 32 01 00 48 89 70
> [ 371.073021] RSP: 0018:ffffc90006a73de8 EFLAGS: 00010293
> [ 371.073022] RAX: 000001ffffffffff RBX: ffff888118a1a930 RCX: ffff8881b92355c0
> [ 371.073024] RDX: ffff8881b92355f8 RSI: 000001ffffffffff RDI: ffff888118be4000
> [ 371.073025] RBP: ffffc90006a73e08 R08: ffff8881009b7300 R09: ffff888cecc5b000
> [ 371.073026] R10: ffffc90006a73e90 R11: 0000000000000002 R12: 000001ffffffffc7
> [ 371.073027] R13: ffff888118a1a980 R14: ffff88810b366d20 R15: ffff888118a1a970
> [ 371.073028] FS: 00007f1faccbb280(0000) GS:ffff888cec2db000(0000) knlGS:0000000000000000
> [ 371.073029] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 371.073030] CR2: 000001ffffffffff CR3: 000000010655c001 CR4: 00000000003706f0
> [ 371.073031] Call Trace:
> [ 371.073033] <TASK>
> [ 371.073036] drm_file_free+0x1df/0x2a0 [drm]
> [ 371.073077] drm_release_noglobal+0x7a/0xe0 [drm]
> [ 371.073113] __fput+0xe2/0x2b0
> [ 371.073118] fput_close_sync+0x40/0xa0
> [ 371.073119] __x64_sys_close+0x3e/0x80
> [ 371.073122] x64_sys_call+0xa07/0xa30
> [ 371.073126] do_syscall_64+0xc0/0x840
> [ 371.073130] entry_SYSCALL_64_after_hwframe+0x4b/0x53
> [ 371.073132] RIP: 0033:0x7f1fb3501732
> [ 371.073133] Code: 08 0f 85 a1 38 ff ff 49 89 fb 48 89 f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89 5c 24 08 0f 05 <c3> 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 f3 0f 1e fa 55 bf 01 00
> [ 371.073135] RSP: 002b:00007ffe8e6f0278 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
> [ 371.073136] RAX: ffffffffffffffda RBX: 00007ffe8e6f0300 RCX: 00007f1fb3501732
> [ 371.073137] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000012
> [ 371.073138] RBP: 00007ffe8e6f02a0 R08: 0000000000000000 R09: 0000000000000000
> [ 371.073139] R10: 0000000000000000 R11: 0000000000000246 R12: 00005585ba46eea0
> [ 371.073140] R13: 00007ffe8e6f0360 R14: 00007ffe8e6f0360 R15: 00005585ba458a30
> [ 371.073143] </TASK>
> [ 371.073144] Modules linked in: rfcomm snd_hrtimer xt_addrtype xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp nft_compat x_tables nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables overlay cfg80211 bnep snd_hda_codec_intelhdmi snd_hda_codec_hdmi mtd_intel_dg mtd nls_utf8 wmi_bmof mxm_wmi gigabyte_wmi intel_wmi_thunderbolt xe drm_gpuvm drm_gpusvm_helper i2c_algo_bit drm_buddy drm_ttm_helper ttm video drm_suballoc_helper gpu_sched drm_client_lib drm_exec drm_display_helper cec drm_kunit_helpers drm_kms_helper kunit x86_pkg_temp_thermal intel_powerclamp coretemp snd_hda_codec_alc882 snd_hda_codec_realtek_lib snd_hda_codec_generic snd_hda_intel snd_soc_avs snd_soc_hda_codec snd_hda_ext_core snd_hda_codec snd_hwdep snd_hda_core snd_intel_dspcfg snd_soc_core snd_compress ac97_bus snd_pcm snd_seq snd_seq_device snd_timer i2c_i801 btusb i2c_mux i2c_smbus btrtl snd btbcm btmtk btintel bluetooth ecdh_generic rfkill ecc mei_me mei ioatdma dca wmi nfsd drm i2c_dev fuse nfnetlink
> [ 371.073198] CR2: 000001ffffffffff
> [ 371.073199] ---[ end trace 0000000000000000 ]---
>
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
> ---
> .../drm/i915/display/intel_display_driver.c | 28 ++++++++++---------
> 1 file changed, 15 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
> index 23bfecc983e8d..c073f7c1c0805 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
> @@ -12,6 +12,7 @@
> #include <drm/display/drm_dp_mst_helper.h>
> #include <drm/drm_atomic_helper.h>
> #include <drm/drm_client_event.h>
> +#include <drm/drm_managed.h>
> #include <drm/drm_mode_config.h>
> #include <drm/drm_privacy_screen_consumer.h>
> #include <drm/drm_print.h>
> @@ -111,7 +112,15 @@ static const struct drm_mode_config_helper_funcs intel_mode_config_funcs = {
> .atomic_commit_setup = drm_dp_mst_atomic_setup_commit,
> };
>
> -static void intel_mode_config_init(struct intel_display *display)
> +static void intel_mode_config_cleanup(struct drm_device *dev, void *arg)
> +{
> + struct intel_display *display = arg;
> +
> + intel_atomic_global_obj_cleanup(display);
> + drm_mode_config_cleanup(display->drm);
> +}
> +
> +static int intel_mode_config_init(struct intel_display *display)
> {
> struct drm_mode_config *mode_config = &display->drm->mode_config;
>
> @@ -148,12 +157,8 @@ static void intel_mode_config_init(struct intel_display *display)
> }
>
> intel_cursor_mode_config_init(display);
> -}
>
> -static void intel_mode_config_cleanup(struct intel_display *display)
> -{
> - intel_atomic_global_obj_cleanup(display);
> - drm_mode_config_cleanup(display->drm);
> + return drmm_add_action_or_reset(display->drm, intel_mode_config_cleanup, display);
> }
>
> static void intel_plane_possible_crtcs_init(struct intel_display *display)
> @@ -255,7 +260,9 @@ int intel_display_driver_probe_noirq(struct intel_display *display)
>
> intel_dmc_init(display);
>
> - intel_mode_config_init(display);
> + ret = intel_mode_config_init(display);
> + if (ret)
> + goto cleanup_wq_unordered;
>
> ret = intel_cdclk_init(display);
> if (ret)
> @@ -456,7 +463,7 @@ int intel_display_driver_probe_nogem(struct intel_display *display)
>
> ret = intel_crtc_init(display);
> if (ret)
> - goto err_mode_config;
> + return ret;
>
> intel_plane_possible_crtcs_init(display);
> intel_dpll_init(display);
> @@ -497,9 +504,6 @@ int intel_display_driver_probe_nogem(struct intel_display *display)
>
> err_hdcp:
> intel_hdcp_component_fini(display);
> -err_mode_config:
> - intel_mode_config_cleanup(display);
> -
> return ret;
> }
>
> @@ -618,8 +622,6 @@ void intel_display_driver_remove_noirq(struct intel_display *display)
>
> intel_hdcp_component_fini(display);
>
> - intel_mode_config_cleanup(display);
> -
I don't much like this piecemeal random reordering of things.
The goal should be to have a handful of well defines display
driver functions that can be called by i915/xe in the appropriate
places.
I'm wondering what are all the other display things
that need to deal with the unbind vs. last close situation...
Do we have actual tests that keep the various kinds of user
interfaces open after unbind and tries to poke them?
> intel_dp_tunnel_mgr_cleanup(display);
>
> intel_overlay_cleanup(display);
> --
> 2.53.0
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/intel/display: Use drmm for intel_mode_config_cleanup
2026-04-10 9:17 ` [PATCH] " Ville Syrjälä
@ 2026-04-10 18:25 ` Maarten Lankhorst
0 siblings, 0 replies; 4+ messages in thread
From: Maarten Lankhorst @ 2026-04-10 18:25 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx, intel-xe
Hey,
Den 2026-04-10 kl. 11:17, skrev Ville Syrjälä:
> On Wed, Apr 08, 2026 at 01:47:56PM +0200, Maarten Lankhorst wrote:
>> When force unbinding the driver on xe, xe unloads cleanly except for
>> framebuffers and user blobs.
>>
>> This happens because intel_mode_config_cleanup is called during driver
>> unbind, but it should be called only after all drm files are closed,
>> during drmm cleanup.
>>
>> Related warnings for framebuffers on the subtest:
>> [ 739.713076] ------------[ cut here ]------------
>> WARN_ON(!list_empty(&dev->mode_config.fb_list))
>> [ 739.713079] WARNING: drivers/gpu/drm/drm_mode_config.c:584 at drm_mode_config_cleanup+0x30b/0x320 [drm], CPU#12: xe_module_load/13145
>> ....
>> [ 739.713328] Call Trace:
>> [ 739.713330] <TASK>
>> [ 739.713335] ? intel_pmdemand_destroy_state+0x11/0x20 [xe]
>> [ 739.713574] ? intel_atomic_global_obj_cleanup+0xe4/0x1a0 [xe]
>> [ 739.713794] intel_display_driver_remove_noirq+0x51/0xb0 [xe]
>> [ 739.714041] xe_display_fini_early+0x33/0x50 [xe]
>> [ 739.714284] devm_action_release+0xf/0x20
>> [ 739.714294] devres_release_all+0xad/0xf0
>> [ 739.714301] device_unbind_cleanup+0x12/0xa0
>> [ 739.714305] device_release_driver_internal+0x1b7/0x210
>> [ 739.714311] device_driver_detach+0x14/0x20
>> [ 739.714315] unbind_store+0xa6/0xb0
>> [ 739.714319] drv_attr_store+0x21/0x30
>> [ 739.714322] sysfs_kf_write+0x48/0x60
>> [ 739.714328] kernfs_fop_write_iter+0x16b/0x240
>> [ 739.714333] vfs_write+0x266/0x520
>> [ 739.714341] ksys_write+0x72/0xe0
>> [ 739.714345] __x64_sys_write+0x19/0x20
>> [ 739.714347] x64_sys_call+0xa15/0xa30
>> [ 739.714355] do_syscall_64+0xd8/0xab0
>> [ 739.714361] entry_SYSCALL_64_after_hwframe+0x4b/0x53
>>
>> and
>>
>> [ 739.714459] ------------[ cut here ]------------
>> [ 739.714461] xe 0000:67:00.0: [drm] drm_WARN_ON(!list_empty(&fb->filp_head))
>> [ 739.714464] WARNING: drivers/gpu/drm/drm_framebuffer.c:833 at drm_framebuffer_free+0x6c/0x90 [drm], CPU#12: xe_module_load/13145
>> [ 739.714715] RIP: 0010:drm_framebuffer_free+0x7a/0x90 [drm]
>> ...
>> [ 739.714869] Call Trace:
>> [ 739.714871] <TASK>
>> [ 739.714876] drm_mode_config_cleanup+0x26a/0x320 [drm]
>> [ 739.714998] ? __drm_printfn_seq_file+0x20/0x20 [drm]
>> [ 739.715115] ? drm_mode_config_cleanup+0x207/0x320 [drm]
>> [ 739.715235] intel_display_driver_remove_noirq+0x51/0xb0 [xe]
>> [ 739.715576] xe_display_fini_early+0x33/0x50 [xe]
>> [ 739.715821] devm_action_release+0xf/0x20
>> [ 739.715828] devres_release_all+0xad/0xf0
>> [ 739.715843] device_unbind_cleanup+0x12/0xa0
>> [ 739.715850] device_release_driver_internal+0x1b7/0x210
>> [ 739.715856] device_driver_detach+0x14/0x20
>> [ 739.715860] unbind_store+0xa6/0xb0
>> [ 739.715865] drv_attr_store+0x21/0x30
>> [ 739.715868] sysfs_kf_write+0x48/0x60
>> [ 739.715873] kernfs_fop_write_iter+0x16b/0x240
>> [ 739.715878] vfs_write+0x266/0x520
>> [ 739.715886] ksys_write+0x72/0xe0
>> [ 739.715890] __x64_sys_write+0x19/0x20
>> [ 739.715893] x64_sys_call+0xa15/0xa30
>> [ 739.715900] do_syscall_64+0xd8/0xab0
>> [ 739.715905] entry_SYSCALL_64_after_hwframe+0x4b/0x53
>>
>> and then finally file close blows up:
>>
>> [ 743.186530] Oops: general protection fault, probably for non-canonical address 0xdead000000000122: 0000 [#1] SMP
>> [ 743.186535] CPU: 3 UID: 1000 PID: 3453 Comm: kwin_wayland Tainted: G W 7.0.0-rc1-valkyria+ #110 PREEMPT_{RT,(lazy)}
>> [ 743.186537] Tainted: [W]=WARN
>> [ 743.186538] Hardware name: Gigabyte Technology Co., Ltd. X299 AORUS Gaming 3/X299 AORUS Gaming 3-CF, BIOS F8n 12/06/2021
>> [ 743.186539] RIP: 0010:drm_framebuffer_cleanup+0x55/0xc0 [drm]
>> [ 743.186588] Code: d8 72 73 0f b6 42 05 ff c3 39 c3 72 e8 49 8d bd 50 07 00 00 31 f6 e8 3a 80 d3 e1 49 8b 44 24 10 49 8d 7c 24 08 49 8b 54 24 08 <48> 3b 38 0f 85 95 7f 02 00 48 3b 7a 08 0f 85 8b 7f 02 00 48 89 42
>> [ 743.186589] RSP: 0018:ffffc900085e3cf8 EFLAGS: 00010202
>> [ 743.186591] RAX: dead000000000122 RBX: 0000000000000001 RCX: ffffffff8217ed03
>> [ 743.186592] RDX: dead000000000100 RSI: 0000000000000000 RDI: ffff88814675ba08
>> [ 743.186593] RBP: ffffc900085e3d10 R08: 0000000000000000 R09: 0000000000000000
>> [ 743.186593] R10: 0000000000000000 R11: 0000000000000000 R12: ffff88814675ba00
>> [ 743.186594] R13: ffff88810d778000 R14: ffff888119f6dca0 R15: ffff88810c660bb0
>> [ 743.186595] FS: 00007ff377d21280(0000) GS:ffff888cec3f8000(0000) knlGS:0000000000000000
>> [ 743.186596] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> [ 743.186596] CR2: 000055690b55e000 CR3: 0000000113586003 CR4: 00000000003706f0
>> [ 743.186597] Call Trace:
>> [ 743.186598] <TASK>
>> [ 743.186603] intel_user_framebuffer_destroy+0x12/0x90 [xe]
>> [ 743.186722] drm_framebuffer_free+0x3a/0x90 [drm]
>> [ 743.186750] ? trace_hardirqs_on+0x5f/0x120
>> [ 743.186754] drm_mode_object_put+0x51/0x70 [drm]
>> [ 743.186786] drm_fb_release+0x105/0x190 [drm]
>> [ 743.186812] ? rt_mutex_slowunlock+0x3aa/0x410
>> [ 743.186817] ? rt_spin_lock+0xea/0x1b0
>> [ 743.186819] drm_file_free+0x1e0/0x2c0 [drm]
>> [ 743.186843] drm_release_noglobal+0x91/0xf0 [drm]
>> [ 743.186865] __fput+0x100/0x2e0
>> [ 743.186869] fput_close_sync+0x40/0xa0
>> [ 743.186870] __x64_sys_close+0x3e/0x80
>> [ 743.186873] x64_sys_call+0xa07/0xa30
>> [ 743.186879] do_syscall_64+0xd8/0xab0
>> [ 743.186881] entry_SYSCALL_64_after_hwframe+0x4b/0x53
>> [ 743.186882] RIP: 0033:0x7ff37e567732
>> [ 743.186884] Code: 08 0f 85 a1 38 ff ff 49 89 fb 48 89 f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89 5c 24 08 0f 05 <c3> 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 f3 0f 1e fa 55 bf 01 00
>> [ 743.186885] RSP: 002b:00007ffc818169a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
>> [ 743.186886] RAX: ffffffffffffffda RBX: 00007ffc81816a30 RCX: 00007ff37e567732
>> [ 743.186887] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000012
>> [ 743.186888] RBP: 00007ffc818169d0 R08: 0000000000000000 R09: 0000000000000000
>> [ 743.186889] R10: 0000000000000000 R11: 0000000000000246 R12: 000055d60a7996e0
>> [ 743.186889] R13: 00007ffc81816a90 R14: 00007ffc81816a90 R15: 000055d60a782a30
>> [ 743.186892] </TASK>
>> [ 743.186893] Modules linked in: rfcomm snd_hrtimer xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_addrtype nft_compat x_tables nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables overlay cfg80211 bnep mtd_intel_dg snd_hda_codec_intelhdmi mtd snd_hda_codec_hdmi nls_utf8 mxm_wmi intel_wmi_thunderbolt gigabyte_wmi wmi_bmof xe drm_gpuvm drm_gpusvm_helper i2c_algo_bit drm_buddy drm_ttm_helper ttm video drm_suballoc_helper gpu_sched drm_client_lib drm_exec drm_display_helper cec drm_kunit_helpers drm_kms_helper kunit x86_pkg_temp_thermal intel_powerclamp coretemp snd_hda_codec_alc882 snd_hda_codec_realtek_lib snd_hda_codec_generic snd_hda_intel snd_soc_avs snd_soc_hda_codec snd_hda_ext_core snd_hda_codec snd_hwdep snd_hda_core snd_intel_dspcfg snd_soc_core snd_compress ac97_bus snd_pcm snd_seq snd_seq_device snd_timer i2c_i801 i2c_mux snd i2c_smbus btusb btrtl btbcm btmtk btintel bluetooth ecdh_generic rfkill ecc mei_me mei ioatdma dca wmi nfsd drm i2c_dev fuse nfnetlink
>> [ 743.186938] ---[ end trace 0000000000000000 ]---
>>
>> And for property blobs:
>>
>> [ 371.072940] BUG: unable to handle page fault for address: 000001ffffffffff
>> [ 371.072944] #PF: supervisor read access in kernel mode
>> [ 371.072945] #PF: error_code(0x0000) - not-present page
>> [ 371.072947] PGD 0 P4D 0
>> [ 371.072950] Oops: Oops: 0000 [#1] SMP
>> [ 371.072953] CPU: 0 UID: 1000 PID: 3693 Comm: kwin_wayland Not tainted 7.0.0-rc1-valkyria+ #111 PREEMPT_{RT,(lazy)}
>> [ 371.072956] Hardware name: Gigabyte Technology Co., Ltd. X299 AORUS Gaming 3/X299 AORUS Gaming 3-CF, BIOS F8n 12/06/2021
>> [ 371.072957] RIP: 0010:drm_property_destroy_user_blobs+0x3b/0x90 [drm]
>> [ 371.073019] Code: 00 00 48 83 ec 10 48 8b 86 30 01 00 00 48 39 c3 74 59 48 89 c2 48 8d 48 c8 48 8b 00 4c 8d 60 c8 eb 04 4c 8d 60 c8 48 8b 71 40 <48> 39 16 0f 85 39 32 01 00 48 3b 50 08 0f 85 2f 32 01 00 48 89 70
>> [ 371.073021] RSP: 0018:ffffc90006a73de8 EFLAGS: 00010293
>> [ 371.073022] RAX: 000001ffffffffff RBX: ffff888118a1a930 RCX: ffff8881b92355c0
>> [ 371.073024] RDX: ffff8881b92355f8 RSI: 000001ffffffffff RDI: ffff888118be4000
>> [ 371.073025] RBP: ffffc90006a73e08 R08: ffff8881009b7300 R09: ffff888cecc5b000
>> [ 371.073026] R10: ffffc90006a73e90 R11: 0000000000000002 R12: 000001ffffffffc7
>> [ 371.073027] R13: ffff888118a1a980 R14: ffff88810b366d20 R15: ffff888118a1a970
>> [ 371.073028] FS: 00007f1faccbb280(0000) GS:ffff888cec2db000(0000) knlGS:0000000000000000
>> [ 371.073029] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> [ 371.073030] CR2: 000001ffffffffff CR3: 000000010655c001 CR4: 00000000003706f0
>> [ 371.073031] Call Trace:
>> [ 371.073033] <TASK>
>> [ 371.073036] drm_file_free+0x1df/0x2a0 [drm]
>> [ 371.073077] drm_release_noglobal+0x7a/0xe0 [drm]
>> [ 371.073113] __fput+0xe2/0x2b0
>> [ 371.073118] fput_close_sync+0x40/0xa0
>> [ 371.073119] __x64_sys_close+0x3e/0x80
>> [ 371.073122] x64_sys_call+0xa07/0xa30
>> [ 371.073126] do_syscall_64+0xc0/0x840
>> [ 371.073130] entry_SYSCALL_64_after_hwframe+0x4b/0x53
>> [ 371.073132] RIP: 0033:0x7f1fb3501732
>> [ 371.073133] Code: 08 0f 85 a1 38 ff ff 49 89 fb 48 89 f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89 5c 24 08 0f 05 <c3> 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 f3 0f 1e fa 55 bf 01 00
>> [ 371.073135] RSP: 002b:00007ffe8e6f0278 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
>> [ 371.073136] RAX: ffffffffffffffda RBX: 00007ffe8e6f0300 RCX: 00007f1fb3501732
>> [ 371.073137] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000012
>> [ 371.073138] RBP: 00007ffe8e6f02a0 R08: 0000000000000000 R09: 0000000000000000
>> [ 371.073139] R10: 0000000000000000 R11: 0000000000000246 R12: 00005585ba46eea0
>> [ 371.073140] R13: 00007ffe8e6f0360 R14: 00007ffe8e6f0360 R15: 00005585ba458a30
>> [ 371.073143] </TASK>
>> [ 371.073144] Modules linked in: rfcomm snd_hrtimer xt_addrtype xt_CHECKSUM xt_MASQUERADE xt_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp nft_compat x_tables nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables overlay cfg80211 bnep snd_hda_codec_intelhdmi snd_hda_codec_hdmi mtd_intel_dg mtd nls_utf8 wmi_bmof mxm_wmi gigabyte_wmi intel_wmi_thunderbolt xe drm_gpuvm drm_gpusvm_helper i2c_algo_bit drm_buddy drm_ttm_helper ttm video drm_suballoc_helper gpu_sched drm_client_lib drm_exec drm_display_helper cec drm_kunit_helpers drm_kms_helper kunit x86_pkg_temp_thermal intel_powerclamp coretemp snd_hda_codec_alc882 snd_hda_codec_realtek_lib snd_hda_codec_generic snd_hda_intel snd_soc_avs snd_soc_hda_codec snd_hda_ext_core snd_hda_codec snd_hwdep snd_hda_core snd_intel_dspcfg snd_soc_core snd_compress ac97_bus snd_pcm snd_seq snd_seq_device snd_timer i2c_i801 btusb i2c_mux i2c_smbus btrtl snd btbcm btmtk btintel bluetooth ecdh_generic rfkill ecc mei_me mei ioatdma dca wmi nfsd drm i2c_dev fuse nfnetlink
>> [ 371.073198] CR2: 000001ffffffffff
>> [ 371.073199] ---[ end trace 0000000000000000 ]---
>>
>> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
>> ---
>> .../drm/i915/display/intel_display_driver.c | 28 ++++++++++---------
>> 1 file changed, 15 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
>> index 23bfecc983e8d..c073f7c1c0805 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
>> @@ -12,6 +12,7 @@
>> #include <drm/display/drm_dp_mst_helper.h>
>> #include <drm/drm_atomic_helper.h>
>> #include <drm/drm_client_event.h>
>> +#include <drm/drm_managed.h>
>> #include <drm/drm_mode_config.h>
>> #include <drm/drm_privacy_screen_consumer.h>
>> #include <drm/drm_print.h>
>> @@ -111,7 +112,15 @@ static const struct drm_mode_config_helper_funcs intel_mode_config_funcs = {
>> .atomic_commit_setup = drm_dp_mst_atomic_setup_commit,
>> };
>>
>> -static void intel_mode_config_init(struct intel_display *display)
>> +static void intel_mode_config_cleanup(struct drm_device *dev, void *arg)
>> +{
>> + struct intel_display *display = arg;
>> +
>> + intel_atomic_global_obj_cleanup(display);
>> + drm_mode_config_cleanup(display->drm);
>> +}
>> +
>> +static int intel_mode_config_init(struct intel_display *display)
>> {
>> struct drm_mode_config *mode_config = &display->drm->mode_config;
>>
>> @@ -148,12 +157,8 @@ static void intel_mode_config_init(struct intel_display *display)
>> }
>>
>> intel_cursor_mode_config_init(display);
>> -}
>>
>> -static void intel_mode_config_cleanup(struct intel_display *display)
>> -{
>> - intel_atomic_global_obj_cleanup(display);
>> - drm_mode_config_cleanup(display->drm);
>> + return drmm_add_action_or_reset(display->drm, intel_mode_config_cleanup, display);
>> }
>>
>> static void intel_plane_possible_crtcs_init(struct intel_display *display)
>> @@ -255,7 +260,9 @@ int intel_display_driver_probe_noirq(struct intel_display *display)
>>
>> intel_dmc_init(display);
>>
>> - intel_mode_config_init(display);
>> + ret = intel_mode_config_init(display);
>> + if (ret)
>> + goto cleanup_wq_unordered;
>>
>> ret = intel_cdclk_init(display);
>> if (ret)
>> @@ -456,7 +463,7 @@ int intel_display_driver_probe_nogem(struct intel_display *display)
>>
>> ret = intel_crtc_init(display);
>> if (ret)
>> - goto err_mode_config;
>> + return ret;
>>
>> intel_plane_possible_crtcs_init(display);
>> intel_dpll_init(display);
>> @@ -497,9 +504,6 @@ int intel_display_driver_probe_nogem(struct intel_display *display)
>>
>> err_hdcp:
>> intel_hdcp_component_fini(display);
>> -err_mode_config:
>> - intel_mode_config_cleanup(display);
>> -
>> return ret;
>> }
>>
>> @@ -618,8 +622,6 @@ void intel_display_driver_remove_noirq(struct intel_display *display)
>>
>> intel_hdcp_component_fini(display);
>>
>> - intel_mode_config_cleanup(display);
>> -
>
> I don't much like this piecemeal random reordering of things.
> The goal should be to have a handful of well defines display
> driver functions that can be called by i915/xe in the appropriate
> places.
>
> I'm wondering what are all the other display things
> that need to deal with the unbind vs. last close situation...
>
> Do we have actual tests that keep the various kinds of user
> interfaces open after unbind and tries to poke them?
>
>> intel_dp_tunnel_mgr_cleanup(display);
>>
>> intel_overlay_cleanup(display);
>> --
>> 2.53.0
>
I did create one specifically for this test.
https://patchwork.freedesktop.org/patch/706994/?series=162133&rev=2
Kind regards,
~Maarten Lankhorst
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-04-10 18:25 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-08 11:47 [PATCH] drm/intel/display: Use drmm for intel_mode_config_cleanup Maarten Lankhorst
2026-04-08 19:39 ` ✗ i915.CI.BAT: failure for " Patchwork
2026-04-10 9:17 ` [PATCH] " Ville Syrjälä
2026-04-10 18:25 ` Maarten Lankhorst
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox