All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jim Cromie <jim.cromie@gmail.com>
To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
	intel-gvt-dev@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org, jbaron@akamai.com,
	gregkh@linuxfoundation.org, daniel.vetter@ffwll.ch,
	seanpaul@chromium.org, robdclark@gmail.com
Cc: Jim Cromie <jim.cromie@gmail.com>
Subject: [Intel-gfx] [PATCH v4 07/41] dyndbg: let query-modname override actual module name
Date: Wed, 20 Jul 2022 09:31:59 -0600	[thread overview]
Message-ID: <20220720153233.144129-8-jim.cromie@gmail.com> (raw)
In-Reply-To: <20220720153233.144129-1-jim.cromie@gmail.com>

dyndbg's control-parser: ddebug_parse_query(), requires that search
terms: module, func, file, lineno, are used only once in a query; a
thing cannot be named both foo and bar.

The cited commit added an overriding module modname, taken from the
module loader, which is authoritative.  So it set query.module 1st,
which disallowed its use in the query-string.

But now, its useful to allow a module-load to enable classes across a
whole (or part of) a subsystem at once.

  # enable (dynamic-debug in) drm only
  modprobe drm dyndbg="class DRM_UT_CORE +p"

  # get drm_helper too
  modprobe drm dyndbg="class DRM_UT_CORE module drm* +p"

  # get everything that knows DRM_UT_CORE
  modprobe drm dyndbg="class DRM_UT_CORE module * +p"

  # also for boot-args:
  drm.dyndbg="class DRM_UT_CORE module * +p"

So convert the override into a default, by filling it only when/after
the query-string omitted the module.

NB: the query class FOO handling is forthcoming.

Fixes: 8e59b5cfb9a6 dynamic_debug: add modname arg to exec_query callchain
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
 lib/dynamic_debug.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index e5cbe603000c..5a849716220a 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -385,10 +385,6 @@ static int ddebug_parse_query(char *words[], int nwords,
 		return -EINVAL;
 	}
 
-	if (modname)
-		/* support $modname.dyndbg=<multiple queries> */
-		query->module = modname;
-
 	for (i = 0; i < nwords; i += 2) {
 		char *keyword = words[i];
 		char *arg = words[i+1];
@@ -429,6 +425,13 @@ static int ddebug_parse_query(char *words[], int nwords,
 		if (rc)
 			return rc;
 	}
+	if (!query->module && modname)
+		/*
+		 * support $modname.dyndbg=<multiple queries>, when
+		 * not given in the query itself
+		 */
+		query->module = modname;
+
 	vpr_info_dq(query, "parsed");
 	return 0;
 }
-- 
2.36.1


WARNING: multiple messages have this Message-ID (diff)
From: Jim Cromie <jim.cromie@gmail.com>
To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
	intel-gvt-dev@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org, jbaron@akamai.com,
	gregkh@linuxfoundation.org, daniel.vetter@ffwll.ch,
	seanpaul@chromium.org, robdclark@gmail.com
Cc: Jim Cromie <jim.cromie@gmail.com>
Subject: [PATCH v4 07/41] dyndbg: let query-modname override actual module name
Date: Wed, 20 Jul 2022 09:31:59 -0600	[thread overview]
Message-ID: <20220720153233.144129-8-jim.cromie@gmail.com> (raw)
In-Reply-To: <20220720153233.144129-1-jim.cromie@gmail.com>

dyndbg's control-parser: ddebug_parse_query(), requires that search
terms: module, func, file, lineno, are used only once in a query; a
thing cannot be named both foo and bar.

The cited commit added an overriding module modname, taken from the
module loader, which is authoritative.  So it set query.module 1st,
which disallowed its use in the query-string.

But now, its useful to allow a module-load to enable classes across a
whole (or part of) a subsystem at once.

  # enable (dynamic-debug in) drm only
  modprobe drm dyndbg="class DRM_UT_CORE +p"

  # get drm_helper too
  modprobe drm dyndbg="class DRM_UT_CORE module drm* +p"

  # get everything that knows DRM_UT_CORE
  modprobe drm dyndbg="class DRM_UT_CORE module * +p"

  # also for boot-args:
  drm.dyndbg="class DRM_UT_CORE module * +p"

So convert the override into a default, by filling it only when/after
the query-string omitted the module.

NB: the query class FOO handling is forthcoming.

Fixes: 8e59b5cfb9a6 dynamic_debug: add modname arg to exec_query callchain
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
 lib/dynamic_debug.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index e5cbe603000c..5a849716220a 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -385,10 +385,6 @@ static int ddebug_parse_query(char *words[], int nwords,
 		return -EINVAL;
 	}
 
-	if (modname)
-		/* support $modname.dyndbg=<multiple queries> */
-		query->module = modname;
-
 	for (i = 0; i < nwords; i += 2) {
 		char *keyword = words[i];
 		char *arg = words[i+1];
@@ -429,6 +425,13 @@ static int ddebug_parse_query(char *words[], int nwords,
 		if (rc)
 			return rc;
 	}
+	if (!query->module && modname)
+		/*
+		 * support $modname.dyndbg=<multiple queries>, when
+		 * not given in the query itself
+		 */
+		query->module = modname;
+
 	vpr_info_dq(query, "parsed");
 	return 0;
 }
