public inbox for drm-ai-reviews@public-inbox.freedesktop.org
 help / color / mirror / Atom feed
From: Jim Cromie <jim.cromie@gmail.com>
To: airlied@gmail.com, simona@ffwll.ch, jbaron@akamai.com,
	gregkh@linuxfoundation.org, Jim Cromie <jim.cromie@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org
Cc: mripard@kernel.org, tzimmermann@suse.de,
	maarten.lankhorst@linux.intel.com, jani.nikula@intel.com,
	ville.syrjala@linux.intel.com, christian.koenig@amd.com,
	matthew.auld@intel.com, arunpravin.paneerselvam@amd.com,
	louis.chauvet@bootlin.com, skhan@linuxfoundation.org,
	pmladek@suse.com, ukaszb@chromium.org,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	amd-gfx@lists.freedesktop.org
Subject: [PATCH v11 12/65] dyndbg: refactor param_set_dyndbg_classes and below
Date: Fri, 13 Mar 2026 07:19:37 -0600	[thread overview]
Message-ID: <20260313132103.2529746-13-jim.cromie@gmail.com> (raw)
In-Reply-To: <20260313132103.2529746-1-jim.cromie@gmail.com>

Refactor callchain below param_set_dyndbg_classes(1) to allow mod-name
specific settings.  Split (1) into upper/lower fns, adding modname
param to lower, and passing NULL in from upper.  Below that, add the
same param to ddebug_apply_class_bitmap(), and pass it thru to
_ddebug_queries(), replacing NULL with the param.

This allows the callchain to update the classmap in just one module,
vs just all as currently done.  While the sysfs param is unlikely to
ever update just one module, the callchain will be used for modprobe
handling, which should update only that just-probed module.

In ddebug_apply_class_bitmap(), also check for actual changes to the
bits before announcing them, to declutter logs.

No functional change.

Reviewed-by: Louis Chauvet <louis.chauvet@bootlin.com>
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
 lib/dynamic_debug.c | 65 ++++++++++++++++++++++++++++-----------------
 1 file changed, 40 insertions(+), 25 deletions(-)

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index 3ae9ecabdad1..4313c8803007 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -605,9 +605,10 @@ static int ddebug_exec_queries(char *query, const char *modname)
 	return nfound;
 }
 
