Hi, You forgot to put folks in CC as recipents for the cover letter :( On Thu, 2025-03-06 at 17:05 +0000, Tvrtko Ursulin wrote: > Move some options out into a new debug specific kconfig file in order > to > make things a bit cleaner. > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxx> > Cc: Christian König <christian.koenig@xxxxxxx> > Cc: Danilo Krummrich <dakr@xxxxxxxxxx> > Cc: Matthew Brost <matthew.brost@xxxxxxxxx> > Cc: Philipp Stanner <phasta@xxxxxxxxxx> We all have our individual work flows, so don't take this as lecturing or anything – I just suspect that I was forgotten in the cover letter because you Cc people by hand in the individual patches. What I do is that I run get_maintainer and then put the individuals listed there into the --to= field. That sends the entire series to all of them. Only sometimes, when there's a huge list of recipents or when the patches of a series are very independent, I deviate from that rule. JFYI ---- Anyways, we have a bigger problem about the entire series. I now tested again with the same setup as yesterday and the faults are indeed gone, so that's good. But to be sure I then did run kmemleak and got a list of leaks that is more than 2000 lines long. Excerpt: unreferenced object 0xffff88810ade5600 (size 168): comm "kunit_try_catch", pid 300, jiffies 4294670705 hex dump (first 32 bytes): 98 56 de 0a 81 88 ff ff e0 f2 48 b3 ff ff ff ff .V........H..... d9 de 75 22 01 00 00 00 20 7c 45 01 81 88 ff ff ..u".... |E..... backtrace (crc 4f2b379c): kmem_cache_alloc_noprof+0x299/0x320 drm_sched_fence_alloc+0x1d/0xa0 drm_sched_job_init+0xbc/0x2d0 drm_mock_sched_job_new+0x105/0x400 drm_sched_basic_entity_cleanup+0x182/0x510 kunit_try_run_case+0x1ae/0x490 kunit_generic_run_threadfn_adapter+0x7b/0xe0 kthread+0x30f/0x620 ret_from_fork+0x2f/0x70 ret_from_fork_asm+0x1a/0x30 unreferenced object 0xffff88810ade5700 (size 168): comm "kunit_try_catch", pid 300, jiffies 4294670705 hex dump (first 32 bytes): 98 57 de 0a 81 88 ff ff e0 f2 48 b3 ff ff ff ff .W........H..... ff 2d 85 22 01 00 00 00 20 7c 45 01 81 88 ff ff .-.".... |E..... backtrace (crc b5f15c1c): kmem_cache_alloc_noprof+0x299/0x320 drm_sched_fence_alloc+0x1d/0xa0 drm_sched_job_init+0xbc/0x2d0 drm_mock_sched_job_new+0x105/0x400 drm_sched_basic_entity_cleanup+0x182/0x510 kunit_try_run_case+0x1ae/0x490 kunit_generic_run_threadfn_adapter+0x7b/0xe0 kthread+0x30f/0x620 ret_from_fork+0x2f/0x70 ret_from_fork_asm+0x1a/0x30 unreferenced object 0xffff88810ade5800 (size 168): comm "kunit_try_catch", pid 300, jiffies 4294670705 hex dump (first 32 bytes): 98 58 de 0a 81 88 ff ff e0 f2 48 b3 ff ff ff ff .X........H..... fb a0 82 1f 01 00 00 00 20 7c 45 01 81 88 ff ff ........ |E..... backtrace (crc 9fe7a1c9): kmem_cache_alloc_noprof+0x299/0x320 drm_sched_fence_alloc+0x1d/0xa0 drm_sched_job_init+0xbc/0x2d0 drm_mock_sched_job_new+0x105/0x400 drm_sched_basic_entity_cleanup+0x182/0x510 kunit_try_run_case+0x1ae/0x490 kunit_generic_run_threadfn_adapter+0x7b/0xe0 kthread+0x30f/0x620 ret_from_fork+0x2f/0x70 ret_from_fork_asm+0x1a/0x30 unreferenced object 0xffff88810ade5900 (size 168): comm "kunit_try_catch", pid 300, jiffies 4294670705 hex dump (first 32 bytes): 98 59 de 0a 81 88 ff ff e0 f2 48 b3 ff ff ff ff .Y........H..... 03 cb 82 1f 01 00 00 00 20 7c 45 01 81 88 ff ff ........ |E..... backtrace (crc 524ba9e4): kmem_cache_alloc_noprof+0x299/0x320 drm_sched_fence_alloc+0x1d/0xa0 drm_sched_job_init+0xbc/0x2d0 drm_mock_sched_job_new+0x105/0x400 drm_sched_basic_entity_cleanup+0x182/0x510 kunit_try_run_case+0x1ae/0x490 kunit_generic_run_threadfn_adapter+0x7b/0xe0 kthread+0x30f/0x620 ret_from_fork+0x2f/0x70 ret_from_fork_asm+0x1a/0x30 I'm no expert with kunit tests, but I'm being told that there shouldn't be leaks from test leftovers. Please do a test with kmemleak, too, i.e. build and boot a kernel in QEMU and then do some scans. Thanks, Philipp > --- > drivers/gpu/drm/Kconfig | 109 ++------------------------------ > -- > drivers/gpu/drm/Kconfig.debug | 103 ++++++++++++++++++++++++++++++++ > 2 files changed, 108 insertions(+), 104 deletions(-) > create mode 100644 drivers/gpu/drm/Kconfig.debug > > diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig > index d9986fd52194..46ba24592553 100644 > --- a/drivers/gpu/drm/Kconfig > +++ b/drivers/gpu/drm/Kconfig > @@ -26,6 +26,11 @@ menuconfig DRM > details. You should also select and configure AGP > (/dev/agpgart) support if it is available for your > platform. > > +menu "DRM debugging options" > +depends on DRM > +source "drivers/gpu/drm/Kconfig.debug" > +endmenu > + > if DRM > > config DRM_MIPI_DBI > @@ -37,65 +42,6 @@ config DRM_MIPI_DSI > bool > depends on DRM > > -config DRM_DEBUG_MM > - bool "Insert extra checks and debug info into the DRM range > managers" > - default n > - depends on DRM > - depends on STACKTRACE_SUPPORT > - select STACKDEPOT > - help > - Enable allocation tracking of memory manager and leak > detection on > - shutdown. > - > - Recommended for driver developers only. > - > - If in doubt, say "N". > - > -config DRM_USE_DYNAMIC_DEBUG > - bool "use dynamic debug to implement drm.debug" > - default n > - depends on BROKEN > - depends on DRM > - depends on DYNAMIC_DEBUG || DYNAMIC_DEBUG_CORE > - depends on JUMP_LABEL > - help > - Use dynamic-debug to avoid drm_debug_enabled() runtime > overheads. > - Due to callsite counts in DRM drivers (~4k in amdgpu) and > 56 > - bytes per callsite, the .data costs can be substantial, > and > - are therefore configurable. > - > -config DRM_KUNIT_TEST_HELPERS > - tristate > - depends on DRM && KUNIT > - select DRM_KMS_HELPER > - help > - KUnit Helpers for KMS drivers. > - > -config DRM_KUNIT_TEST > - tristate "KUnit tests for DRM" if !KUNIT_ALL_TESTS > - depends on DRM && KUNIT && MMU > - select DRM_BUDDY > - select DRM_DISPLAY_DP_HELPER > - select DRM_DISPLAY_HDMI_STATE_HELPER > - select DRM_DISPLAY_HELPER > - select DRM_EXEC > - select DRM_EXPORT_FOR_TESTS if m > - select DRM_GEM_SHMEM_HELPER > - select DRM_KUNIT_TEST_HELPERS > - select DRM_LIB_RANDOM > - select PRIME_NUMBERS > - default KUNIT_ALL_TESTS > - help > - This builds unit tests for DRM. This option is not useful > for > - distributions or general kernels, but only for kernel > - developers working on DRM and associated drivers. > - > - For more information on KUnit and unit tests in general, > - please refer to the KUnit documentation in > - Documentation/dev-tools/kunit/. > - > - If in doubt, say "N". > - > config DRM_KMS_HELPER > tristate > depends on DRM > @@ -247,23 +193,6 @@ config DRM_TTM > GPU memory types. Will be enabled automatically if a > device driver > uses it. > > -config DRM_TTM_KUNIT_TEST > - tristate "KUnit tests for TTM" if !KUNIT_ALL_TESTS > - default n > - depends on DRM && KUNIT && MMU && (UML || COMPILE_TEST) > - select DRM_TTM > - select DRM_BUDDY > - select DRM_EXPORT_FOR_TESTS if m > - select DRM_KUNIT_TEST_HELPERS > - default KUNIT_ALL_TESTS > - help > - Enables unit tests for TTM, a GPU memory manager subsystem > used > - to manage memory buffers. This option is mostly useful for > kernel > - developers. It depends on (UML || COMPILE_TEST) since no > other driver > - which uses TTM can be loaded while running the tests. > - > - If in doubt, say "N". > - > config DRM_EXEC > tristate > depends on DRM > @@ -463,9 +392,6 @@ config DRM_HYPERV > > If M is selected the module will be called hyperv_drm. > > -config DRM_EXPORT_FOR_TESTS > - bool > - > # Separate option as not all DRM drivers use it > config DRM_PANEL_BACKLIGHT_QUIRKS > tristate > @@ -478,31 +404,6 @@ config DRM_PRIVACY_SCREEN > bool > default n > > -config DRM_WERROR > - bool "Compile the drm subsystem with warnings as errors" > - depends on DRM && EXPERT > - depends on !WERROR > - default n > - help > - A kernel build should not cause any compiler warnings, and > this > - enables the '-Werror' flag to enforce that rule in the drm > subsystem. > - > - The drm subsystem enables more warnings than the kernel > default, so > - this config option is disabled by default. > - > - If in doubt, say N. > - > -config DRM_HEADER_TEST > - bool "Ensure DRM headers are self-contained and pass kernel- > doc" > - depends on DRM && EXPERT > - default n > - help > - Ensure the DRM subsystem headers both under > drivers/gpu/drm and > - include/drm compile, are self-contained, have header > guards, and have > - no kernel-doc warnings. > - > - If in doubt, say N. > - > endif > > # Separate option because drm_panel_orientation_quirks.c is shared > with fbdev > diff --git a/drivers/gpu/drm/Kconfig.debug > b/drivers/gpu/drm/Kconfig.debug > new file mode 100644 > index 000000000000..601d7e07d421 > --- /dev/null > +++ b/drivers/gpu/drm/Kconfig.debug > @@ -0,0 +1,103 @@ > +config DRM_USE_DYNAMIC_DEBUG > + bool "use dynamic debug to implement drm.debug" > + default n > + depends on BROKEN > + depends on DRM > + depends on DYNAMIC_DEBUG || DYNAMIC_DEBUG_CORE > + depends on JUMP_LABEL > + help > + Use dynamic-debug to avoid drm_debug_enabled() runtime > overheads. > + Due to callsite counts in DRM drivers (~4k in amdgpu) and > 56 > + bytes per callsite, the .data costs can be substantial, and > + are therefore configurable. > + > +config DRM_WERROR > + bool "Compile the drm subsystem with warnings as errors" > + depends on DRM && EXPERT > + depends on !WERROR > + default n > + help > + A kernel build should not cause any compiler warnings, and > this > + enables the '-Werror' flag to enforce that rule in the drm > subsystem. > + > + The drm subsystem enables more warnings than the kernel > default, so > + this config option is disabled by default. > + > + If in doubt, say N. > + > +config DRM_HEADER_TEST > + bool "Ensure DRM headers are self-contained and pass kernel- > doc" > + depends on DRM && EXPERT > + default n > + help > + Ensure the DRM subsystem headers both under > drivers/gpu/drm and > + include/drm compile, are self-contained, have header > guards, and have > + no kernel-doc warnings. > + > + If in doubt, say N. > + > +config DRM_DEBUG_MM > + bool "Insert extra checks and debug info into the DRM range > managers" > + default n > + depends on DRM > + depends on STACKTRACE_SUPPORT > + select STACKDEPOT > + help > + Enable allocation tracking of memory manager and leak > detection on > + shutdown. > + > + Recommended for driver developers only. > + > + If in doubt, say "N". > + > +config DRM_KUNIT_TEST_HELPERS > + tristate > + depends on DRM && KUNIT > + select DRM_KMS_HELPER > + help > + KUnit Helpers for KMS drivers. > + > +config DRM_KUNIT_TEST > + tristate "KUnit tests for DRM" if !KUNIT_ALL_TESTS > + depends on DRM && KUNIT && MMU > + select DRM_BUDDY > + select DRM_DISPLAY_DP_HELPER > + select DRM_DISPLAY_HDMI_STATE_HELPER > + select DRM_DISPLAY_HELPER > + select DRM_EXEC > + select DRM_EXPORT_FOR_TESTS if m > + select DRM_GEM_SHMEM_HELPER > + select DRM_KUNIT_TEST_HELPERS > + select DRM_LIB_RANDOM > + select PRIME_NUMBERS > + default KUNIT_ALL_TESTS > + help > + This builds unit tests for DRM. This option is not useful > for > + distributions or general kernels, but only for kernel > + developers working on DRM and associated drivers. > + > + For more information on KUnit and unit tests in general, > + please refer to the KUnit documentation in > + Documentation/dev-tools/kunit/. > + > + If in doubt, say "N". > + > +config DRM_TTM_KUNIT_TEST > + tristate "KUnit tests for TTM" if !KUNIT_ALL_TESTS > + default n > + depends on DRM && KUNIT && MMU && (UML || COMPILE_TEST) > + select DRM_TTM > + select DRM_BUDDY > + select DRM_EXPORT_FOR_TESTS if m > + select DRM_KUNIT_TEST_HELPERS > + default KUNIT_ALL_TESTS > + help > + Enables unit tests for TTM, a GPU memory manager subsystem > used > + to manage memory buffers. This option is mostly useful for > kernel > + developers. It depends on (UML || COMPILE_TEST) since no > other driver > + which uses TTM can be loaded while running the tests. > + > + If in doubt, say "N". > + > +config DRM_EXPORT_FOR_TESTS > + bool