-- 
2.36.1


WARNING: multiple messages have this Message-ID (diff)
From: Jim Cromie <jim.cromie@gmail.com>
To: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
	intel-gvt-dev@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org, jbaron@akamai.com,
	gregkh@linuxfoundation.org, daniel.vetter@ffwll.ch,
	seanpaul@chromium.org, robdclark@gmail.com
Subject: [PATCH v4 07/41] dyndbg: let query-modname override actual module name
Date: Wed, 20 Jul 2022 09:31:59 -0600	[thread overview]
Message-ID: <20220720153233.144129-8-jim.cromie@gmail.com> (raw)
In-Reply-To: <20220720153233.144129-1-jim.cromie@gmail.com>

dyndbg's control-parser: ddebug_parse_query(), requires that search
terms: module, func, file, lineno, are used only once in a query; a
thing cannot be named both foo and bar.

The cited commit added an overriding module modname, taken from the
module loader, which is authoritative.  So it set query.module 1st,
which disallowed its use in the query-string.

But now, its useful to allow a module-load to enable classes across a
whole (or part of) a subsystem at once.

  # enable (dynamic-debug in) drm only
  modprobe drm dyndbg="class DRM_UT_CORE +p"

  # get drm_helper too
  modprobe drm dyndbg="class DRM_UT_CORE module drm* +p"

  # get everything that knows DRM_UT_CORE
  modprobe drm dyndbg="class DRM_UT_CORE module * +p"

  # also for boot-args:
  drm.dyndbg="class DRM_UT_CORE module * +p"

So convert the override into a default, by filling it only when/after
the query-string omitted the module.

NB: the query class FOO handling is forthcoming.

Fixes: 8e59b5cfb9a6 dynamic_debug: add modname arg to exec_query callchain
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
 lib/dynamic_debug.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index e5cbe603000c..5a849716220a 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -385,10 +385,6 @@ static int ddebug_parse_query(char *words[], int nwords,
 		return -EINVAL;
 	}
 
-	if (modname)
-		/* support $modname.dyndbg=<multiple queries> */
-		query->module = modname;
-
 	for (i = 0; i < nwords; i += 2) {
 		char *keyword = words[i];
 		char *arg = words[i+1];
@@ -429,6 +425,13 @@ static int ddebug_parse_query(char *words[], int nwords,
 		if (rc)
 			return rc;
 	}
+	if (!query->module && modname)
+		/*
+		 * support $modname.dyndbg=<multiple queries>, when
+		 * not given in the query itself
+		 */
+		query->module = modname;
+
 	vpr_info_dq(query, "parsed");
 	return 0;
 }
-- 
2.36.1


  parent reply	other threads:[~2022-07-20 15:33 UTC|newest]