-/* apply a new bitmap to the sys-knob's current bit-state */
+/* apply a new class-param setting */
 static int ddebug_apply_class_bitmap(const struct ddebug_class_param *dcp,
-				     unsigned long *new_bits, unsigned long *old_bits)
+				     unsigned long *new_bits, unsigned long *old_bits,
+				     const char *query_modname)
 {
 #define QUERY_SIZE 128
 	char query[QUERY_SIZE];
@@ -615,7 +616,9 @@ static int ddebug_apply_class_bitmap(const struct ddebug_class_param *dcp,
 	int matches = 0;
 	int bi, ct;
 
-	v2pr_info("apply: 0x%lx to: 0x%lx\n", *new_bits, *old_bits);
+	if (*new_bits != *old_bits)
+		v2pr_info("apply bitmap: 0x%lx to: 0x%lx for %s\n", *new_bits,
+			  *old_bits, query_modname ?: "'*'");
 
 	for (bi = 0; bi < map->length; bi++) {
 		if (test_bit(bi, new_bits) == test_bit(bi, old_bits))
@@ -624,12 +627,16 @@ static int ddebug_apply_class_bitmap(const struct ddebug_class_param *dcp,
 		snprintf(query, QUERY_SIZE, "class %s %c%s", map->class_names[bi],
 			 test_bit(bi, new_bits) ? '+' : '-', dcp->flags);
 
-		ct = ddebug_exec_queries(query, NULL);
+		ct = ddebug_exec_queries(query, query_modname);
 		matches += ct;
 
 		v2pr_info("bit_%d: %d matches on class: %s -> 0x%lx\n", bi,
 			  ct, map->class_names[bi], *new_bits);
 	}
+	if (*new_bits != *old_bits)
+		v2pr_info("applied bitmap: 0x%lx to: 0x%lx for %s\n", *new_bits,
+			  *old_bits, query_modname ?: "'*'");
+
 	return matches;
 }
 
@@ -684,7 +691,7 @@ static int param_set_dyndbg_classnames(const char *instr, const struct kernel_pa
 				continue;
 			}
 			curr_bits ^= BIT(cls_id);
-			totct += ddebug_apply_class_bitmap(dcp, &curr_bits, dcp->bits);
+			totct += ddebug_apply_class_bitmap(dcp, &curr_bits, dcp->bits, NULL);
 			*dcp->bits = curr_bits;
 			v2pr_info("%s: changed bit %d:%s\n", KP_NAME(kp), cls_id,
 				  map->class_names[cls_id]);
@@ -694,7 +701,7 @@ static int param_set_dyndbg_classnames(const char *instr, const struct kernel_pa
 			old_bits = CLASSMAP_BITMASK(*dcp->lvl);
 			curr_bits = CLASSMAP_BITMASK(cls_id + (wanted ? 1 : 0 ));
 
-			totct += ddebug_apply_class_bitmap(dcp, &curr_bits, &old_bits);
+			totct += ddebug_apply_class_bitmap(dcp, &curr_bits, &old_bits, NULL);
 			*dcp->lvl = (cls_id + (wanted ? 1 : 0));
 			v2pr_info("%s: changed bit-%d: \"%s\" %lx->%lx\n", KP_NAME(kp), cls_id,
 				  map->class_names[cls_id], old_bits, curr_bits);
@@ -708,18 +715,9 @@ static int param_set_dyndbg_classnames(const char *instr, const struct kernel_pa
 	return 0;
 }
 
-/**
- * param_set_dyndbg_classes - class FOO >control
- * @instr: string echo>d to sysfs, input depends on map_type
- * @kp:    kp->arg has state: bits/lvl, map, map_type
- *
- * Enable/disable prdbgs by their class, as given in the arguments to
- * DECLARE_DYNDBG_CLASSMAP.  For LEVEL map-types, enforce relative
- * levels by bitpos.
- *
- * Returns: 0 or <0 if error.
- */
-int param_set_dyndbg_classes(const char *instr, const struct kernel_param *kp)
+static int param_set_dyndbg_module_classes(const char *instr,
+					   const struct kernel_param *kp,
+					   const char *mod_name)
 {
 	const struct ddebug_class_param *dcp = kp->arg;
 	const struct ddebug_class_map *map = dcp->map;
@@ -756,8 +754,8 @@ int param_set_dyndbg_classes(const char *instr, const struct kernel_param *kp)
 				KP_NAME(kp), inrep, CLASSMAP_BITMASK(map->length));
 			inrep &= CLASSMAP_BITMASK(map->length);
 		}
-		v2pr_info("bits:%lx > %s\n", inrep, KP_NAME(kp));
-		totct += ddebug_apply_class_bitmap(dcp, &inrep, dcp->bits);
+		v2pr_info("bits:0x%lx > %s.%s\n", inrep, mod_name ?: "*", KP_NAME(kp));
+		totct += ddebug_apply_class_bitmap(dcp, &inrep, dcp->bits, mod_name);
 		*dcp->bits = inrep;
 		break;
 	case DD_CLASS_TYPE_LEVEL_NUM:
@@ -770,7 +768,7 @@ int param_set_dyndbg_classes(const char *instr, const struct kernel_param *kp)
 		old_bits = CLASSMAP_BITMASK(*dcp->lvl);
 		new_bits = CLASSMAP_BITMASK(inrep);
 		v2pr_info("lvl:%ld bits:0x%lx > %s\n", inrep, new_bits, KP_NAME(kp));
-		totct += ddebug_apply_class_bitmap(dcp, &new_bits, &old_bits);
+		totct += ddebug_apply_class_bitmap(dcp, &new_bits, &old_bits, mod_name);
 		*dcp->lvl = inrep;
 		break;
 	default:
@@ -779,16 +777,33 @@ int param_set_dyndbg_classes(const char *instr, const struct kernel_param *kp)
 	vpr_info("%s: total matches: %d\n", KP_NAME(kp), totct);
 	return 0;
 }
+
+/**
+ * param_set_dyndbg_classes - classmap kparam setter
+ * @instr: string echo>d to sysfs, input depends on map_type
+ * @kp:    kp->arg has state: bits/lvl, map, map_type
+ *
+ * enable/disable all class'd pr_debugs in the classmap. For LEVEL
+ * map-types, enforce * relative levels by bitpos.
+ *
+ * Returns: 0 or <0 if error.
+ */
+int param_set_dyndbg_classes(const char *instr, const struct kernel_param *kp)
+{
+	return param_set_dyndbg_module_classes(instr, kp, NULL);
+}
 EXPORT_SYMBOL(param_set_dyndbg_classes);
 
 /**
- * param_get_dyndbg_classes - classes reader
+ * param_get_dyndbg_classes - classmap kparam getter
  * @buffer: string description of controlled bits -> classes
  * @kp:     kp->arg has state: bits, map
  *
- * Reads last written state, underlying prdbg state may have been
- * altered by direct >control.  Displays 0x for DISJOINT, 0-N for
- * LEVEL Returns: #chars written or <0 on error
+ * Reads last written state, underlying pr_debug states may have been
+ * altered by direct >control.  Displays 0x for DISJOINT classmap
+ * types, 0-N for LEVEL types.
+ *
+ * Returns: ct of chars written or <0 on error
  */
 int param_get_dyndbg_classes(char *buffer, const struct kernel_param *kp)
 {
-- 
2.53.0


  parent reply	other threads:[~2026-03-13 13:23 UTC|newest]

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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260313132103.2529746-13-jim.cromie@gmail.com \
    --to=jim.cromie@gmail.com \
    --cc=airlied@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=arunpravin.paneerselvam@amd.com \
    --cc=christian.koenig@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    --cc=jbaron@akamai.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=louis.chauvet@bootlin.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=matthew.auld@intel.com \
    --cc=mripard@kernel.org \
    --cc=pmladek@suse.com \
    --cc=simona@ffwll.ch \
    --cc=skhan@linuxfoundation.org \
    --cc=tzimmermann@suse.de \
    --cc=ukaszb@chromium.org \
    --cc=ville.syrjala@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox