From: Louis Chauvet <louis.chauvet@bootlin.com>
To: Jim Cromie <jim.cromie@gmail.com>,
linux-kernel@vger.kernel.org, jbaron@akamai.com,
gregkh@linuxfoundation.org, ukaszb@chromium.org
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gvt-dev@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, daniel.vetter@ffwll.ch,
tvrtko.ursulin@linux.intel.com, jani.nikula@intel.com,
ville.syrjala@linux.intel.com, seanpaul@chromium.org,
robdclark@gmail.com, groeck@google.com, yanivt@google.com,
bleung@google.com, quic_saipraka@quicinc.com, will@kernel.org,
catalin.marinas@arm.com, quic_psodagud@quicinc.com,
maz@kernel.org, arnd@arndb.de,
linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org, mingo@redhat.com
Subject: Re: [PATCH v4 17/58] selftests-dyndbg: add a dynamic_debug run_tests target
Date: Fri, 5 Sep 2025 23:17:52 +0200 [thread overview]
Message-ID: <688fa38c-a86b-4de7-ba0f-becd098b8bdc@bootlin.com> (raw)
In-Reply-To: <20250803035816.603405-18-jim.cromie@gmail.com>
Le 03/08/2025 à 05:57, Jim Cromie a écrit :
> 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
>
> NOTES
>
> - 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 counts 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.
>
> 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>
> ---
> -r3 turn off green at end
> drop config dep on TEST_DYNAMIC_DEBUG,
> since basic-test uses builtin params
> ---
> MAINTAINERS | 1 +
> tools/testing/selftests/Makefile | 1 +
> .../testing/selftests/dynamic_debug/Makefile | 9 +
> tools/testing/selftests/dynamic_debug/config | 7 +
> .../dynamic_debug/dyndbg_selftest.sh | 257 ++++++++++++++++++
> 5 files changed, 275 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 c0b444e5fd5ad..4259d63c431a3 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -8455,6 +8455,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 339b31e6a6b59..e13b55510e31d 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 0000000000000..6d06fa7f10405
> --- /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 0000000000000..0f906ff539081
> --- /dev/null
> +++ b/tools/testing/selftests/dynamic_debug/config
> @@ -0,0 +1,7 @@
> +
> +# basic tests ref the builtin params module
> +CONFIG_DYNAMIC_DEBUG=m
> +
> +# more testing is possible with these
> +# 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 0000000000000..465fad3f392cc
> --- /dev/null
> +++ b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh
> @@ -0,0 +1,257 @@
> +#!/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
Nitpick for the sh file: is it normal to have inconsistent indenting ?(4
space, tabs, 8 spaces)
> +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
> +echo -en "${NC}"
--
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2025-09-05 21:18 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-03 3:57 [PATCH v4 00/58] fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y Jim Cromie
2025-08-03 3:57 ` [PATCH v4 01/58] docs/dyndbg: update examples \012 to \n Jim Cromie
2025-08-03 3:57 ` [PATCH v4 02/58] docs/dyndbg: explain flags parse 1st Jim Cromie
2025-08-03 3:57 ` [PATCH v4 03/58] test-dyndbg: fixup CLASSMAP usage error Jim Cromie
2025-08-03 3:57 ` [PATCH v4 04/58] dyndbg: reword "class unknown," to "class:_UNKNOWN_" Jim Cromie
2025-08-03 3:57 ` [PATCH v4 05/58] dyndbg: make ddebug_class_param union members same size Jim Cromie
2025-08-03 3:57 ` [PATCH v4 06/58] dyndbg: drop NUM_TYPE_ARRAY Jim Cromie
2025-08-03 3:57 ` [PATCH v4 07/58] dyndbg: tweak pr_fmt to avoid expansion conflicts Jim Cromie
2025-09-05 20:57 ` Louis Chauvet
2025-08-03 3:57 ` [PATCH v4 08/58] dyndbg: reduce verbose/debug clutter Jim Cromie
2025-08-03 3:57 ` [PATCH v4 09/58] dyndbg: refactor param_set_dyndbg_classes and below Jim Cromie
2025-08-03 3:57 ` [PATCH v4 10/58] dyndbg: tighten fn-sig of ddebug_apply_class_bitmap Jim Cromie
2025-08-03 3:57 ` [PATCH v4 11/58] dyndbg: replace classmap list with a vector Jim Cromie
2025-09-05 21:02 ` Louis Chauvet
2025-08-03 3:57 ` [PATCH v4 12/58] dyndbg: macrofy a 2-index for-loop pattern Jim Cromie
2025-08-03 3:57 ` [PATCH v4 13/58] dyndbg,module: make proper substructs in _ddebug_info Jim Cromie
2025-09-05 21:04 ` Louis Chauvet
2025-08-03 3:57 ` [PATCH v4 14/58] dyndbg: hoist classmap-filter-by-modname up to ddebug_add_module Jim Cromie
2025-09-05 21:15 ` Louis Chauvet
2025-08-03 3:57 ` [PATCH v4 15/58] dyndbg: ddebug_table.mod_name down to _ddebug_info Jim Cromie
2025-08-03 3:57 ` [PATCH v4 16/58] dyndbg-API: remove DD_CLASS_TYPE_(DISJOINT|LEVEL)_NAMES and code Jim Cromie
2025-09-05 21:16 ` Louis Chauvet
2025-08-03 3:57 ` [PATCH v4 17/58] selftests-dyndbg: add a dynamic_debug run_tests target Jim Cromie
2025-09-05 21:17 ` Louis Chauvet [this message]
2025-08-03 3:57 ` [PATCH v4 18/58] dyndbg: change __dynamic_func_call_cls* macros into expressions Jim Cromie
2025-09-05 21:18 ` Louis Chauvet
2025-08-03 3:57 ` [PATCH v4 19/58] dyndbg-API: replace DECLARE_DYNDBG_CLASSMAP Jim Cromie
2025-08-03 3:57 ` [PATCH v4 20/58] dyndbg: detect class_id reservation conflicts Jim Cromie
2025-08-03 3:57 ` [PATCH v4 21/58] dyndbg: check DYNAMIC_DEBUG_CLASSMAP_DEFINE args at compile-time Jim Cromie
2025-08-03 3:57 ` [PATCH v4 22/58] dyndbg-test: change do_prints testpoint to accept a loopct Jim Cromie
2025-08-03 3:57 ` [PATCH v4 23/58] dyndbg-API: promote DYNAMIC_DEBUG_CLASSMAP_PARAM to API Jim Cromie
2025-08-03 3:57 ` [PATCH v4 24/58] dyndbg: treat comma as a token separator Jim Cromie
2025-08-03 3:57 ` [PATCH v4 25/58] dyndbg: split multi-query strings with % Jim Cromie
2025-08-03 3:57 ` [PATCH v4 26/58] selftests-dyndbg: add test_mod_submod Jim Cromie
2025-08-03 3:57 ` [PATCH v4 27/58] dyndbg: drop "protection" of class'd pr_debugs from legacy queries Jim Cromie
2025-08-03 3:57 ` [PATCH v4 28/58] dyndbg: restore classmap protection when theres a controlling_param Jim Cromie
2025-08-03 3:57 ` [PATCH v4 29/58] docs/dyndbg: add classmap info to howto Jim Cromie
2025-09-08 14:38 ` Louis Chauvet
2025-08-03 3:57 ` [PATCH v4 30/58] dyndbg: reserve flag-bit _DPRINTK_FLAGS_PREFIX_CACHED Jim Cromie
2025-08-03 3:57 ` [PATCH v4 31/58] dyndbg: add _DPRINTK_FLAGS_INCL_LOOKUP for +mfsl flags Jim Cromie
2025-08-03 3:57 ` [PATCH v4 32/58] dyndbg: refactor *dynamic_emit_prefix to split lookups Jim Cromie
2025-08-03 3:57 ` [PATCH v4 33/58] drm: use correct ccflags-y spelling Jim Cromie
2025-08-03 3:57 ` [PATCH v4 34/58] drm-dyndbg: adapt drm core to use dyndbg classmaps-v2 Jim Cromie
2025-08-03 3:57 ` [PATCH v4 35/58] drm-dyndbg: adapt DRM to invoke DYNAMIC_DEBUG_CLASSMAP_PARAM Jim Cromie
2025-08-03 3:57 ` [PATCH v4 36/58] drm-print: fix config-dependent unused variable Jim Cromie
2025-08-03 3:57 ` [PATCH v4 37/58] drm-dyndbg: DRM_CLASSMAP_USE in amdgpu driver Jim Cromie
2025-08-03 3:57 ` [PATCH v4 38/58] drm-dyndbg: DRM_CLASSMAP_USE in i915 driver Jim Cromie
2025-08-03 3:57 ` [PATCH v4 39/58] drm-dyndbg: DRM_CLASSMAP_USE in drm_crtc_helper Jim Cromie
2025-08-03 3:57 ` [PATCH v4 40/58] drm-dyndbg: DRM_CLASSMAP_USE in drm_dp_helper Jim Cromie
2025-08-03 3:57 ` [PATCH v4 41/58] drm-dyndbg: DRM_CLASSMAP_USE in nouveau Jim Cromie
2025-08-03 3:58 ` [PATCH v4 42/58] drm-dyndbg: add DRM_CLASSMAP_USE to Xe driver Jim Cromie
2025-08-03 3:58 ` [PATCH v4 43/58] drm-dyndbg: add DRM_CLASSMAP_USE to virtio_gpu Jim Cromie
2025-08-03 3:58 ` [PATCH v4 44/58] drm-dyndbg: add DRM_CLASSMAP_USE to simpledrm Jim Cromie
2025-08-03 3:58 ` [PATCH v4 45/58] drm-dyndbg: add DRM_CLASSMAP_USE to bochs Jim Cromie
2025-08-03 3:58 ` [PATCH v4 46/58] drm-dyndbg: add DRM_CLASSMAP_USE to etnaviv Jim Cromie
2025-08-03 3:58 ` [PATCH v4 47/58] drm-dyndbg: add DRM_CLASSMAP_USE to gma500 driver Jim Cromie
2025-08-03 3:58 ` [PATCH v4 48/58] drm-dyndbg: add DRM_CLASSMAP_USE to radeon Jim Cromie
2025-08-03 3:58 ` [PATCH v4 49/58] drm-dyndbg: add DRM_CLASSMAP_USE to vmwgfx driver Jim Cromie
2025-08-03 3:58 ` [PATCH v4 50/58] drm-dyndbg: add DRM_CLASSMAP_USE to vkms driver Jim Cromie
2025-08-03 3:58 ` [PATCH v4 51/58] drm-dyndbg: add DRM_CLASSMAP_USE to udl driver Jim Cromie
2025-08-03 3:58 ` [PATCH v4 52/58] drm-dyndbg: add DRM_CLASSMAP_USE to mgag200 driver Jim Cromie
2025-08-03 3:58 ` [PATCH v4 53/58] drm-dyndbg: add DRM_CLASSMAP_USE to the gud driver Jim Cromie
2025-08-03 3:58 ` [PATCH v4 54/58] drm-dyndbg: add DRM_CLASSMAP_USE to the qxl driver Jim Cromie
2025-08-03 3:58 ` [PATCH v4 55/58] drm-dyndbg: add DRM_CLASSMAP_USE to the drm_gem_shmem_helper driver Jim Cromie
2025-08-03 3:58 ` [PATCH v4 56/58] drm: restore CONFIG_DRM_USE_DYNAMIC_DEBUG un-BROKEN Jim Cromie
2025-08-03 3:58 ` [PATCH v4 57/58] amdxdna: add -DDYNAMIC_DEBUG_MODULE to cflags - RFC Jim Cromie
2025-08-03 3:58 ` [PATCH v4 58/58] accel: add -DDYNAMIC_DEBUG_MODULE to subdir-cflags " Jim Cromie
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=688fa38c-a86b-4de7-ba0f-becd098b8bdc@bootlin.com \
--to=louis.chauvet@bootlin.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=arnd@arndb.de \
--cc=bleung@google.com \
--cc=catalin.marinas@arm.com \
--cc=daniel.vetter@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=gregkh@linuxfoundation.org \
--cc=groeck@google.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-gvt-dev@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
--cc=jbaron@akamai.com \
--cc=jim.cromie@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=mingo@redhat.com \
--cc=quic_psodagud@quicinc.com \
--cc=quic_saipraka@quicinc.com \
--cc=robdclark@gmail.com \
--cc=seanpaul@chromium.org \
--cc=tvrtko.ursulin@linux.intel.com \
--cc=ukaszb@chromium.org \
--cc=ville.syrjala@linux.intel.com \
--cc=will@kernel.org \
--cc=yanivt@google.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
all inboxes | Powered by JetHome®