Thread overview: 156+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-20 15:31 [Intel-gfx] [PATCH v4 00/41] DYNDBG: opt-in class'd debug for modules, use in drm Jim Cromie
2022-07-20 15:31 ` Jim Cromie
2022-07-20 15:31 ` Jim Cromie
2022-07-20 15:31 ` [Intel-gfx] [PATCH v4 01/41] dyndbg: fix static_branch manipulation Jim Cromie
2022-07-20 15:31   ` Jim Cromie
2022-07-20 15:31   ` Jim Cromie
2022-07-20 15:31 ` [PATCH v4 02/41] dyndbg: fix module.dyndbg handling Jim Cromie
2022-07-20 15:31   ` Jim Cromie
2022-07-20 15:31   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:31 ` [PATCH v4 03/41] dyndbg: show both old and new in change-info Jim Cromie
2022-07-20 15:31   ` Jim Cromie
2022-07-20 15:31   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:31 ` [PATCH v4 04/41] dyndbg: reverse module walk in cat control Jim Cromie
2022-07-20 15:31   ` Jim Cromie
2022-07-20 15:31   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:31 ` [Intel-gfx] [PATCH v4 05/41] dyndbg: reverse module.callsite " Jim Cromie
2022-07-20 15:31   ` Jim Cromie
2022-07-20 15:31   ` Jim Cromie
2022-07-20 15:31 ` [Intel-gfx] [PATCH v4 06/41] dyndbg: use ESCAPE_SPACE for " Jim Cromie
2022-07-20 15:31   ` Jim Cromie
2022-07-20 15:31   ` Jim Cromie
2022-07-20 15:31 ` Jim Cromie [this message]
2022-07-20 15:31   ` [PATCH v4 07/41] dyndbg: let query-modname override actual module name Jim Cromie
2022-07-20 15:31   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 08/41] dyndbg: add test_dynamic_debug module Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 09/41] dyndbg: drop EXPORTed dynamic_debug_exec_queries Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 10/41] dyndbg: add class_id to pr_debug callsites Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 11/41] dyndbg: add __pr_debug_cls for testing Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 12/41] dyndbg: add DECLARE_DYNDBG_CLASSMAP Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-22 20:23   ` Jason Baron
2022-07-22 20:23     ` [Intel-gfx] " Jason Baron
2022-07-22 23:23     ` jim.cromie
2022-07-22 23:23       ` jim.cromie
2022-07-22 23:23       ` [Intel-gfx] " jim.cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 13/41] kernel/module: add __dyndbg_classes section Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 14/41] dyndbg: add ddebug_attach_module_classes Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [PATCH v4 15/41] dyndbg: validate class FOO by checking with module Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 16/41] dyndbg: add drm.debug style bitmap support Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-22 20:33   ` Jason Baron
2022-07-22 20:33     ` [Intel-gfx] " Jason Baron
2022-07-28 21:25     ` jim.cromie
2022-07-28 21:25       ` jim.cromie
2022-07-28 21:25       ` [Intel-gfx] " jim.cromie
2022-07-20 15:32 ` [PATCH v4 17/41] dyndbg: test DECLARE_DYNDBG_CLASSMAP, sysfs nodes Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [PATCH v4 18/41] doc-dyndbg: describe "class CLASS_NAME" query support Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [PATCH v4 19/41] doc-dyndbg: edit dynamic-debug-howto for brevity, audience Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [PATCH v4 20/41] drm_print: condense enum drm_debug_category Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [PATCH v4 21/41] drm: POC drm on dyndbg - use in core, 2 helpers, 3 drivers Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [PATCH v4 22/41] drm_print: interpose drm_*dbg with forwarding macros Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [PATCH v4 23/41] drm_print: wrap drm_*_dbg in dyndbg descriptor factory macro Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 24/41] drm-print: add drm_dbg_driver to improve namespace symmetry Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 25/41] drm-print: include dyndbg header indirectly Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 26/41] drm_print: refine drm_debug_enabled for jump-label Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 27/41] drm_print: prefer bare printk KERN_DEBUG on generic fn Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 28/41] drm_print: add _ddebug descriptor to drm_*dbg prototypes Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 29/41] nouveau: change nvkm_debug/trace to use dev_dbg POC Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [PATCH v4 30/41] tracing/events: Add __vstring() and __assign_vstr() helper macros Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [PATCH v4 31/41] dyndbg: add _DPRINTK_FLAGS_ENABLED Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 32/41] dyndbg: add _DPRINTK_FLAGS_TRACE Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 33/41] dyndbg: add write-events-to-tracefs code Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 34/41] dyndbg: add 2 trace-events: drm_{, dev}debug Jim Cromie
2022-07-20 15:32   ` [PATCH v4 34/41] dyndbg: add 2 trace-events: drm_{,dev}debug Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [PATCH v4 35/41] dyndbg: add 2 more trace-events: pr_debug, dev_dbg Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [PATCH v4 36/41] dyndbg/drm: POC add tracebits sysfs-knob Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 37/41] nouveau: adapt NV_DEBUG, NV_ATOMIC to use DRM.debug Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 38/41] nouveau-dyndbg: alter DEBUG, TRACE, SPAM levels to use dyndbg Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [Intel-gfx] [PATCH v4 39/41] nouveau-dbg: add 2 verbose-classmaps for CLI, SUBDEV Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32 ` [PATCH v4 40/41] nouveau-dbg: fixup lost prdbgs Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 15:32 ` [PATCH v4 41/41] nouveau-dyndbg: wip subdev refine, breaks on use Jim Cromie
2022-07-20 15:32   ` Jim Cromie
2022-07-20 15:32   ` [Intel-gfx] " Jim Cromie
2022-07-20 17:06 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for DYNDBG: opt-in class'd debug for modules, use in drm. (rev2) Patchwork
2022-08-03 19:56 ` [PATCH v4 00/41] DYNDBG: opt-in class'd debug for modules, use in drm jim.cromie
2022-08-03 19:56   ` [Intel-gfx] " jim.cromie
2022-08-03 20:13   ` Jason Baron
2022-08-03 20:13     ` [Intel-gfx] " Jason Baron
2022-08-11 16:52     ` Daniel Vetter
2022-08-11 16:52       ` Daniel Vetter
2022-08-11 16:52       ` [Intel-gfx] " Daniel Vetter
2022-08-12  6:03       ` Greg KH
2022-08-12  6:03         ` Greg KH
2022-08-12  6:03         ` [Intel-gfx] " Greg KH
2022-09-06 19:18         ` Daniel Vetter
2022-09-06 19:18           ` Daniel Vetter
2022-09-06 19:18           ` [Intel-gfx] " Daniel Vetter
2022-09-07  5:47           ` Greg KH
2022-09-07  5:47             ` Greg KH
2022-09-07  5:47             ` [Intel-gfx] " Greg KH
2022-09-07  6:08             ` Daniel Vetter
2022-09-07  6:08               ` Daniel Vetter
2022-09-07  6:08               ` [Intel-gfx] " Daniel Vetter

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=20220720153233.144129-8-jim.cromie@gmail.com \
    --to=jim.cromie@gmail.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=jbaron@akamai.com \
    --cc=robdclark@gmail.com \
    --cc=seanpaul@chromium.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.