From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CE38BECD6FC for ; Thu, 12 Feb 2026 00:14:57 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 93ADF10E68C; Thu, 12 Feb 2026 00:14:55 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ORh1XST5"; dkim-atps=neutral Received: from mail-oi1-f177.google.com (mail-oi1-f177.google.com [209.85.167.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id CBE9E10E68C for ; Thu, 12 Feb 2026 00:14:43 +0000 (UTC) Received: by mail-oi1-f177.google.com with SMTP id 5614622812f47-45f015a3259so2189561b6e.2 for ; Wed, 11 Feb 2026 16:14:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770855283; x=1771460083; darn=lists.freedesktop.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5mggqILKP/ZBzLTQrLce/usdVEaj2csd9E9qyVPp98Q=; b=ORh1XST5Im3bUlO6cGfmjPG65i4YheYvYgmNFHyXNRofLl5jxPt4wSWexzdNlvDp6x YH2Q6gFJeBnvoQZx+TSFJg+IAEDZJX6yagJ/uAC5tTGExciB8CUf2QsX49P8towGIq90 bqQqYOA51xAN4SBwJpeYYgy5xgo4AN8uWnOfxBx6wiTlmMHADj350U8492eruQ3KwpU1 2+pasFrE24waOJS8n6mneB0L6ZAEY6/9epfn1pXW4St8MniJWBPZNChrRxeBJXK+F8Ts XRkMFJ2vpIrn8OLEkvEB34OR/kn5Uzo+qivQNcnUrRLtFA1Z4tSOXw97Bj+xuYM7GGRU iBEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770855283; x=1771460083; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5mggqILKP/ZBzLTQrLce/usdVEaj2csd9E9qyVPp98Q=; b=LQv1fCOS2J5yWH7yCQSPiSogNZH+HuzsrpkBtm10+tYphE2TzjSrw/tRpY+fBcSw8Q kLZNFe3HymE4IoGini0DtdUnyxgzn2wGGl/T8OvQWk5bNFHj7JRv0NQmQzXvWNZ6YNxD VAiZCA6q0QHP8luQtYmCeV2CVr/vFf126cBPVGViJfoCxnn8LVx+xRWTEoAfL5/u/SIH 7Lg0/cTqmeknZy6KR/DQ0qyO3/wfUWFFgu2ip0+mxrpgiIc7wgXSSDpiy0uQpVr8yYvd SAWToUIoJ2CanZo6FM7ZTqtwnBG6ZiED3c3a8CZ1+QA4HAFB5ZtzGxanUYixbMZoOWZw bCBg== X-Gm-Message-State: AOJu0YwomLPAGM6cTsrXXSN38cVz5Ggc7+zUMVxHWa9qH2LzegIoQEsh YWphSwKFpXkeTzfstH60RIB8TtG0SSFGNyn6awDqpG3urwRnXuEnkzZvt4SeIA== X-Gm-Gg: AZuq6aIHbbEHz5OPm9yNguduFiNMx/uUI0i+wsQNk99jpZbLWA7IxX12x8ETBo7jG2Q gOWY1WQZLcjNr6+nLPDonbzRhAz/1rowmchz30XkzDDcSN8vw5jWZg+39Ps11u+vkcIYJ7wo0Nq V67gl7ofNTN3AgnX1HxvoI2DaHBUwg4Y9/Q9glEM764H1xwWYtEAhI9wgJOGQeoJrOztDVaKk6g EAbkf35MstfN1uxI9+H8YWE6ty0VraunEyMdZuH2v8bXKChiOoteDmJ7dJMaYjSmLQV0kbz07bV 1fCbFrmr35nFPsQZoXD5irPq66FHYcFE9vC9xHvPfNhb6Tp7KZVpgNdC8Bm61ES+Ee9Cf97uQda 0X1XTy0af1jjD27zosQnTjJN8sNPWipVGc+wv/aS9VZzgjt5U3kQoOG4iHfbJT5IwNHmYaVLX2r XGSSRppzoWpknyuuNxnsSLLVu0CzTrJOOcpTrcWKdKXU5iZo3ShnyV X-Received: by 2002:a05:6808:514b:b0:45e:e1e7:6271 with SMTP id 5614622812f47-4637b64b53cmr640376b6e.7.1770855282846; Wed, 11 Feb 2026 16:14:42 -0800 (PST) Received: from godzilla (c-98-38-17-99.hsd1.co.comcast.net. [98.38.17.99]) by smtp.googlemail.com with ESMTPSA id 586e51a60fabf-40eaf1062ffsm2331939fac.13.2026.02.11.16.14.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 16:14:42 -0800 (PST) From: Jim Cromie To: dri-devel@lists.freedesktop.org, intel-gfx-trybot@lists.freedesktop.org Cc: Jim Cromie , Louis Chauvet Subject: [PATCH 28/61] dyndbg: split multi-query strings with % Date: Wed, 11 Feb 2026 17:13:23 -0700 Message-ID: <20260212001359.97296-29-jim.cromie@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260212001359.97296-28-jim.cromie@gmail.com> References: <20260212001359.97296-1-jim.cromie@gmail.com> <20260212001359.97296-2-jim.cromie@gmail.com> <20260212001359.97296-3-jim.cromie@gmail.com> <20260212001359.97296-4-jim.cromie@gmail.com> <20260212001359.97296-5-jim.cromie@gmail.com> <20260212001359.97296-6-jim.cromie@gmail.com> <20260212001359.97296-7-jim.cromie@gmail.com> <20260212001359.97296-8-jim.cromie@gmail.com> <20260212001359.97296-9-jim.cromie@gmail.com> <20260212001359.97296-10-jim.cromie@gmail.com> <20260212001359.97296-11-jim.cromie@gmail.com> <20260212001359.97296-12-jim.cromie@gmail.com> <20260212001359.97296-13-jim.cromie@gmail.com> <20260212001359.97296-14-jim.cromie@gmail.com> <20260212001359.97296-15-jim.cromie@gmail.com> <20260212001359.97296-16-jim.cromie@gmail.com> <20260212001359.97296-17-jim.cromie@gmail.com> <20260212001359.97296-18-jim.cromie@gmail.com> <20260212001359.97296-19-jim.cromie@gmail.com> <20260212001359.97296-20-jim.cromie@gmail.com> <20260212001359.97296-21-jim.cromie@gmail.com> <20260212001359.97296-22-jim.cromie@gmail.com> <20260212001359.97296-23-jim.cromie@gmail.com> <20260212001359.97296-24-jim.cromie@gmail.com> <20260212001359.97296-25-jim.cromie@gmail.com> <20260212001359.97296-26-jim.cromie@gmail.com> <20260212001359.97296-27-jim.cromie@gmail.com> <20260212001359.97296-28-jim.cromie@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Since commit 85f7f6c0edb8 ("dynamic_debug: process multiple debug-queries on a line") Multi-query commands have been allowed: modprobe drm dyndbg="class DRM_UT_CORE +p; class DRM_UT_KMS +p" modprobe drm dyndbg=< [ 203.902703] dyndbg: query parse failed [ 203.902871] dyndbg: processed 2 queries, with 0 matches, 2 errs bash: echo: write error: Invalid argument The '%' splits the input into 2 queries, and both fail. Given the limited utility of matching against the working parts of a format string "foo: %d bar %s", nothing is actually lost here. selftests-dyndbg: test_percent_splitting This does basic testing of classmaps using '%' separated multi-queries. It modprobes test_dynamic_debug with several classes enabled, and counts to verify that the expected sites show the enablement in the control file. Reviewed-by: Louis Chauvet Signed-off-by: Jim Cromie --- .../admin-guide/dynamic-debug-howto.rst | 8 ++++--- lib/dynamic_debug.c | 2 +- .../dynamic_debug/dyndbg_selftest.sh | 24 +++++++++++++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Documentation/admin-guide/dynamic-debug-howto.rst b/Documentation/admin-guide/dynamic-debug-howto.rst index dbf901150587..0a42b9de55ac 100644 --- a/Documentation/admin-guide/dynamic-debug-howto.rst +++ b/Documentation/admin-guide/dynamic-debug-howto.rst @@ -85,10 +85,12 @@ by spaces, tabs, or commas. So these are all equivalent:: :#> ddcmd ' file svcsock.c line 1603 +p ' :#> ddcmd file,svcsock.c,line,1603,+p -Command submissions are bounded by a write() system call. -Multiple commands can be written together, separated by ``;`` or ``\n``:: +Command submissions are bounded by a write() system call. Multiple +commands can be written together, separated by ``%``, ``;`` or ``\n``:: - :#> ddcmd "func pnpacpi_get_resources +p; func pnp_assign_mem +p" + :#> ddcmd func foo +p % func bar +p + :#> ddcmd func foo +p \; func bar +p + :#> ddcmd "func foo +p ; func bar +p" :#> ddcmd <<"EOC" func pnpacpi_get_resources +p func pnp_assign_mem +p diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index cec054ef7d64..08ad3f8a2172 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -627,7 +627,7 @@ static int ddebug_exec_queries(char *query, const char *modname) int i, errs = 0, exitcode = 0, rc, nfound = 0; for (i = 0; query; query = split) { - split = strpbrk(query, ";\n"); + split = strpbrk(query, "%;\n"); if (split) *split++ = '\0'; diff --git a/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh index c7bf521f36ee..513f6cb1db1d 100755 --- a/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh +++ b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh @@ -256,9 +256,33 @@ function comma_terminator_tests { ddcmd =_ } +function test_percent_splitting { + echo -e "${GREEN}# TEST_PERCENT_SPLITTING - multi-command splitting on % ${NC}" + if [ $LACK_TMOD -eq 1 ]; then + echo "SKIP - test requires test-dynamic-debug.ko" + return + fi + ifrmmod test_dynamic_debug_submod + ifrmmod test_dynamic_debug + ddcmd =_ + modprobe test_dynamic_debug dyndbg=class,D2_CORE,+pf%class,D2_KMS,+pt%class,D2_ATOMIC,+pm + check_match_ct =pf 1 + check_match_ct =pt 1 + check_match_ct =pm 1 + check_match_ct test_dynamic_debug 23 -r + # add flags to those callsites + ddcmd class,D2_CORE,+mf%class,D2_KMS,+lt%class,D2_ATOMIC,+ml + check_match_ct =pmf 1 + check_match_ct =plt 1 + check_match_ct =pml 1 + check_match_ct test_dynamic_debug 23 -r + ifrmmod test_dynamic_debug +} + tests_list=( basic_tests comma_terminator_tests + test_percent_splitting ) # Run tests -- 2.53.0