From: Jim Cromie <jim.cromie@gmail.com>
To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
amd-gfx@lists.freedesktop.org,
intel-gvt-dev@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org,
intel-gfx-trybot@lists.freedesktop.org
Cc: jbaron@akamai.com, gregkh@linuxfoundation.org,
ukaszb@chromium.org, louis.chauvet@bootlin.com,
daniel.vetter@ffwll.ch, tvrtko.ursulin@linux.intel.com,
jani.nikula@intel.com, ville.syrjala@linux.intel.com,
Jim Cromie <jim.cromie@gmail.com>
Subject: [PATCH v2 18/59] selftests-dyndbg: add tools/testing/selftests/dynamic_debug/*
Date: Thu, 20 Mar 2025 12:51:56 -0600 [thread overview]
Message-ID: <20250320185238.447458-19-jim.cromie@gmail.com> (raw)
In-Reply-To: <20250320185238.447458-1-jim.cromie@gmail.com>
Add a selftest script for dynamic-debug. The config requires
CONFIG_TEST_DYNAMIC_DEBUG=m and CONFIG_TEST_DYNAMIC_DEBUG_SUBMOD=m,
which tacitly requires either CONFIG_DYNAMIC_DEBUG=y or
CONFIG_DYNAMIC_DEBUG_CORE=y
ATM this has just basic_tests(), which modify pr_debug() flags in the
builtin params module. This means they're available to manipulate and
observe the effects in "cat control".
This is backported from another feature branch; the support-fns (thx
Lukas) have unused features at the moment, they'll get used shortly.
The script enables simple virtme-ng testing:
[jimc@gandalf b0-ftrace]$ vrun_t
virtme-ng 1.32+115.g07b109d
doing: vng --name v6.14-rc4-60-gd5f48427de0c \
--user root -v -p 4 -a dynamic_debug.verbose=3 V=1 \
-- ../tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh
virtme: waiting for virtiofsd to start
..
And add dynamic_debug to TARGETS, so `make run_tests` sees it properly
For the impatient, set TARGETS explicitly:
bash-5.2# make TARGETS=dynamic_debug run_tests
make[1]: ...
TAP version 13
1..1
[ 35.552922] dyndbg: read 3 bytes from userspace
[ 35.553099] dyndbg: query 0: "=_" mod:*
[ 35.553544] dyndbg: processed 1 queries, with 1778 matches, 0 errs
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
Co-developed-by: Łukasz Bartosik <ukaszb@chromium.org>
Signed-off-by: Łukasz Bartosik <ukaszb@chromium.org>
---
- check KCONFIG_CONFIG to avoid silly fails
Several tests are dependent upon config choices. Lets avoid failing
where that is noise.
The KCONFIG_CONFIG var exists to convey the config-file around. If
the var names a file, read it and extract the relevant CONFIG items,
and use them to skip the dependent tests, thus avoiding the fails that
would follow, and the disruption to whatever CI is running these
selftests.
If the envar doesn't name a config-file, ".config" is assumed.
CONFIG_DYNAMIC_DEBUG=y:
basic-tests() and comma-terminator-tests() test for the presence of
the builtin pr_debugs in module/main.c, which I deemed stable and
therefore safe to count. That said, the test fails if only
CONFIG_DYNAMIC_DEBUG_CORE=y is set. It could be rewritten to test
against test-dynamic-debug.ko, but that just trades one config
dependence for another.
CONFIG_TEST_DYNAMIC_DEBUG=m
As written, test_percent_splitting() modprobes test_dynamic_debug,
enables several classes, and count them. It could be re-written to
work for the builtin module also, but builtin test modules are not a
common or desirable build/config.
CONFIG_TEST_DYNAMIC_DEBUG=m && CONFIG_TEST_DYNAMIC_DEBUG_SUBMOD=m
test_mod_submod() recaps the bug found in DRM-CI where drivers werent
enabled by drm.debug=<bits>. It modprobes both test_dynamic_debug &
test_dynamic_debug_submod, so it depends on a loadable modules config.
It could be rewritten to work in a builtin parent config; DRM=y is
common enough to be pertinent, but testing that config also wouldn't
really test anything more fully than all-loadable modules, since they
default together.
---
MAINTAINERS | 1 +
tools/testing/selftests/Makefile | 1 +
.../testing/selftests/dynamic_debug/Makefile | 9 +
tools/testing/selftests/dynamic_debug/config | 2 +
.../dynamic_debug/dyndbg_selftest.sh | 256 ++++++++++++++++++
5 files changed, 269 insertions(+)
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
diff --git a/MAINTAINERS b/MAINTAINERS
index f98aec07a46d..46515c2f8550 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8137,6 +8137,7 @@ S: Maintained
F: include/linux/dynamic_debug.h
F: lib/dynamic_debug.c
F: lib/test_dynamic_debug*.c
+F: tools/testing/selftests/dynamic_debug/*
DYNAMIC INTERRUPT MODERATION
M: Tal Gilboa <talgi@nvidia.com>
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index 8daac70c2f9d..b6a323c7f986 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -26,6 +26,7 @@ TARGETS += drivers/net/team
TARGETS += drivers/net/virtio_net
TARGETS += drivers/platform/x86/intel/ifs
TARGETS += dt
+TARGETS += dynamic_debug
TARGETS += efivarfs
TARGETS += exec
TARGETS += fchmodat2
diff --git a/tools/testing/selftests/dynamic_debug/Makefile b/tools/testing/selftests/dynamic_debug/Makefile
new file mode 100644
index 000000000000..6d06fa7f1040
--- /dev/null
+++ b/tools/testing/selftests/dynamic_debug/Makefile
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: GPL-2.0-only
+# borrowed from Makefile for user memory selftests
+
+# No binaries, but make sure arg-less "make" doesn't trigger "run_tests"
+all:
+
+TEST_PROGS := dyndbg_selftest.sh
+
+include ../lib.mk
diff --git a/tools/testing/selftests/dynamic_debug/config b/tools/testing/selftests/dynamic_debug/config
new file mode 100644
index 000000000000..d080da571ac0
--- /dev/null
+++ b/tools/testing/selftests/dynamic_debug/config
@@ -0,0 +1,2 @@
+CONFIG_TEST_DYNAMIC_DEBUG=m
+CONFIG_TEST_DYNAMIC_DEBUG_SUBMOD=m
diff --git a/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh
new file mode 100755
index 000000000000..68a9046405f2
--- /dev/null
+++ b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh
@@ -0,0 +1,256 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0-only
+
+V=${V:=0} # invoke as V=1 $0 for global verbose
+RED="\033[0;31m"
+GREEN="\033[0;32m"
+YELLOW="\033[0;33m"
+BLUE="\033[0;34m"
+MAGENTA="\033[0;35m"
+CYAN="\033[0;36m"
+NC="\033[0;0m"
+error_msg=""
+
+[ -e /proc/dynamic_debug/control ] || {
+ echo -e "${RED}: this test requires CONFIG_DYNAMIC_DEBUG=y ${NC}"
+ exit 0 # nothing to test here, no good reason to fail.
+}
+
+# need info to avoid failures due to untestable configs
+
+[ -f "$KCONFIG_CONFIG" ] || KCONFIG_CONFIG=".config"
+if [ -f "$KCONFIG_CONFIG" ]; then
+ echo "# consulting KCONFIG_CONFIG: $KCONFIG_CONFIG"
+ grep -q "CONFIG_DYNAMIC_DEBUG=y" $KCONFIG_CONFIG ; LACK_DD_BUILTIN=$?
+ grep -q "CONFIG_TEST_DYNAMIC_DEBUG=m" $KCONFIG_CONFIG ; LACK_TMOD=$?
+ grep -q "CONFIG_TEST_DYNAMIC_DEBUG_SUBMOD=m" $KCONFIG_CONFIG ; LACK_TMOD_SUBMOD=$?
+ if [ $V -eq 1 ]; then
+ echo LACK_DD_BUILTIN: $LACK_DD_BUILTIN
+ echo LACK_TMOD: $LACK_TMOD
+ echo LACK_TMOD_SUBMOD: $LACK_TMOD_SUBMOD
+ fi
+else
+ LACK_DD_BUILTIN=0
+ LACK_TMOD=0
+ LACK_TMOD_SUBMOD=0
+fi
+
+function vx () {
+ echo $1 > /sys/module/dynamic_debug/parameters/verbose
+}
+
+function ddgrep () {
+ grep $1 /proc/dynamic_debug/control
+}
+
+function doprints () {
+ cat /sys/module/test_dynamic_debug/parameters/do_prints
+}
+
+function ddcmd () {
+ exp_exit_code=0
+ num_args=$#
+ if [ "${@:$#}" = "pass" ]; then
+ num_args=$#-1
+ elif [ "${@:$#}" = "fail" ]; then
+ num_args=$#-1
+ exp_exit_code=1
+ fi
+ args=${@:1:$num_args}
+ output=$((echo "$args" > /proc/dynamic_debug/control) 2>&1)
+ exit_code=$?
+ error_msg=$(echo $output | cut -d ":" -f 5 | sed -e 's/^[[:space:]]*//')
+ handle_exit_code $BASH_LINENO $FUNCNAME $exit_code $exp_exit_code
+}
+
+function handle_exit_code() {
+ local exp_exit_code=0
+ [ $# == 4 ] && exp_exit_code=$4
+ if [ $3 -ne $exp_exit_code ]; then
+ echo -e "${RED}: $BASH_SOURCE:$1 $2() expected to exit with code $exp_exit_code"
+ [ $3 == 1 ] && echo "Error: '$error_msg'"
+ exit
+ fi
+}
+
+# $1 - pattern to match, pattern in $1 is enclosed by spaces for a match ""\s$1\s"
+# $2 - number of times the pattern passed in $1 is expected to match
+# $3 - optional can be set either to "-r" or "-v"
+# "-r" means relaxed matching in this case pattern provided in $1 is passed
+# as is without enclosing it with spaces
+# "-v" prints matching lines
+# $4 - optional when $3 is set to "-r" then $4 can be used to pass "-v"
+function check_match_ct {
+ pattern="\s$1\s"
+ exp_cnt=0
+
+ [ "$3" == "-r" ] && pattern="$1"
+ let cnt=$(ddgrep "$pattern" | wc -l)
+ if [ $V -eq 1 ] || [ "$3" == "-v" ] || [ "$4" == "-v" ]; then
+ echo -ne "${BLUE}" && ddgrep $pattern && echo -ne "${NC}"
+ fi
+ [ $# -gt 1 ] && exp_cnt=$2
+ if [ $cnt -ne $exp_cnt ]; then
+ echo -e "${RED}: $BASH_SOURCE:$BASH_LINENO check failed expected $exp_cnt on $1, got $cnt"
+ exit
+ else
+ echo ": $cnt matches on $1"
+ fi
+}
+
+# $1 - trace instance name
+# #2 - if > 0 then directory is expected to exist, if <= 0 then otherwise
+# $3 - "-v" for verbose
+function check_trace_instance_dir {
+ if [ -e /sys/kernel/tracing/instances/$1 ]; then
+ if [ "$3" == "-v" ] ; then
+ echo "ls -l /sys/kernel/tracing/instances/$1: "
+ ls -l /sys/kernel/tracing/instances/$1
+ fi
+ if [ $2 -le 0 ]; then
+ echo -e "${RED}: $BASH_SOURCE:$BASH_LINENO error trace instance \
+ '/sys/kernel/tracing/instances/$1' does exist"
+ exit
+ fi
+ else
+ if [ $2 -gt 0 ]; then
+ echo -e "${RED}: $BASH_SOURCE:$BASH_LINENO error trace instance \
+ '/sys/kernel/tracing/instances/$1' does not exist"
+ exit
+ fi
+ fi
+}
+
+function tmark {
+ echo $* > /sys/kernel/tracing/trace_marker
+}
+
+# $1 - trace instance name
+# $2 - line number
+# $3 - if > 0 then the instance is expected to be opened, otherwise
+# the instance is expected to be closed
+function check_trace_instance {
+ output=$(tail -n9 /proc/dynamic_debug/control | grep ": Opened trace instances" \
+ | xargs -n1 | grep $1)
+ if [ "$output" != $1 ] && [ $3 -gt 0 ]; then
+ echo -e "${RED}: $BASH_SOURCE:$2 trace instance $1 is not opened"
+ exit
+ fi
+ if [ "$output" == $1 ] && [ $3 -le 0 ]; then
+ echo -e "${RED}: $BASH_SOURCE:$2 trace instance $1 is not closed"
+ exit
+ fi
+}
+
+function is_trace_instance_opened {
+ check_trace_instance $1 $BASH_LINENO 1
+}
+
+function is_trace_instance_closed {
+ check_trace_instance $1 $BASH_LINENO 0
+}
+
+# $1 - trace instance directory to delete
+# $2 - if > 0 then directory is expected to be deleted successfully, if <= 0 then otherwise
+function del_trace_instance_dir() {
+ exp_exit_code=1
+ [ $2 -gt 0 ] && exp_exit_code=0
+ output=$((rmdir /sys/kernel/debug/tracing/instances/$1) 2>&1)
+ exit_code=$?
+ error_msg=$(echo $output | cut -d ":" -f 3 | sed -e 's/^[[:space:]]*//')
+ handle_exit_code $BASH_LINENO $FUNCNAME $exit_code $exp_exit_code
+}
+
+function error_log_ref {
+ # to show what I got
+ : echo "# error-log-ref: $1"
+ : echo cat \$2
+}
+
+function ifrmmod {
+ lsmod | grep $1 2>&1>/dev/null && rmmod $1
+}
+
+# $1 - text to search for
+function search_trace() {
+ search_trace_name 0 1 $1
+}
+
+# $1 - trace instance name, 0 for global event trace
+# $2 - line number counting from the bottom
+# $3 - text to search for
+function search_trace_name() {
+ if [ "$1" = "0" ]; then
+ buf=$(cat /sys/kernel/debug/tracing/trace)
+ line=$(tail -$2 /sys/kernel/debug/tracing/trace | head -1 | sed -e 's/^[[:space:]]*//')
+ else
+ buf=$(cat /sys/kernel/debug/tracing/instances/$1/trace)
+ line=$(tail -$2 /sys/kernel/debug/tracing/instances/$1/trace | head -1 | \
+ sed -e 's/^[[:space:]]*//')
+ fi
+ if [ $2 = 0 ]; then
+ # whole-buf check
+ output=$(echo $buf | grep "$3")
+ else
+ output=$(echo $line | grep "$3")
+ fi
+ if [ "$output" = "" ]; then
+ echo -e "${RED}: $BASH_SOURCE:$BASH_LINENO search for '$3' failed \
+ in line '$line' or '$buf'"
+ exit
+ fi
+ if [ $V = 1 ]; then
+ echo -e "${MAGENTA}: search_trace_name in $1 found: \n$output \nin:${BLUE} $buf ${NC}"
+ fi
+}
+
+# $1 - error message to check
+function check_err_msg() {
+ if [ "$error_msg" != "$1" ]; then
+ echo -e "${RED}: $BASH_SOURCE:$BASH_LINENO error message '$error_msg' \
+ does not match with '$1'"
+ exit
+ fi
+}
+
+function basic_tests {
+ echo -e "${GREEN}# BASIC_TESTS ${NC}"
+ if [ $LACK_DD_BUILTIN -eq 1 ]; then
+ echo "SKIP"
+ return
+ fi
+ ddcmd =_ # zero everything
+ check_match_ct =p 0
+
+ # module params are builtin to handle boot args
+ check_match_ct '\[params\]' 4 -r
+ ddcmd module params +mpf
+ check_match_ct =pmf 4
+
+ # multi-cmd input, newline separated, with embedded comments
+ cat <<"EOF" > /proc/dynamic_debug/control
+ module params =_ # clear params
+ module params +mf # set flags
+ module params func parse_args +sl # other flags
+EOF
+ check_match_ct =mf 3
+ check_match_ct =mfsl 1
+ ddcmd =_
+}
+
+tests_list=(
+ basic_tests
+)
+
+# Run tests
+
+ifrmmod test_dynamic_debug_submod
+ifrmmod test_dynamic_debug
+
+for test in "${tests_list[@]}"
+do
+ $test
+ echo ""
+done
+echo -en "${GREEN}# Done on: "
+date
--
2.49.0
next prev parent reply other threads:[~2025-03-20 18:53 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-20 18:51 [PATCH v2 00/59] Fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y Jim Cromie
2025-03-20 18:51 ` [PATCH v2 01/59] vmlinux.lds.h: fixup HEADERED_SECTION{,_BY} macros Jim Cromie
2025-03-20 18:51 ` [PATCH v2 02/59] docs/dyndbg: update examples \012 to \n Jim Cromie
2025-03-20 18:51 ` [PATCH v2 03/59] test-dyndbg: fixup CLASSMAP usage error Jim Cromie
2025-03-20 18:51 ` [PATCH v2 04/59] dyndbg: reword "class unknown, " to "class:_UNKNOWN_" Jim Cromie
2025-03-20 18:51 ` [PATCH v2 05/59] dyndbg: make ddebug_class_param union members same size Jim Cromie
2025-03-20 18:51 ` [PATCH v2 06/59] dyndbg: drop NUM_TYPE_ARRAY Jim Cromie
2025-03-20 18:51 ` [PATCH v2 07/59] dyndbg: reduce verbose/debug clutter Jim Cromie
2025-03-20 18:51 ` [PATCH v2 08/59] dyndbg: refactor param_set_dyndbg_classes and below Jim Cromie
2025-03-20 18:51 ` [PATCH v2 09/59] dyndbg: tighten fn-sig of ddebug_apply_class_bitmap Jim Cromie
2025-03-20 18:51 ` [PATCH v2 10/59] dyndbg: replace classmap list with a vector Jim Cromie
2025-03-24 15:08 ` Louis Chauvet
2025-03-24 22:33 ` jim.cromie
2025-03-20 18:51 ` [PATCH v2 11/59] dyndbg: macrofy a 2-index for-loop pattern Jim Cromie
2025-03-24 15:10 ` Louis Chauvet
2025-03-20 18:51 ` [PATCH v2 12/59] dyndbg, module: make proper substructs in _ddebug_info Jim Cromie
2025-03-24 15:10 ` Louis Chauvet
2025-03-20 18:51 ` [PATCH v2 13/59] dyndbg: add 2 new _DPRINTK_FLAGS_: INCL_LOOKUP, PREFIX_CACHED Jim Cromie
2025-03-24 15:11 ` Louis Chauvet
2025-03-20 18:51 ` [PATCH v2 14/59] dyndbg: split _emit_lookup() out of dynamic_emit_prefix() Jim Cromie
2025-03-24 15:14 ` Louis Chauvet
2025-03-20 18:51 ` [PATCH v2 15/59] dyndbg: hoist classmap-filter-by-modname up to ddebug_add_module Jim Cromie
2025-03-24 15:14 ` Louis Chauvet
2025-03-20 18:51 ` [PATCH v2 16/59] dyndbg-API: remove DD_CLASS_TYPE_(DISJOINT|LEVEL)_NAMES and code Jim Cromie
2025-03-24 15:15 ` Louis Chauvet
2025-03-20 18:51 ` [PATCH v2 17/59] dyndbg-API: replace DECLARE_DYNDBG_CLASSMAP Jim Cromie
2025-03-24 15:16 ` Louis Chauvet
2025-03-20 18:51 ` Jim Cromie [this message]
2025-03-20 18:51 ` [PATCH v2 19/59] dyndbg: detect class_id reservation conflicts Jim Cromie
2025-03-20 18:51 ` [PATCH v2 20/59] dyndbg: check DYNDBG_CLASSMAP_DEFINE args at compile-time Jim Cromie
2025-03-24 15:16 ` Louis Chauvet
2025-03-20 18:51 ` [PATCH v2 21/59] dyndbg-test: change do_prints testpoint to accept a loopct Jim Cromie
2025-03-20 18:52 ` [PATCH v2 22/59] dyndbg-API: promote DYNAMIC_DEBUG_CLASSMAP_PARAM to API Jim Cromie
2025-03-24 15:18 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 23/59] dyndbg: move .mod_name from/to structs ddebug_table/_ddebug_info Jim Cromie
2025-03-24 15:19 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 24/59] dyndbg: treat comma as a token separator Jim Cromie
2025-03-24 15:18 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 25/59] selftests-dyndbg: add comma_terminator_tests Jim Cromie
2025-03-24 15:19 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 26/59] dyndbg: split multi-query strings with % Jim Cromie
2025-03-24 15:19 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 27/59] selftests-dyndbg: test_percent_splitting Jim Cromie
2025-03-24 15:19 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 28/59] selftests-dyndbg: add test_mod_submod Jim Cromie
2025-03-24 15:20 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 29/59] dyndbg: change __dynamic_func_call_cls* macros into expressions Jim Cromie
2025-03-24 15:19 ` Louis Chauvet
2025-03-25 16:23 ` jim.cromie
2025-03-20 18:52 ` [PATCH v2 30/59] dyndbg: drop "protection" of class'd pr_debugs from legacy queries Jim Cromie
2025-03-24 15:20 ` Louis Chauvet
2025-03-25 18:29 ` jim.cromie
2025-03-25 23:05 ` jim.cromie
2025-03-25 20:02 ` jim.cromie
2025-03-20 18:52 ` [PATCH v2 31/59] docs/dyndbg: explain new delimiters: comma, percent Jim Cromie
2025-03-24 15:22 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 32/59] docs/dyndbg: explain flags parse 1st Jim Cromie
2025-03-24 15:23 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 33/59] docs/dyndbg: add classmap info to howto (TBD) Jim Cromie
2025-03-24 15:23 ` Louis Chauvet
2025-03-25 18:42 ` jim.cromie
2025-03-20 18:52 ` [PATCH v2 34/59] checkpatch: dont warn about unused macro arg on empty body Jim Cromie
2025-03-21 3:14 ` Joe Perches
2025-03-24 15:23 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 35/59] drm: use correct ccflags-y spelling Jim Cromie
2025-03-20 18:52 ` [PATCH v2 36/59] drm-dyndbg: adapt drm core to use dyndbg classmaps-v2 Jim Cromie
2025-03-24 15:23 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 37/59] drm-dyndbg: adapt DRM to invoke DYNAMIC_DEBUG_CLASSMAP_PARAM Jim Cromie
2025-03-24 15:23 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 38/59] drm-print: fix config-dependent unused variable Jim Cromie
2025-03-24 15:23 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 39/59] drm-dyndbg: DRM_CLASSMAP_USE in amdgpu driver Jim Cromie
2025-03-24 15:24 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 40/59] drm-dyndbg: DRM_CLASSMAP_USE in i915 driver Jim Cromie
2025-03-24 15:24 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 41/59] drm-dyndbg: DRM_CLASSMAP_USE in drm_crtc_helper Jim Cromie
2025-03-24 15:23 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 42/59] drm-dyndbg: DRM_CLASSMAP_USE in drm_dp_helper Jim Cromie
2025-03-24 15:24 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 43/59] drm-dyndbg: DRM_CLASSMAP_USE in nouveau Jim Cromie
2025-03-20 18:52 ` [PATCH v2 44/59] drm-dyndbg: add DRM_CLASSMAP_USE to Xe driver Jim Cromie
2025-03-24 15:24 ` Louis Chauvet
2025-03-25 18:56 ` jim.cromie
2025-03-20 18:52 ` [PATCH v2 45/59] drm-dyndbg: add DRM_CLASSMAP_USE to virtio_gpu Jim Cromie
2025-03-20 18:52 ` [PATCH v2 46/59] drm-dyndbg: add DRM_CLASSMAP_USE to simpledrm Jim Cromie
2025-03-20 18:52 ` [PATCH v2 47/59] drm-dyndbg: add DRM_CLASSMAP_USE to bochs Jim Cromie
2025-03-24 15:03 ` Louis Chauvet
2025-03-25 19:34 ` jim.cromie
2025-03-20 18:52 ` [PATCH v2 48/59] drm-dyndbg: add DRM_CLASSMAP_USE to etnaviv Jim Cromie
2025-03-20 18:52 ` [PATCH v2 49/59] drm-dyndbg: add DRM_CLASSMAP_USE to gma500 driver Jim Cromie
2025-03-20 18:52 ` [PATCH v2 50/59] drm-dyndbg: add DRM_CLASSMAP_USE to radeon Jim Cromie
2025-03-20 18:52 ` [PATCH v2 51/59] drm-dyndbg: add DRM_CLASSMAP_USE to vmwgfx driver Jim Cromie
2025-03-20 18:52 ` [PATCH v2 52/59] drm-dyndbg: add DRM_CLASSMAP_USE to vkms driver Jim Cromie
2025-03-24 15:00 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 53/59] drm-dyndbg: add DRM_CLASSMAP_USE to udl driver Jim Cromie
2025-03-24 15:00 ` Louis Chauvet
2025-03-20 18:52 ` [PATCH v2 54/59] drm-dyndbg: add DRM_CLASSMAP_USE to mgag200 driver Jim Cromie
2025-03-20 18:52 ` [PATCH v2 55/59] drm-dyndbg: add DRM_CLASSMAP_USE to the gud driver Jim Cromie
2025-03-20 18:52 ` [PATCH v2 56/59] drm-dyndbg: add DRM_CLASSMAP_USE to the qxl driver Jim Cromie
2025-03-20 18:52 ` [PATCH v2 57/59] drm-dyndbg: add DRM_CLASSMAP_USE to the drm_gem_shmem_helper driver Jim Cromie
2025-03-20 18:52 ` [PATCH v2 58/59] drm: restore CONFIG_DRM_USE_DYNAMIC_DEBUG un-BROKEN Jim Cromie
2025-03-20 18:52 ` [PATCH v2 59/59] drm: RFC - make drm_dyndbg_user.o for drm-*_helpers, drivers Jim Cromie
2025-03-24 15:00 ` Louis Chauvet
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=20250320185238.447458-19-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-trybot@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-gvt-dev@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
--cc=jbaron@akamai.com \
--cc=linux-kernel@vger.kernel.org \
--cc=louis.chauvet@bootlin.com \
--cc=tvrtko.ursulin@linux.intel.com \
--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;
as well as URLs for NNTP newsgroup(s).