[PATCH v4 1/5] drm: Move some options to separate new Kconfig
Philipp Stanner
phasta at mailbox.org
Fri Mar 7 13:41:58 UTC 2025
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 at igalia.com>
> Cc: Christian König <christian.koenig at amd.com>
> Cc: Danilo Krummrich <dakr at kernel.org>
> Cc: Matthew Brost <matthew.brost at intel.com>
> Cc: Philipp Stanner <phasta at kernel.org>
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
More information about the dri-devel
mailing list