dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v10 00/61] drm/dyndbg: Fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y MIME-Version: 1.0
@ 2026-02-12  0:12 Jim Cromie
  2026-02-12  0:12 ` [PATCH 01/61] dyndbg: fix NULL ptr on i386 due to section alignment Jim Cromie
  0 siblings, 1 reply; 64+ messages in thread
From: Jim Cromie @ 2026-02-12  0:12 UTC (permalink / raw)
  To: dri-devel, intel-gfx-trybot; +Cc: Jim Cromie

Hi all,

This series fixes the long-standing BROKEN state of "classmaps" with
CONFIG_DRM_USE_DYNAMIC_DEBUG=y. When enabled, the ~4k dev*dbg() calls
are implemented with a static-key, so they avoid the repeated bit
tests in the '=n' case.

But it was broken for loadable driver modules, because drm.debug=<val>
was applied before the drivers were modprobed, so the drivers'
drm_*_dbg sites did not yet exist, and missed the enablement.

Fixing this required an api change: replace DECLARE_DYNAMIC_DEBUG with
DYNAMIC_DEBUG_CLASSMAP_DEFINE and DYNAMIC_DEBUG_CLASSMAP_USE; 1st is
called by drm.ko (core) to define the classmap, 2nd is called by
drivers and helpers to reference it.  This distinction allows drivers
to find the drm.debug param, and apply its settings to the driver
modules.

This patch set revision includes:

1. v9 of dynamic-debug classmaps.
   it included a test script to show the changes work as intended

2. applies the API changes to DRM core, drivers & helpers
   this is the acid test
   included here so DRM CI (trybot) can prove it works for DRM.

3. applies API to DRM_ACCEL modules
   these modules already use drm.debug macros, so *are* DRM modules

Jim Cromie (61):
  dyndbg: fix NULL ptr on i386 due to section alignment
  dyndbg: factor ddebug_match_desc out from ddebug_change
  dyndbg: add stub macro for DECLARE_DYNDBG_CLASSMAP
  docs/dyndbg: update examples \012 to \n
  docs/dyndbg: explain flags parse 1st
  test-dyndbg: fixup CLASSMAP usage error
  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: hoist classmap-filter-by-modname up to ddebug_add_module
  dyndbg: move mod_name down from struct ddebug_table to _ddebug_info
  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
  dyndbg-API: replace DECLARE_DYNDBG_CLASSMAP
  dyndbg: detect class_id reservation conflicts
  dyndbg: check DYNAMIC_DEBUG_CLASSMAP_DEFINE args at compile-time
  dyndbg-test: change do_prints testpoint to accept a loopct
  dyndbg-API: promote DYNAMIC_DEBUG_CLASSMAP_PARAM to API
  dyndbg: treat comma as a token separator
  dyndbg: split multi-query strings with %
  selftests-dyndbg: add test_mod_submod
  dyndbg: resolve "protection" of class'd pr_debug
  dyndbg: add DYNAMIC_DEBUG_CLASSMAP_USE_(dd_class_name, offset)
  docs/dyndbg: add classmap info to howto
  drm: use correct ccflags-y spelling
  drm-dyndbg: adapt drm core to use dyndbg classmaps-v2
  drm-dyndbg: adapt DRM to invoke DYNAMIC_DEBUG_CLASSMAP_PARAM
  drm-print: modernize an archaic comment
  drm-print: fix config-dependent unused variable
  drm-dyndbg: DRM_CLASSMAP_USE in amdgpu driver
  drm-dyndbg: DRM_CLASSMAP_USE in i915 driver
  drm-dyndbg: DRM_CLASSMAP_USE in drm_crtc_helper
  drm-dyndbg: DRM_CLASSMAP_USE in drm_dp_helper
  drm-dyndbg: DRM_CLASSMAP_USE in nouveau
  drm-dyndbg: add DRM_CLASSMAP_USE to Xe driver
  drm-dyndbg: add DRM_CLASSMAP_USE to virtio_gpu
  drm-dyndbg: add DRM_CLASSMAP_USE to simpledrm
  drm-dyndbg: add DRM_CLASSMAP_USE to bochs
  drm-dyndbg: add DRM_CLASSMAP_USE to etnaviv
  drm-dyndbg: add DRM_CLASSMAP_USE to gma500 driver
  drm-dyndbg: add DRM_CLASSMAP_USE to radeon
  drm-dyndbg: add DRM_CLASSMAP_USE to vmwgfx driver
  drm-dyndbg: add DRM_CLASSMAP_USE to vkms driver
  drm-dyndbg: add DRM_CLASSMAP_USE to udl driver
  drm-dyndbg: add DRM_CLASSMAP_USE to mgag200 driver
  drm-dyndbg: add DRM_CLASSMAP_USE to the gud driver
  drm-dyndbg: add DRM_CLASSMAP_USE to the qxl driver
  drm-dyndbg: add DRM_CLASSMAP_USE to the drm_gem_shmem_helper driver
  accel/ivpu: implement IVPU_DBG_* as a dyndbg classmap
  accel: add -DDYNAMIC_DEBUG_MODULE to subdir-cflags - RFC
  drm: restore CONFIG_DRM_USE_DYNAMIC_DEBUG un-BROKEN
  drm_vblank: use dyndbg's static-key to avoid flag-check
  accel: ethosu enable drm.debug control
  accel: rocket enable drm.debug control

 .../admin-guide/dynamic-debug-howto.rst       | 184 ++++-
 MAINTAINERS                                   |   3 +-
 drivers/accel/Makefile                        |   2 +
 drivers/accel/ivpu/ivpu_drv.c                 |  27 +-
 drivers/accel/ivpu/ivpu_drv.h                 |  45 +-
 drivers/gpu/drm/Kconfig.debug                 |   1 -
 drivers/gpu/drm/Makefile                      |   3 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c       |  12 +-
 drivers/gpu/drm/display/drm_dp_helper.c       |  12 +-
 drivers/gpu/drm/drm_crtc_helper.c             |  12 +-
 drivers/gpu/drm/drm_gem_shmem_helper.c        |   1 +
 drivers/gpu/drm/drm_print.c                   |  38 +-
 drivers/gpu/drm/drm_vblank.c                  |  10 +-
 drivers/gpu/drm/etnaviv/etnaviv_drv.c         |   2 +
 drivers/gpu/drm/gma500/psb_drv.c              |   2 +
 drivers/gpu/drm/gud/gud_drv.c                 |   2 +
 drivers/gpu/drm/i915/i915_params.c            |  12 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c         |   2 +
 drivers/gpu/drm/nouveau/nouveau_drm.c         |  12 +-
 drivers/gpu/drm/qxl/qxl_drv.c                 |   2 +
 drivers/gpu/drm/radeon/radeon_drv.c           |   2 +
 drivers/gpu/drm/sysfb/simpledrm.c             |   2 +
 drivers/gpu/drm/tiny/bochs.c                  |   2 +
 drivers/gpu/drm/udl/udl_main.c                |   2 +
 drivers/gpu/drm/virtio/virtgpu_drv.c          |   2 +
 drivers/gpu/drm/vkms/vkms_drv.c               |   2 +
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c           |   2 +
 drivers/gpu/drm/xe/xe_drm_client.c            |   2 +
 include/asm-generic/vmlinux.lds.h             |  19 +-
 include/drm/drm_print.h                       |  22 +-
 include/linux/dynamic_debug.h                 | 302 +++++--
 kernel/module/main.c                          |  15 +-
 lib/Kconfig.debug                             |  24 +-
 lib/Makefile                                  |   5 +
 lib/dynamic_debug.c                           | 776 +++++++++++-------
 lib/test_dynamic_debug.c                      | 198 +++--
 lib/test_dynamic_debug_submod.c               |  21 +
 tools/testing/selftests/Makefile              |   1 +
 .../testing/selftests/dynamic_debug/Makefile  |   9 +
 tools/testing/selftests/dynamic_debug/config  |   7 +
 .../dynamic_debug/dyndbg_selftest.sh          | 373 +++++++++
 41 files changed, 1613 insertions(+), 559 deletions(-)
 create mode 100644 lib/test_dynamic_debug_submod.c
 create mode 100644 tools/testing/selftests/dynamic_debug/Makefile
 create mode 100644 tools/testing/selftests/dynamic_debug/config
 create mode 100755 tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh

-- 
2.53.0


^ permalink raw reply	[flat|nested] 64+ messages in thread

end of thread, other threads:[~2026-02-12  0:15 UTC | newest]

Thread overview: 64+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-12  0:12 [PATCH v10 00/61] drm/dyndbg: Fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y MIME-Version: 1.0 Jim Cromie
2026-02-12  0:12 ` [PATCH 01/61] dyndbg: fix NULL ptr on i386 due to section alignment Jim Cromie
2026-02-12  0:12   ` [PATCH 02/61] dyndbg: factor ddebug_match_desc out from ddebug_change Jim Cromie
2026-02-12  0:12     ` [PATCH 03/61] dyndbg: add stub macro for DECLARE_DYNDBG_CLASSMAP Jim Cromie
2026-02-12  0:12       ` [PATCH 04/61] docs/dyndbg: update examples \012 to \n Jim Cromie
2026-02-12  0:13         ` [PATCH 05/61] docs/dyndbg: explain flags parse 1st Jim Cromie
2026-02-12  0:13           ` [PATCH 06/61] test-dyndbg: fixup CLASSMAP usage error Jim Cromie
2026-02-12  0:13             ` [PATCH 07/61] dyndbg: reword "class unknown," to "class:_UNKNOWN_" Jim Cromie
2026-02-12  0:13               ` [PATCH 08/61] dyndbg: make ddebug_class_param union members same size Jim Cromie
2026-02-12  0:13                 ` [PATCH 09/61] dyndbg: drop NUM_TYPE_ARRAY Jim Cromie
2026-02-12  0:13                   ` [PATCH 10/61] dyndbg: tweak pr_fmt to avoid expansion conflicts Jim Cromie
2026-02-12  0:13                     ` [PATCH 11/61] dyndbg: reduce verbose/debug clutter Jim Cromie
2026-02-12  0:13                       ` [PATCH 12/61] dyndbg: refactor param_set_dyndbg_classes and below Jim Cromie
2026-02-12  0:13                         ` [PATCH 13/61] dyndbg: tighten fn-sig of ddebug_apply_class_bitmap Jim Cromie
2026-02-12  0:13                           ` [PATCH 14/61] dyndbg: replace classmap list with a vector Jim Cromie
2026-02-12  0:13                             ` [PATCH 15/61] dyndbg: macrofy a 2-index for-loop pattern Jim Cromie
2026-02-12  0:13                               ` [PATCH 16/61] dyndbg,module: make proper substructs in _ddebug_info Jim Cromie
2026-02-12  0:13                                 ` [PATCH 17/61] dyndbg: hoist classmap-filter-by-modname up to ddebug_add_module Jim Cromie
2026-02-12  0:13                                   ` [PATCH 18/61] dyndbg: move mod_name down from struct ddebug_table to _ddebug_info Jim Cromie
2026-02-12  0:13                                     ` [PATCH 19/61] dyndbg-API: remove DD_CLASS_TYPE_(DISJOINT|LEVEL)_NAMES and code Jim Cromie
2026-02-12  0:13                                       ` [PATCH 20/61] selftests-dyndbg: add a dynamic_debug run_tests target Jim Cromie
2026-02-12  0:13                                         ` [PATCH 21/61] dyndbg: change __dynamic_func_call_cls* macros into expressions Jim Cromie
2026-02-12  0:13                                           ` [PATCH 22/61] dyndbg-API: replace DECLARE_DYNDBG_CLASSMAP Jim Cromie
2026-02-12  0:13                                             ` [PATCH 23/61] dyndbg: detect class_id reservation conflicts Jim Cromie
2026-02-12  0:13                                               ` [PATCH 24/61] dyndbg: check DYNAMIC_DEBUG_CLASSMAP_DEFINE args at compile-time Jim Cromie
2026-02-12  0:13                                                 ` [PATCH 25/61] dyndbg-test: change do_prints testpoint to accept a loopct Jim Cromie
2026-02-12  0:13                                                   ` [PATCH 26/61] dyndbg-API: promote DYNAMIC_DEBUG_CLASSMAP_PARAM to API Jim Cromie
2026-02-12  0:13                                                     ` [PATCH 27/61] dyndbg: treat comma as a token separator Jim Cromie
2026-02-12  0:13                                                       ` [PATCH 28/61] dyndbg: split multi-query strings with % Jim Cromie
2026-02-12  0:13                                                         ` [PATCH 29/61] selftests-dyndbg: add test_mod_submod Jim Cromie
2026-02-12  0:13                                                           ` [PATCH 30/61] dyndbg: resolve "protection" of class'd pr_debug Jim Cromie
2026-02-12  0:13                                                             ` [PATCH 31/61] dyndbg: add DYNAMIC_DEBUG_CLASSMAP_USE_(dd_class_name, offset) Jim Cromie
2026-02-12  0:13                                                               ` [PATCH 32/61] docs/dyndbg: add classmap info to howto Jim Cromie
2026-02-12  0:13                                                                 ` [PATCH 33/61] drm: use correct ccflags-y spelling Jim Cromie
2026-02-12  0:13                                                                   ` [PATCH 34/61] drm-dyndbg: adapt drm core to use dyndbg classmaps-v2 Jim Cromie
2026-02-12  0:13                                                                     ` [PATCH 35/61] drm-dyndbg: adapt DRM to invoke DYNAMIC_DEBUG_CLASSMAP_PARAM Jim Cromie
2026-02-12  0:13                                                                       ` [PATCH 36/61] drm-print: modernize an archaic comment Jim Cromie
2026-02-12  0:13                                                                         ` [PATCH 37/61] drm-print: fix config-dependent unused variable Jim Cromie
2026-02-12  0:13                                                                           ` [PATCH 38/61] drm-dyndbg: DRM_CLASSMAP_USE in amdgpu driver Jim Cromie
2026-02-12  0:13                                                                             ` [PATCH 39/61] drm-dyndbg: DRM_CLASSMAP_USE in i915 driver Jim Cromie
2026-02-12  0:13                                                                               ` [PATCH 40/61] drm-dyndbg: DRM_CLASSMAP_USE in drm_crtc_helper Jim Cromie
2026-02-12  0:13                                                                                 ` [PATCH 41/61] drm-dyndbg: DRM_CLASSMAP_USE in drm_dp_helper Jim Cromie
2026-02-12  0:13                                                                                   ` [PATCH 42/61] drm-dyndbg: DRM_CLASSMAP_USE in nouveau Jim Cromie
2026-02-12  0:13                                                                                     ` [PATCH 43/61] drm-dyndbg: add DRM_CLASSMAP_USE to Xe driver Jim Cromie
2026-02-12  0:13                                                                                       ` [PATCH 44/61] drm-dyndbg: add DRM_CLASSMAP_USE to virtio_gpu Jim Cromie
2026-02-12  0:13                                                                                         ` [PATCH 45/61] drm-dyndbg: add DRM_CLASSMAP_USE to simpledrm Jim Cromie
2026-02-12  0:13                                                                                           ` [PATCH 46/61] drm-dyndbg: add DRM_CLASSMAP_USE to bochs Jim Cromie
2026-02-12  0:13                                                                                             ` [PATCH 47/61] drm-dyndbg: add DRM_CLASSMAP_USE to etnaviv Jim Cromie
2026-02-12  0:13                                                                                               ` [PATCH 48/61] drm-dyndbg: add DRM_CLASSMAP_USE to gma500 driver Jim Cromie
2026-02-12  0:13                                                                                                 ` [PATCH 49/61] drm-dyndbg: add DRM_CLASSMAP_USE to radeon Jim Cromie
2026-02-12  0:13                                                                                                   ` [PATCH 50/61] drm-dyndbg: add DRM_CLASSMAP_USE to vmwgfx driver Jim Cromie
2026-02-12  0:13                                                                                                     ` [PATCH 51/61] drm-dyndbg: add DRM_CLASSMAP_USE to vkms driver Jim Cromie
2026-02-12  0:13                                                                                                       ` [PATCH 52/61] drm-dyndbg: add DRM_CLASSMAP_USE to udl driver Jim Cromie
2026-02-12  0:13                                                                                                         ` [PATCH 53/61] drm-dyndbg: add DRM_CLASSMAP_USE to mgag200 driver Jim Cromie
2026-02-12  0:13                                                                                                           ` [PATCH 54/61] drm-dyndbg: add DRM_CLASSMAP_USE to the gud driver Jim Cromie
2026-02-12  0:13                                                                                                             ` [PATCH 55/61] drm-dyndbg: add DRM_CLASSMAP_USE to the qxl driver Jim Cromie
2026-02-12  0:13                                                                                                               ` [PATCH 56/61] drm-dyndbg: add DRM_CLASSMAP_USE to the drm_gem_shmem_helper driver Jim Cromie
2026-02-12  0:13                                                                                                                 ` [PATCH 57/61] accel: add -DDYNAMIC_DEBUG_MODULE to subdir-ccflags Jim Cromie
2026-02-12  0:13                                                                                                                   ` [PATCH 57/59] accel/ivpu: implement IVPU_DBG_* as a dyndbg classmap Jim Cromie
2026-02-12  0:13                                                                                                                     ` [PATCH 58/59] accel: add -DDYNAMIC_DEBUG_MODULE to subdir-cflags - RFC Jim Cromie
2026-02-12  0:13                                                                                                                       ` [PATCH 58/61] accel/ivpu: implement IVPU_DBG_* as a dyndbg classmap Jim Cromie
2026-02-12  0:13                                                                                                                         ` [PATCH 59/61] drm: restore CONFIG_DRM_USE_DYNAMIC_DEBUG un-BROKEN Jim Cromie
2026-02-12  0:13                                                                                                                           ` [PATCH 60/61] accel/ethosu: enable drm.debug control Jim Cromie
2026-02-12  0:13                                                                                                                             ` [PATCH 61/61] accel/rocket: " Jim Cromie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox