[PATCH 00/17] dynamic-debug cleanups refactors maintenance

Jim Cromie
2026-05-04T20:45:16Z

This series is nearly all maintenance: it refactors/splits functions,
tightens an internal callchain, drops linked-listing where an
array,length is already available, reduces verbose=3 logging for
usability, and reorganizes several structs for better organization.

Getting these into linux-next for integration testing would clear the
deck for fixing Dynamic-debug classmaps, which is needed to restore
the un-BROKEN status of DRM_USE_DYNAMIC_DEBUG.

Theyre on master at v7.1-rc2

The "modules" intersection is on the re-composing of struct
ddebug_info, which is a member in struct module, and maps a module's
__dyndbg* elf sections.

The user visible change to /proc/dynamic_debug/control is s/class
unknown/class:_UNKNOWN_/, which is a more visible/greppable indication
of incomplete class definitions.

Coder visible change is to drop the enum ddebug_class_map_type's
unused vals - namely: DD_CLASS_TYPE_DISJOINT_NAMES
& DD_CLASS_TYPE_LEVEL_NAMES

These allowed more symbolic named inputs:
echo +DRM_UT_CORE > /sys/module/drm/parameters/debug

But theyre unused 3 years later, and probably not worth keeping.
With a removal commit in the log, its easy enough to restore them later.

Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
Jim Cromie (17):
dyndbg: factor ddebug_match_desc out from ddebug_change
dyndbg: add stub macro for DECLARE_DYNDBG_CLASSMAP
dyndbg: reword "class unknown," to "class:_UNKNOWN_"
dyndbg: make ddebug_class_param union members same size
dyndbg: drop NUM_TYPE_ARRAY
dyndbg: tweak pr_fmt to avoid expansion conflicts
dyndbg: reduce verbose/debug clutter
dyndbg: refactor param_set_dyndbg_classes and below
dyndbg: tighten fn-sig of ddebug_apply_class_bitmap
dyndbg: replace classmap list with a vector
dyndbg: macrofy a 2-index for-loop pattern
dyndbg,module: make proper substructs in _ddebug_info
dyndbg: move mod_name down from struct ddebug_table to _ddebug_info
dyndbg: hoist classmap-filter-by-modname up to ddebug_add_module
dyndbg-API: remove DD_CLASS_TYPE_(DISJOINT|LEVEL)_NAMES and code
selftests-dyndbg: add a dynamic_debug run_tests target
dyndbg: change __dynamic_func_call_cls* macros into expressions

MAINTAINERS | 1 +
include/linux/dynamic_debug.h | 106 ++---
kernel/module/main.c | 12 +-
lib/dynamic_debug.c | 504 ++++++++++-----------
lib/test_dynamic_debug.c | 28 +-
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/dynamic_debug/Makefile | 9 +
tools/testing/selftests/dynamic_debug/config | 7 +
.../selftests/dynamic_debug/dyndbg_selftest.sh | 257 +++++++++++
9 files changed, 582 insertions(+), 343 deletions(-)
---
base-commit: 6d35786de28116ecf78797a62b84e6bf3c45aa5a
change-id: 20260504-dd-cleanups-2-5c37432d5c03

Best regards,
--
Jim Cromie <jim.cromie@gmail.com>