From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f66.google.com (mail-lf1-f66.google.com [209.85.167.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF2055F84C for ; Sat, 10 Feb 2024 23:50:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609034; cv=none; b=adjrgO9eBTGrcC7rYTR1llpH7S52EVhBwZqvwAxQ0JDbEAqefpsRez2CW67HC9M4CxNTMiHoZtseGj46ov4IoyvfH6ydYu6/YrQq+Arh4mfiH/gJL98UWAQQ6CgEVShpaYp5oUvYE8PBFYS5wtNS1zxkBofIT8cn7hyIvIQ/foU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609034; c=relaxed/simple; bh=6bHuuhuQD8TDY9jao7qw7tzXO/CI+YZs/Ximv6+tRdw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dUmCo6B0CZdD8kWjQxqSIqSenVKfgmybi+r7qgb6HIXZZJ6EmlGtok6a7cCnGbMnUzkqksiz+P6boiUIdKWnZXajxbrUcpKbsjJnQOcUibsb+79z+S4tBCg4h28xNObRb8i+82HIgEMLU6ZegMJknrEx10Ij1PpQNKjbRI9imwk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=ef7c526k; arc=none smtp.client-ip=209.85.167.66 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="ef7c526k" Received: by mail-lf1-f66.google.com with SMTP id 2adb3069b0e04-5112bd13a4fso3358750e87.0 for ; Sat, 10 Feb 2024 15:50:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609031; x=1708213831; darn=vger.kernel.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=QOoJLafFWulnfY+ABLHJKXgTr+y2AravVLoCN2Eukac=; b=ef7c526kiZoUj+TKVbq0nWQE+UX2arGsQweYBLfZrOXdCITuSh1WmjVzg87g0nBAE1 ptK05nt0PCcsbiGSRnhEv3OrU45s2gLZb3OO0USzbLdzAwusBqpNhzQFsFAAkM25T6Dj B7f6/mSP1s9nOrXwFOIVoBczPEUh9xwlJO/e8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609031; x=1708213831; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QOoJLafFWulnfY+ABLHJKXgTr+y2AravVLoCN2Eukac=; b=cLlJDqPTJtFh3FiafmVQxIb0q74GSvtfq/p6Zqcg2K4l+DBdb0cxUsL1pMcgOKwljO qijxd0dmbr5sOKld3cgRwd+1Y94YUsDyd1Ul7GpkrRbgPgrG8Vqd1hmntFXURQzr0KWv gfYHaDdSRLQ3BjBnCuAeQX5KV39Sxlm/WmTQND9z9TEXwhMyMYBj1GvU0wu5eRnloIh7 JhWaF2JdQGKwHirwgKg7ppNShs58wLbikGlDs4RRrqj01bWC83MtYWQoF4VO6CxRlvSv +e3R8IZCHY1M/QTHPfzJt/UahFeoscmPP50MLZDvMqvZ3ke/MPdU3C/q+KX7bhucJEIC xC+A== X-Gm-Message-State: AOJu0Yxbb4Pot16wp67aC8BG6y6WGUKHWHjbZIZSP+cC6NND5fv2IXqa FiMCkg+cpGpOQtjTN6bSeIC5QTmlJchjz+MzcLgwQP7dl5z66p4yEwxU/YUL X-Google-Smtp-Source: AGHT+IH56fKoupzdFYKX5nvP1SrMBeSC5O3RzuCKGxfNyi5V3RrWouJbr/DyVtG6sHRQbHwJO97ulQ== X-Received: by 2002:a19:7509:0:b0:50e:9354:67d0 with SMTP id y9-20020a197509000000b0050e935467d0mr931410lfe.14.1707609030596; Sat, 10 Feb 2024 15:50:30 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWR1qliCHrb/rw1JVufMqRw0VLKJMt3eslGm0V9/888+GwXZ5PctKlXXItIoQB5G1V3UFozdKQffcB1NyquT7C6LWZ9iaCE1QLGGNLYueU8jnUpO/uImR+shjBignDqqIIDtTjIdBuLl4MWW6dvY3YAoH/lb6XFkGKk66aSEJwhUK8WujMSNZVSPl8VahxrrXiH4IUHrJ2LjVa+mcsd+eAlGCeML64ZkiOi4BxMxrT7Bd0dijoDWqsqvNtH22eMax4Rq32fRjbNEm0ReZc9JrjJuOmanDaER0rFH9NLXNLO42p5qOTLTx4bYw5ZmlcqspB8pYaqg6T3XH6e9jM7ZgbAZtfbm6a2yIWcjHCO/a58BMkgXkrnabwbAErSInZBRqbbUQk4RSUQTx6oRF/vvj0uvAfGd3YeZE6rwd3NUg4mq6FnncFEpeVJAm3yS5TKT84tbhduNo84syjqyMnPeRYcfe5y6OicMhBywYzbyTzYrC56UDMaugehQBguTnz2DtN8ORFUlC/f9zkXCLh7ojF59y227OnFdtblqR5oLaxv4fhX+Ml2r3+wPV+3cuFg3/fZA0nV2l92gV8X+IIfgrocINe1qQfJoVNhd0xqfLPcVrDnig== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:30 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 01/39] dyndbg: add _DPRINTK_FLAGS_ENABLED Date: Sun, 11 Feb 2024 00:49:31 +0100 Message-ID: <20240210235009.2405808-2-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie Distinguish the condition: _DPRINTK_FLAGS_ENABLED from the bit: _DPRINTK_FLAGS_PRINT, and re-define former in terms of latter, in preparation to add a 2nd bit: _DPRINTK_FLAGS_TRACE Update JUMP_LABEL code block to check _DPRINTK_FLAGS_ENABLED symbol. Also add a 'K' to get new symbol _DPRINTK_FLAGS_PRINTK, in order to break any stale uses. CC: vincent.whitchurch@axis.com Signed-off-by: Jim Cromie --- include/linux/dynamic_debug.h | 10 ++++++---- lib/dynamic_debug.c | 8 ++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index 4fcbf4d4fd0a..7be791af7cf1 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -32,7 +32,7 @@ struct _ddebug { * writes commands to /dynamic_debug/control */ #define _DPRINTK_FLAGS_NONE 0 -#define _DPRINTK_FLAGS_PRINT (1<<0) /* printk() a message using the format= */ +#define _DPRINTK_FLAGS_PRINTK (1 << 0) /* printk() a message using the for= mat */ #define _DPRINTK_FLAGS_INCL_MODNAME (1<<1) #define _DPRINTK_FLAGS_INCL_FUNCNAME (1<<2) #define _DPRINTK_FLAGS_INCL_LINENO (1<<3) @@ -44,8 +44,10 @@ struct _ddebug { _DPRINTK_FLAGS_INCL_LINENO | _DPRINTK_FLAGS_INCL_TID |\ _DPRINTK_FLAGS_INCL_SOURCENAME) =20 +#define _DPRINTK_FLAGS_ENABLED _DPRINTK_FLAGS_PRINTK + #if defined DEBUG -#define _DPRINTK_FLAGS_DEFAULT _DPRINTK_FLAGS_PRINT +#define _DPRINTK_FLAGS_DEFAULT _DPRINTK_FLAGS_PRINTK #else #define _DPRINTK_FLAGS_DEFAULT 0 #endif @@ -199,10 +201,10 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, =20 #ifdef DEBUG #define DYNAMIC_DEBUG_BRANCH(descriptor) \ - likely(descriptor.flags & _DPRINTK_FLAGS_PRINT) + likely(descriptor.flags & _DPRINTK_FLAGS_ENABLED) #else #define DYNAMIC_DEBUG_BRANCH(descriptor) \ - unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT) + unlikely(descriptor.flags & _DPRINTK_FLAGS_ENABLED) #endif =20 #endif /* CONFIG_JUMP_LABEL */ diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 6fba6423cc10..ee0cb37153ef 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -89,7 +89,7 @@ static inline const char *trim_prefix(const char *path) } =20 static const struct { unsigned flag:8; char opt_char; } opt_array[] =3D { - { _DPRINTK_FLAGS_PRINT, 'p' }, + { _DPRINTK_FLAGS_PRINTK, 'p' }, { _DPRINTK_FLAGS_INCL_MODNAME, 'm' }, { _DPRINTK_FLAGS_INCL_FUNCNAME, 'f' }, { _DPRINTK_FLAGS_INCL_SOURCENAME, 's' }, @@ -247,10 +247,10 @@ static int ddebug_change(const struct ddebug_query *q= uery, if (newflags =3D=3D dp->flags) continue; #ifdef CONFIG_JUMP_LABEL - if (dp->flags & _DPRINTK_FLAGS_PRINT) { - if (!(newflags & _DPRINTK_FLAGS_PRINT)) + if (dp->flags & _DPRINTK_FLAGS_ENABLED) { + if (!(newflags & _DPRINTK_FLAGS_ENABLED)) static_branch_disable(&dp->key.dd_key_true); - } else if (newflags & _DPRINTK_FLAGS_PRINT) { + } else if (newflags & _DPRINTK_FLAGS_ENABLED) { static_branch_enable(&dp->key.dd_key_true); } #endif --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C3CCA5FF0C for ; Sat, 10 Feb 2024 23:50:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609036; cv=none; b=R11n0k3igrET7zGAhNBmezplVTFF1HuZB/dGAHZgpxfF2FLHEk36Cqzy4tL5SSpOlQux6y2zYdfDxOhRkg4tV8K51IWm/z9jVXOfoNE4rWPXYYFzZS71lyzndh19Kzi5ptn1eNecUIXFkvMFGYDis5LBVdyxbDInblvXb4q9e/E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609036; c=relaxed/simple; bh=cQmyob+SZ2xtIRHDID5i37Q2ZrwCWWtVkuImLDQlG8I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dUvXHbzxsZNzhFxzlGUg0ShckNPjUf6c9MF9fkgKtLLYoxyaojQeJGpOrmL/kRm5Xd7lb8wQND6Uaugr4Xj5TH3X3idsScpNEMMglkIHSpkzS9hLdzYeQPWy4K3olETZ28JQBfiZZSBgVXppu7BOZvXBzZhElVKAVX+duq68g4k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=N+15cEnr; arc=none smtp.client-ip=209.85.167.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="N+15cEnr" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-5116b540163so3090535e87.1 for ; Sat, 10 Feb 2024 15:50:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609033; x=1708213833; darn=vger.kernel.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=hiwuT5//sOCIH4TJbmBqDDmgy+L0dj/76G1O/T9yDvA=; b=N+15cEnrjnrGkuG/+gzqPPtnfaYDFcsLqv2DRmf14bpgwzKDbU/KgWDw+JT7kJRM8w nCLqp9l8BMhJuNrPFQZ8SEnyub5I+nqliOriEANIMhv/vYftT8gry+ZI4S4n4M3CisfB wJwPgCi1y/4NomFk6YfqHPov89zstXVcC/bOg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609033; x=1708213833; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hiwuT5//sOCIH4TJbmBqDDmgy+L0dj/76G1O/T9yDvA=; b=t0cbvu6f9Th7DLYykTpZD38dFDMWJGaDKcTATwEtKZXDJMu2J+I7I4GP0MKzm/nbB8 pnCwJU+BD4GynlhrykjDKBOW+c3OPu623BSDgHgRb9qNzxVHoAEI7NKKvG95c8MT6MzY tMNNsoh+AYauPPdsD1FetmNHhWY0dwxoGsKs64HTMsmEGnIwKwhEXW+nNvne5N5QOUkz 7Q0k5YKj7PI6OU49B66ZzYM3giwXt1OOEKXEZYQ43gH9gz3MEWhHYYz98so7ufIk71ic 7OzHdBNZ3Knx3b/UqdBlvliHFFG6jo6I6piHHU59L4y/0HIK46+eAnkXskSCarhhZYQX CegQ== X-Forwarded-Encrypted: i=1; AJvYcCWYpWE/VDYDFfenvod1SKX5vc7EKDZD+DwdBkr3hlEj5+EGiiB4UNwGeKZANGvnZBzkBVT/SEy8RfPyBvOFED81bcbYkh0ylZaY6GuB X-Gm-Message-State: AOJu0Yw0V4982hqjIxgUyzE7HTbY1Dr3gJn2DFBLSGt+Sjt/p/8FrbAV O74696UDIQswrDLsb4C7l/58TPhVPwYnheyELMf8OWtVW0Kr8nnAZ2/1ZBuy X-Google-Smtp-Source: AGHT+IExR27JQfVLZEXRwgm4RohEjCzxZpl6UKJLxv7RaVu88vAqkCxD8bF9lapijM40qUXuUfN8Vw== X-Received: by 2002:a19:7412:0:b0:511:4baa:fda8 with SMTP id v18-20020a197412000000b005114baafda8mr1726910lfe.38.1707609032587; Sat, 10 Feb 2024 15:50:32 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCVutNH7wXArtZPi16MtiRS1ZNDSArgZzaxKHiPK6BMvhOO/SUfoVl9yVPeMxchKHlhQVAOPkiT6h0Xwa7V76mi+ZxC/Lf558xBN0UhCJ/1jEy7uhVNblQFYQslaNsH1LT02l4WEDjUKdSP31a+2bPAB7sGzl2FBnyaRAkGZ1Aipc6xssHYAtMCFr7VCXmXCw7ST25ukym5FoEZfuQH1+GbcKpT619MEaWUN7o0GaHHnRVSDuguc/dmRIzYyGJ0NAXhuoMWTr5iV71XdmMk3dxu0C4cXwVv9PteLj4et9ldixULw7Ow7gZPYEdpZoms/71+I+nschx45i8dvlxBbAyATdJdosk0ObRHZK24LI/LM/60fsIL1TbiQd6C1Ac2m5VxdkmXNIiMCYAG6jXeTzWrsVnFTBWNOeIUdUr5TUz+oBokl5Ql6zi3epSu77XA1IGE9gieNxcvB4lQ79PqSDFsjy17YFXk3wdA5vy9S+ZUzpNVxeXbBI6EQLX9uQaJO/nJw7LNBW/hNEio8TB/sD/zUJw5t8xy7Iv2/BCx6Mrir+qq/PrW2POJM1YGx4kGUp8JAV8wx5bRCR0us+XbUPzTg+vdTpEBgK73wY2GBvJ9SOMCh0g== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:32 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 02/39] dyndbg: add _DPRINTK_FLAGS_TRACE Date: Sun, 11 Feb 2024 00:49:32 +0100 Message-ID: <20240210235009.2405808-3-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie Add new flag, and OR it into _DPRINTK_FLAGS_ENABLED definition CC: vincent.whitchurch@axis.com Signed-off-by: Jim Cromie --- include/linux/dynamic_debug.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index 7be791af7cf1..497130816e9c 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -33,6 +33,9 @@ struct _ddebug { */ #define _DPRINTK_FLAGS_NONE 0 #define _DPRINTK_FLAGS_PRINTK (1 << 0) /* printk() a message using the for= mat */ +#define _DPRINTK_FLAGS_TRACE (1 << 6) +#define _DPRINTK_FLAGS_ENABLED (_DPRINTK_FLAGS_PRINTK | _DPRINTK_FLAGS_TRA= CE) + #define _DPRINTK_FLAGS_INCL_MODNAME (1<<1) #define _DPRINTK_FLAGS_INCL_FUNCNAME (1<<2) #define _DPRINTK_FLAGS_INCL_LINENO (1<<3) @@ -44,8 +47,6 @@ struct _ddebug { _DPRINTK_FLAGS_INCL_LINENO | _DPRINTK_FLAGS_INCL_TID |\ _DPRINTK_FLAGS_INCL_SOURCENAME) =20 -#define _DPRINTK_FLAGS_ENABLED _DPRINTK_FLAGS_PRINTK - #if defined DEBUG #define _DPRINTK_FLAGS_DEFAULT _DPRINTK_FLAGS_PRINTK #else --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 81A3160246 for ; Sat, 10 Feb 2024 23:50:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609038; cv=none; b=URedz/+kf5eHZq4k1P30WRexfSWF2LnQ9S/IcHjEG1zoNqS9Fm0nPQod3agcMi9ivigU9/TbZjoWxkvK6Z2+i81oct1EKUmjuv0+opxRQExk9J6AXctz+9v6Z0/uwBZsuhqH+lO+zfgbfbKAz7R6Nd0R3ZAKnUNO+uPd82zJG1I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609038; c=relaxed/simple; bh=242XzWlkrmIbWKryguVx0gbpFFR2SSZonxu1VaG0yK8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Mk46e8NhN56bQGWERHIYDYplJagTUUt0nTPBAJudv/uvTGVId+0Ofq7mnp+/YQuvCGZNq8zyZaOMLr3oZZqAkUpoahghI+rmHgdcVWAMEDeHYwCe+GIvcQLbJ8faUxtrwm6lUalS6zlrQGEzVgvnm1nQbbDHUSnfsaua9TyxRc4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=PB8zS2jS; arc=none smtp.client-ip=209.85.208.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="PB8zS2jS" Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-2d073b54359so29828201fa.0 for ; Sat, 10 Feb 2024 15:50:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609034; x=1708213834; darn=vger.kernel.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=ly40RGk0505qZZwJrMXVp+0btu3kjXk0eZbz7jDJEP8=; b=PB8zS2jSs1y++yx9b7ngXmi7ZiZZFcRlNrwrSkne5yYdxwmCHnaZUBsQoq1b+cVCLV RU1961sLdyLpEsTszWZpwaE719yJhYPM4W0qXR6oKBnU3pJuc5srNhA+zeujdnj9Bgc4 q1wV5HcWxowhzhJPf6o4GHkXbJVN5E0NwCbpQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609034; x=1708213834; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ly40RGk0505qZZwJrMXVp+0btu3kjXk0eZbz7jDJEP8=; b=BJUT40ax2NBIay5qRYNuIn+bQIMoYsM0ez8H2Fwzr54vJaFuApcKj/0uS4qSy9oYiF anAvaFo+nBsVGgzgVXNUQ7RZY9UfPcKEGnEcJTpnTQg5aB7g1bnISjhrMaLRVrnJ5CyT Rxsq8i5QEqkWjyIYY7R3gVBudmHvVVlm+BF1Rpn2NVIf2QP3puLBfUCn3yAlB2IowfFM gl4CcgUWfXnlS4Rf6lG0SceDDTWT6H++U5YTF1pfQ+xex3j28B8EOPoEbGnXQxVbDHt1 c40USg0QbHxkk1H2NQPCw2228rtv1CurhXUspFJK46feaGAVvlQeSdlMWOJF2BK/18hH /GTQ== X-Gm-Message-State: AOJu0Yx0uNI+WiYdJSjHM3ZgKPhxXs5zfyDRRhV1c1oX4UloVAoM235G Fk6mVIUDGOk53dJcjWlIkJYQxJxVL+qqj+1Q1m7iXSnKWYjO9ty3pUG+akS0G8vwEaoxiHc/ag= = X-Google-Smtp-Source: AGHT+IHFpoOJHJANZ/f6NyYFw8Zg88vv6iXfc1FKurlNBOMfogs7jeCoCbPihfjTdxKnmClASbYV1Q== X-Received: by 2002:a05:6512:238d:b0:511:81ed:1a53 with SMTP id c13-20020a056512238d00b0051181ed1a53mr1860445lfv.42.1707609034272; Sat, 10 Feb 2024 15:50:34 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCVBg465FgvzkgKJbJecrQpVIvaSXaGMrZD1YX9kJKKqsnesrwM9NAcdeckeKPzTEJwYAY6MLfbXseetLZXpYG15LWw+X8FSTw37Vwn8NKjNCcadSBu7C8q5SfYpa0sSg1Wj686rA7yNclSsHYnFBugs1hoGIjgOPz6MD5XjBLn/w2V87A4A3ltukN09Fqae4YqqWundx/ECz8ja2yZ+fuUtKfR5ZuyD77MR7DGJaj3WuF8XGZXZ+zDot3tiZU/eQhv9ckSxFL9+gSc9Q2t8KL2yec+rMnyYZsLdjP3o4CJ7X7fYUr9t3sC5b36UtbuH4g+80ooCOwCoNTaWPPdAgEyQvlXOdOOMwU87sxu8wxk94pCCm9vmP3JTRPsGJ6t127GuqsHE/mz9xFJuZ2rmZr8kn7gg5b9HtQvQEtYImVUKcM5X+Y08CXuqxUWWkzUCH82/lUhVE1xo/+d17CtQyQS1vZZVmlkYHPrC7+ssRKI4s5VGvuIaB0fQ4QdyZGJyO6JEIJY5aKUe1f2GfU58KZm/EH1OkQSK3bRcotWpCIOi2Wq4KDHwxGjn3QdwtQl1wJkOvKu7CzbhA6SZ+UNRHq8Nr8ShKIr+uQgE8qYSWeGO3+Re7g== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:33 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 03/39] dyndbg: add write events to tracefs code Date: Sun, 11 Feb 2024 00:49:33 +0100 Message-ID: <20240210235009.2405808-4-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie adds: ddebug_trace() uses trace_console() temporarily to issue printk:console event uses internal-ish __ftrace_trace_stack code: 4-context buffer stack, barriers per Steve Rostedt call it from new funcs: ddebug_printk() - print to both syslog/tracefs ddebug_dev_printk() - dev-print to both syslog/tracefs These handle both _DPRINTK_FLAGS_PRINTK and _DPRINTK_FLAGS_TRACE cases, allowing to vsnprintf the message once and use it for both, skipping past the KERN_DEBUG character for tracing. Finally, adjust the callers: __ddebug_{pr_debug,{,net,ib}dev_dbg}, replacing printk and dev_printk with the new funcs above. The _DPRINTK_FLAGS_TRACE flag character is 'T', so the following finds all callsites enabled for tracing: grep -P =3Dp?T /proc/dynamic_debug/control This patch,~1,~2 are basically copies of [1] with a few differences: - s/dynamic_/ddebug_/ on Vincent's additions - __printf attrs on the _printk funcs - reuses trace_console() event, not adding a new "printk:dyndbg" event. next patch replaces this with 2 new events [1] https://lore.kernel.org/lkml/20200825153338.17061-1-vincent.whitchurch@= axis.com CC: vincent.whitchurch@axis.com Signed-off-by: Jim Cromie --- .../admin-guide/dynamic-debug-howto.rst | 5 +- lib/dynamic_debug.c | 156 +++++++++++++++--- 2 files changed, 133 insertions(+), 28 deletions(-) diff --git a/Documentation/admin-guide/dynamic-debug-howto.rst b/Documentat= ion/admin-guide/dynamic-debug-howto.rst index 0e9b48daf690..90449a04946e 100644 --- a/Documentation/admin-guide/dynamic-debug-howto.rst +++ b/Documentation/admin-guide/dynamic-debug-howto.rst @@ -209,8 +209,9 @@ of the characters:: =20 The flags are:: =20 - p enables the pr_debug() callsite. - _ enables no flags. + p callsite prints to syslog + T callsite issues a dyndbg:* trace-event + _ enables no flags =20 Decorator flags add to the message-prefix, in order: t Include thread ID, or diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index ee0cb37153ef..016f33c20251 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -36,6 +36,7 @@ #include #include #include +#include =20 #include =20 @@ -90,6 +91,7 @@ static inline const char *trim_prefix(const char *path) =20 static const struct { unsigned flag:8; char opt_char; } opt_array[] =3D { { _DPRINTK_FLAGS_PRINTK, 'p' }, + { _DPRINTK_FLAGS_TRACE, 'T' }, { _DPRINTK_FLAGS_INCL_MODNAME, 'm' }, { _DPRINTK_FLAGS_INCL_FUNCNAME, 'f' }, { _DPRINTK_FLAGS_INCL_SOURCENAME, 's' }, @@ -858,6 +860,98 @@ static inline char *dynamic_emit_prefix(struct _ddebug= *desc, char *buf) return buf; } =20 +/* + * This code is heavily based on __ftrace_trace_stack(). + * + * Allow 4 levels of nesting: normal, softirq, irq, NMI. + */ +#define DYNAMIC_TRACE_NESTING 4 + +struct ddebug_trace_buf { + char buf[256]; +}; + +struct ddebug_trace_bufs { + struct ddebug_trace_buf bufs[DYNAMIC_TRACE_NESTING]; +}; + +static DEFINE_PER_CPU(struct ddebug_trace_bufs, ddebug_trace_bufs); +static DEFINE_PER_CPU(int, ddebug_trace_reserve); + +static void ddebug_trace(const char *fmt, va_list args) +{ + struct ddebug_trace_buf *buf; + int bufidx; + int len; + + preempt_disable_notrace(); + + bufidx =3D __this_cpu_inc_return(ddebug_trace_reserve) - 1; + + if (WARN_ON_ONCE(bufidx > DYNAMIC_TRACE_NESTING)) + goto out; + + /* For the same reasons as in __ftrace_trace_stack(). */ + barrier(); + + buf =3D this_cpu_ptr(ddebug_trace_bufs.bufs) + bufidx; + + len =3D vscnprintf(buf->buf, sizeof(buf->buf), fmt, args); + trace_console(buf->buf, len); + +out: + /* As above. */ + barrier(); + __this_cpu_dec(ddebug_trace_reserve); + preempt_enable_notrace(); +} + +__printf(2, 3) +static void ddebug_printk(unsigned int flags, const char *fmt, ...) +{ + if (flags & _DPRINTK_FLAGS_TRACE) { + va_list args; + + va_start(args, fmt); + /* + * All callers include the KERN_DEBUG prefix to keep the + * vprintk case simple; strip it out for tracing. + */ + ddebug_trace(fmt + strlen(KERN_DEBUG), args); + va_end(args); + } + + if (flags & _DPRINTK_FLAGS_PRINTK) { + va_list args; + + va_start(args, fmt); + vprintk(fmt, args); + va_end(args); + } +} + +__printf(3, 4) +static void ddebug_dev_printk(unsigned int flags, const struct device *dev, + const char *fmt, ...) +{ + + if (flags & _DPRINTK_FLAGS_TRACE) { + va_list args; + + va_start(args, fmt); + ddebug_trace(fmt, args); + va_end(args); + } + + if (flags & _DPRINTK_FLAGS_PRINTK) { + va_list args; + + va_start(args, fmt); + dev_vprintk_emit(LOGLEVEL_DEBUG, dev, fmt, args); + va_end(args); + } +} + void __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...) { va_list args; @@ -872,16 +966,18 @@ void __dynamic_pr_debug(struct _ddebug *descriptor, c= onst char *fmt, ...) vaf.fmt =3D fmt; vaf.va =3D &args; =20 - printk(KERN_DEBUG "%s%pV", dynamic_emit_prefix(descriptor, buf), &vaf); + ddebug_printk(descriptor->flags, KERN_DEBUG "%s%pV", + dynamic_emit_prefix(descriptor, buf), &vaf); =20 va_end(args); } EXPORT_SYMBOL(__dynamic_pr_debug); =20 void __dynamic_dev_dbg(struct _ddebug *descriptor, - const struct device *dev, const char *fmt, ...) + const struct device *dev, const char *fmt, ...) { struct va_format vaf; + unsigned int flags; va_list args; =20 BUG_ON(!descriptor); @@ -891,16 +987,18 @@ void __dynamic_dev_dbg(struct _ddebug *descriptor, =20 vaf.fmt =3D fmt; vaf.va =3D &args; + flags =3D descriptor->flags; =20 if (!dev) { - printk(KERN_DEBUG "(NULL device *): %pV", &vaf); + ddebug_printk(flags, KERN_DEBUG "(NULL device *): %pV", + &vaf); } else { char buf[PREFIX_SIZE] =3D ""; =20 - dev_printk_emit(LOGLEVEL_DEBUG, dev, "%s%s %s: %pV", - dynamic_emit_prefix(descriptor, buf), - dev_driver_string(dev), dev_name(dev), - &vaf); + ddebug_dev_printk(flags, dev, "%s%s %s: %pV", + dynamic_emit_prefix(descriptor, buf), + dev_driver_string(dev), dev_name(dev), + &vaf); } =20 va_end(args); @@ -913,6 +1011,7 @@ void __dynamic_netdev_dbg(struct _ddebug *descriptor, const struct net_device *dev, const char *fmt, ...) { struct va_format vaf; + unsigned int flags; va_list args; =20 BUG_ON(!descriptor); @@ -922,22 +1021,24 @@ void __dynamic_netdev_dbg(struct _ddebug *descriptor, =20 vaf.fmt =3D fmt; vaf.va =3D &args; + flags =3D descriptor->flags; =20 if (dev && dev->dev.parent) { char buf[PREFIX_SIZE] =3D ""; =20 - dev_printk_emit(LOGLEVEL_DEBUG, dev->dev.parent, - "%s%s %s %s%s: %pV", - dynamic_emit_prefix(descriptor, buf), - dev_driver_string(dev->dev.parent), - dev_name(dev->dev.parent), - netdev_name(dev), netdev_reg_state(dev), - &vaf); + ddebug_dev_printk(flags, dev->dev.parent, + "%s%s %s %s%s: %pV", + dynamic_emit_prefix(descriptor, buf), + dev_driver_string(dev->dev.parent), + dev_name(dev->dev.parent), + netdev_name(dev), netdev_reg_state(dev), + &vaf); } else if (dev) { - printk(KERN_DEBUG "%s%s: %pV", netdev_name(dev), - netdev_reg_state(dev), &vaf); + ddebug_printk(flags, KERN_DEBUG "%s%s: %pV", + netdev_name(dev), netdev_reg_state(dev), &vaf); } else { - printk(KERN_DEBUG "(NULL net_device): %pV", &vaf); + ddebug_printk(flags, KERN_DEBUG "(NULL net_device): %pV", + &vaf); } =20 va_end(args); @@ -953,26 +1054,29 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, { struct va_format vaf; va_list args; + unsigned int flags; =20 va_start(args, fmt); =20 vaf.fmt =3D fmt; vaf.va =3D &args; + flags =3D descriptor->flags; =20 if (ibdev && ibdev->dev.parent) { char buf[PREFIX_SIZE] =3D ""; =20 - dev_printk_emit(LOGLEVEL_DEBUG, ibdev->dev.parent, - "%s%s %s %s: %pV", - dynamic_emit_prefix(descriptor, buf), - dev_driver_string(ibdev->dev.parent), - dev_name(ibdev->dev.parent), - dev_name(&ibdev->dev), - &vaf); + ddebug_dev_printk(flags, ibdev->dev.parent, + "%s%s %s %s: %pV", + dynamic_emit_prefix(descriptor, buf), + dev_driver_string(ibdev->dev.parent), + dev_name(ibdev->dev.parent), + dev_name(&ibdev->dev), + &vaf); } else if (ibdev) { - printk(KERN_DEBUG "%s: %pV", dev_name(&ibdev->dev), &vaf); + ddebug_printk(flags, KERN_DEBUG "%s: %pV", + dev_name(&ibdev->dev), &vaf); } else { - printk(KERN_DEBUG "(NULL ib_device): %pV", &vaf); + ddebug_printk(flags, KERN_DEBUG "(NULL ip_device): %pV", &vaf); } =20 va_end(args); --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EAE946026D for ; Sat, 10 Feb 2024 23:50:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609040; cv=none; b=cGrQpH+a+qfOJpHoP3pPhxVa/4c6P2i7sny8FOfSYEK3hgpLXJuevhjhlUghMYiY5B4VJPSLQ4EVuM2dPoa9At076HTOcfPCTsacreErp8VlJjqYiQCcrU+w8phivuUnmdYOT86FwEEEgMisnHAsFOY8ZEWhqcTtidEHmGfDoW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609040; c=relaxed/simple; bh=0WPu5jLceer/15RgqkDnTN8EtF6NRfk3cwJFKokZXw8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=WdYhPp2uW3fPmIcuX1UiywOyZ6TvhcpUOwyHinkMlvKhNaYzm7GLxwdpwVokpu054EegT5LWG6FlGYC3cUyNXabxPUwgucgIl7MOnAf307zOuUYVe3CyiteGn0xeWIGK1BvCnjeAvbPGgIizYXFKLy/6TUnKjCPCNqyQzXc03ik= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=TPcv2/vp; arc=none smtp.client-ip=209.85.167.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="TPcv2/vp" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-5114c05806eso3460895e87.1 for ; Sat, 10 Feb 2024 15:50:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609036; x=1708213836; darn=vger.kernel.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=YLc3gWSl0LchmKR99ALue7JLN9oC+x+LGj79tJSMKXk=; b=TPcv2/vpk1PbjwueE4X9Bh3G/6pn4azZHMUYmEvuaP0giC+E+RFZ/SN2g7LJZxisnw OTw92MSpjpiTgZF0iqOKY5N2+b9b2t1fOyK9lSh1O8pNeZHPGMm1pqv82uyIlQwXxVjg Mc3b7km+SRGFCukjGPFwI/LafJojzHSNvcJQY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609036; x=1708213836; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YLc3gWSl0LchmKR99ALue7JLN9oC+x+LGj79tJSMKXk=; b=LjpL7Ac3jOwpUFyakHgbtw5rvEz7v4zA6FO6FDE24s+uzZnhbFM5gLDyhCsrMGUrRM UP8C2d+RmVPIoifb6hGog3+CGQSBNJ+IlncWNgMsBjfFyIdYAgukp/q+FGTL/tDUXF6I nZRHrallIfKEnnM+YBO9ZPVZh3LW25bTSLIQOtepiTuV8ABymNi+5Z8oi0ErhrfYn3/f iV26gfEXmXohhk+V+PDd/Z1Xs7Dc+0Cwn7RquYqqgXYYgy22uE/qiew2twtDEyVSMTxo uAoq096aPJlzetVZgFgXEIrkRk/4s/CEMDXum2p8stokxYGWOBHIsFVAmnn/fbrflnIM DQKQ== X-Gm-Message-State: AOJu0YxaXs89vQnM5qaNL2JZwwciRDmhcfnfpiFNApkNhJfAGf+yJK/g 9saAbA7eZZdoIn8qUpXeFWnBEITDrZUXYb5KaBeZ4KaEO4WZqsdxn8G6qHaG X-Google-Smtp-Source: AGHT+IEfXDUkwHpuZymjvVIoMA+f4e01+PqsjC9Xr8hGVh0+x96mINZYFrxIU53RXdMe5y103XC7Tw== X-Received: by 2002:a05:6512:3a8b:b0:511:6e10:b80e with SMTP id q11-20020a0565123a8b00b005116e10b80emr2312748lfu.33.1707609035990; Sat, 10 Feb 2024 15:50:35 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCXaQDyedBIoalcHoj2hK83zkBhs6ItS+Rswe3MiPpk7uCpr83LdsqrqFU4cVDjrNGQit7ssv0A1f5ixj7MOEVkvhop0dgy/K0hE4FQ07Ml8TdyQ4CS2PGbJ+/72sLx/j3vTrtiSoXmfeJpjGhIwmly1aTk55s9h62u87KsfFCBoPAqeJKqy+9Jm1eRf9ufq9sXIWBDq1b4MmkOosKnXSmtoxvQhZ+Yb61fMKuv9YmkhjIr1bevnedaYW3UT9yKQIliPuOHSvgPxx2XacEDP6v/b+pEwN+xBXsjZoJ/P1mOG375ajp2/Ci7uoJFC8LgASS8ffxHoW+2wPMbemvH44WVCnIbBMJ7IWcEQ+t2ncPBKaO5dldNsvR/o9NyN5AikHZrqa83+A/tYHqrZyvQ1NbpJCgCSORJUtYU0w1GYrvgtl5zP7/nEi6SHNte2tYBt/7v9rOyk55TMDYQbG5KiYXiZSz4h11XshKfi6ufZNDpix2yAseFB6S5ZpUWE20TAvev3Wkk6CVv6VAw98iDs19CcZq1tIoKKGcIGOZBEDe22lekxTe50/UYRwsdfjcYcHZdsMFTMA2WB/JslnyQXakLXSE82jvajLNm0A5Tj7IsUZdhavg== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:35 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 04/39] dyndbg: add 2 trace-events: prdbg, devdbg Date: Sun, 11 Feb 2024 00:49:34 +0100 Message-ID: <20240210235009.2405808-5-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Jim Cromie ddebug_trace() currently issues a single printk:console event. Replace that event by adding include/trace/events/dyndbg.h, which defines 2 new trace-events: dyndbg:prdbg & dyndbg:devdbg. These events save a debug message and use its length for processing. They also accept the _ddebug descriptor and dev structure so they can be used to access the whole callsite record in the future: file, line, function, flags. This allows the addition of a dynamic prefix later. So ddebug_trace() gets 2 new args: the descriptor and the device. And its callers: ddebug_printk(), ddebug_dev_printk() upgrade their flags param to pass the descriptor itself, and thus also the flags. Signed-off-by: Jim Cromie Co-developed-by: =C5=81ukasz Bartosik Signed-off-by: =C5=81ukasz Bartosik --- MAINTAINERS | 1 + include/trace/events/dyndbg.h | 63 ++++++++++++++++++++++++++++++ lib/dynamic_debug.c | 73 ++++++++++++++++++----------------- 3 files changed, 101 insertions(+), 36 deletions(-) create mode 100644 include/trace/events/dyndbg.h diff --git a/MAINTAINERS b/MAINTAINERS index 960512bec428..b584a8468fb9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -7456,6 +7456,7 @@ M: Jason Baron M: Jim Cromie S: Maintained F: include/linux/dynamic_debug.h +F: include/trace/events/dyndbg.h F: lib/dynamic_debug.c F: lib/test_dynamic_debug.c =20 diff --git a/include/trace/events/dyndbg.h b/include/trace/events/dyndbg.h new file mode 100644 index 000000000000..647c30206a7d --- /dev/null +++ b/include/trace/events/dyndbg.h @@ -0,0 +1,63 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM dyndbg + +#if !defined(_TRACE_DYNDBG_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_DYNDBG_H + +#include + +/* + * template for dynamic debug events + * captures debug log message and uses its length, it also + * accepts _ddebug and dev structures for future extensions + */ +DECLARE_EVENT_CLASS(dyndbg_template, + + TP_PROTO(const struct _ddebug *desc, const struct device *dev, + const char *msg, size_t len), + + TP_ARGS(desc, dev, msg, len), + + TP_STRUCT__entry( + __dynamic_array(char, s, len+1) + ), + + TP_fast_assign( + /* + * Each trace entry is printed in a new line. + * If the msg finishes with '\n', cut it off + * to avoid blank lines in the trace. + */ + if (len > 0 && (msg[len-1] =3D=3D '\n')) + len -=3D 1; + + memcpy(__get_str(s), msg, len); + __get_str(s)[len] =3D 0; + ), + + TP_printk("%s", __get_str(s)) +); + +/* captures pr_debug() callsites */ +DEFINE_EVENT(dyndbg_template, prdbg, + + TP_PROTO(const struct _ddebug *desc, const struct device *dev, + const char *msg, size_t len), + + TP_ARGS(desc, dev, msg, len) +); + +/* captures dev_dbg() callsites */ +DEFINE_EVENT(dyndbg_template, devdbg, + + TP_PROTO(const struct _ddebug *desc, const struct device *dev, + const char *msg, size_t len), + + TP_ARGS(desc, dev, msg, len) +); + +#endif /* _TRACE_DYNDBG_H */ + +/* This part must be outside protection */ +#include diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 016f33c20251..fcc7c5631b53 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -36,7 +36,9 @@ #include #include #include -#include + +#define CREATE_TRACE_POINTS +#include =20 #include =20 @@ -878,7 +880,9 @@ struct ddebug_trace_bufs { static DEFINE_PER_CPU(struct ddebug_trace_bufs, ddebug_trace_bufs); static DEFINE_PER_CPU(int, ddebug_trace_reserve); =20 -static void ddebug_trace(const char *fmt, va_list args) +__printf(3, 0) +static void ddebug_trace(struct _ddebug *desc, const struct device *dev, + const char *fmt, va_list args) { struct ddebug_trace_buf *buf; int bufidx; @@ -897,7 +901,11 @@ static void ddebug_trace(const char *fmt, va_list args) buf =3D this_cpu_ptr(ddebug_trace_bufs.bufs) + bufidx; =20 len =3D vscnprintf(buf->buf, sizeof(buf->buf), fmt, args); - trace_console(buf->buf, len); + + if (!dev) + trace_prdbg(desc, NULL, buf->buf, len); + else + trace_devdbg(desc, dev, buf->buf, len); =20 out: /* As above. */ @@ -907,9 +915,9 @@ static void ddebug_trace(const char *fmt, va_list args) } =20 __printf(2, 3) -static void ddebug_printk(unsigned int flags, const char *fmt, ...) +static void ddebug_printk(struct _ddebug *desc, const char *fmt, ...) { - if (flags & _DPRINTK_FLAGS_TRACE) { + if (desc->flags & _DPRINTK_FLAGS_TRACE) { va_list args; =20 va_start(args, fmt); @@ -917,11 +925,11 @@ static void ddebug_printk(unsigned int flags, const c= har *fmt, ...) * All callers include the KERN_DEBUG prefix to keep the * vprintk case simple; strip it out for tracing. */ - ddebug_trace(fmt + strlen(KERN_DEBUG), args); + ddebug_trace(desc, NULL, fmt + strlen(KERN_DEBUG), args); va_end(args); } =20 - if (flags & _DPRINTK_FLAGS_PRINTK) { + if (desc->flags & _DPRINTK_FLAGS_PRINTK) { va_list args; =20 va_start(args, fmt); @@ -931,19 +939,19 @@ static void ddebug_printk(unsigned int flags, const c= har *fmt, ...) } =20 __printf(3, 4) -static void ddebug_dev_printk(unsigned int flags, const struct device *dev, +static void ddebug_dev_printk(struct _ddebug *desc, const struct device *d= ev, const char *fmt, ...) { =20 - if (flags & _DPRINTK_FLAGS_TRACE) { + if (desc->flags & _DPRINTK_FLAGS_TRACE) { va_list args; =20 va_start(args, fmt); - ddebug_trace(fmt, args); + ddebug_trace(desc, dev, fmt, args); va_end(args); } =20 - if (flags & _DPRINTK_FLAGS_PRINTK) { + if (desc->flags & _DPRINTK_FLAGS_PRINTK) { va_list args; =20 va_start(args, fmt); @@ -966,7 +974,7 @@ void __dynamic_pr_debug(struct _ddebug *descriptor, con= st char *fmt, ...) vaf.fmt =3D fmt; vaf.va =3D &args; =20 - ddebug_printk(descriptor->flags, KERN_DEBUG "%s%pV", + ddebug_printk(descriptor, KERN_DEBUG "%s%pV", dynamic_emit_prefix(descriptor, buf), &vaf); =20 va_end(args); @@ -977,7 +985,6 @@ void __dynamic_dev_dbg(struct _ddebug *descriptor, const struct device *dev, const char *fmt, ...) { struct va_format vaf; - unsigned int flags; va_list args; =20 BUG_ON(!descriptor); @@ -987,15 +994,14 @@ void __dynamic_dev_dbg(struct _ddebug *descriptor, =20 vaf.fmt =3D fmt; vaf.va =3D &args; - flags =3D descriptor->flags; =20 if (!dev) { - ddebug_printk(flags, KERN_DEBUG "(NULL device *): %pV", - &vaf); + ddebug_printk(descriptor, KERN_DEBUG "(NULL device *): %pV", + &vaf); } else { char buf[PREFIX_SIZE] =3D ""; =20 - ddebug_dev_printk(flags, dev, "%s%s %s: %pV", + ddebug_dev_printk(descriptor, dev, "%s%s %s: %pV", dynamic_emit_prefix(descriptor, buf), dev_driver_string(dev), dev_name(dev), &vaf); @@ -1011,7 +1017,6 @@ void __dynamic_netdev_dbg(struct _ddebug *descriptor, const struct net_device *dev, const char *fmt, ...) { struct va_format vaf; - unsigned int flags; va_list args; =20 BUG_ON(!descriptor); @@ -1021,24 +1026,22 @@ void __dynamic_netdev_dbg(struct _ddebug *descripto= r, =20 vaf.fmt =3D fmt; vaf.va =3D &args; - flags =3D descriptor->flags; =20 if (dev && dev->dev.parent) { char buf[PREFIX_SIZE] =3D ""; =20 - ddebug_dev_printk(flags, dev->dev.parent, - "%s%s %s %s%s: %pV", - dynamic_emit_prefix(descriptor, buf), - dev_driver_string(dev->dev.parent), - dev_name(dev->dev.parent), - netdev_name(dev), netdev_reg_state(dev), - &vaf); + ddebug_dev_printk(descriptor, dev->dev.parent, + "%s%s %s %s%s: %pV", + dynamic_emit_prefix(descriptor, buf), + dev_driver_string(dev->dev.parent), + dev_name(dev->dev.parent), + netdev_name(dev), netdev_reg_state(dev), + &vaf); } else if (dev) { - ddebug_printk(flags, KERN_DEBUG "%s%s: %pV", - netdev_name(dev), netdev_reg_state(dev), &vaf); + ddebug_dev_printk(descriptor, &dev->dev, KERN_DEBUG "%s%s: %pV", + netdev_name(dev), netdev_reg_state(dev), &vaf); } else { - ddebug_printk(flags, KERN_DEBUG "(NULL net_device): %pV", - &vaf); + ddebug_printk(descriptor, KERN_DEBUG "(NULL net_device): %pV", &vaf); } =20 va_end(args); @@ -1054,18 +1057,16 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, { struct va_format vaf; va_list args; - unsigned int flags; =20 va_start(args, fmt); =20 vaf.fmt =3D fmt; vaf.va =3D &args; - flags =3D descriptor->flags; =20 if (ibdev && ibdev->dev.parent) { char buf[PREFIX_SIZE] =3D ""; =20 - ddebug_dev_printk(flags, ibdev->dev.parent, + ddebug_dev_printk(descriptor, ibdev->dev.parent, "%s%s %s %s: %pV", dynamic_emit_prefix(descriptor, buf), dev_driver_string(ibdev->dev.parent), @@ -1073,10 +1074,10 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, dev_name(&ibdev->dev), &vaf); } else if (ibdev) { - ddebug_printk(flags, KERN_DEBUG "%s: %pV", - dev_name(&ibdev->dev), &vaf); + ddebug_dev_printk(descriptor, &ibdev->dev, KERN_DEBUG "%s: %pV", + dev_name(&ibdev->dev), &vaf); } else { - ddebug_printk(flags, KERN_DEBUG "(NULL ip_device): %pV", &vaf); + ddebug_printk(descriptor, KERN_DEBUG "(NULL ip_device): %pV", &vaf); } =20 va_end(args); --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C5134604BA for ; Sat, 10 Feb 2024 23:50:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609041; cv=none; b=LSKijHIvSL9sRHxA3yRfCHVeVgKOOnXrDnROU2QSzMFo1qzDFJjLWFi8qz1UFI6hE7iCLqBmFZFauczpUjoxdJBLyiVyTknHOSCdSftTM71pGLpSZKik5rM2yT4w2Zjdel2ESLiqc7k/bc+MthUmKJha5nZ0DRTnOcH8KOpdEa4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609041; c=relaxed/simple; bh=CEm2u5oLoANuCFcHRqanlvBhrRP8jePFysyGpg9GOkE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=HAN72GXPh8p4wXJO/tCId7gaUUSkdDXY5m1+yEETYsZ0+vhIwbji5xmDIEEqwXG1GsyhAJq7mC5mvoDdU70JN63Ac+SoG/+M+Cb2e0ECH42jr5enc6xhFCpHNiko3OQ7ancyYGVBuY4L89WUajxj4/OTcgLBGdYF4Ax1DAD2cmY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=Y4WEghAA; arc=none smtp.client-ip=209.85.208.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="Y4WEghAA" Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-2cf206e4d56so27700721fa.3 for ; Sat, 10 Feb 2024 15:50:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609038; x=1708213838; darn=vger.kernel.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=mJESVK7kHt1+7K3a2iTQplxRuP50hVTmiKkfD52o08Q=; b=Y4WEghAAak9V/nq8V6yn3g7oTyKN08K8z0dIfkXqNLLvBcvGFXfcT/sj/sNZPEfXLM XB++GTxyxfozCOZDd/c015p6Vd2RnGxpP8iIleU7PRsZVDuMOxjtjYNP0TVL61GFwc9F 2szYnYg353BjDU/jlik+iFQCO/Qmh+t0IGbp8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609038; x=1708213838; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mJESVK7kHt1+7K3a2iTQplxRuP50hVTmiKkfD52o08Q=; b=sYO8YYmm5iP7xjJb62eDdgNXsrwGAzlTxWQSIAmkQLfqy7140iP30jg2Db4Uz3N7F2 38pEc80t24wlI272AF7J91T5lzQZHEjQ9o/mqsRIaTz4+0wvnzlDy6S/csCpTOmx9IaR 4Q8aBrcWAnTQnd6vUXNys747qsuhgX8vpZOyMkp8idgo9PDO26dX+LD7V7L+3A8ub4nv ptwtp9sye0FHly7Yak9U1H/ZIY8NfuaPIYjtm4AN7FVYRgRV87y0pwzwXv9PFrlDsD7t rCJ5kSVI9naHmLi3nTbqHZLjTDOykTrwoBoIUE2v6nfT7Eq4JHRdGni76PeWNQRf2t0C SaGA== X-Gm-Message-State: AOJu0YzayMRy9glTYTFXLHQ91pOZqdLfElp/U3vQ6mtVnQs4nonyamnj 9GRPsi5ZC3HpBxbJkv3VX7ewNCtXqle2PLf38XHkZ3SSEofdd5j1Tojb+w0f X-Google-Smtp-Source: AGHT+IHVR2xbmhJIxxY6EebfRkEZJFRJQ1zAxth2B3VxmSkD8iDu7C8RlPSLS3itHWUFm8nicKC4zw== X-Received: by 2002:a19:5209:0:b0:511:79ce:f325 with SMTP id m9-20020a195209000000b0051179cef325mr1576643lfb.31.1707609037846; Sat, 10 Feb 2024 15:50:37 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUnU0vsLxtkUbNcbT7Arujl/3sW/7tv/nm0MPyXW+L7RPEIemfAuiboHfYHpEovp6knESiGxQUDU7oHl8LWX9pfg+l7apXoAhYfShXHF8Css4OirBKnTd45MkuwevTRvvYnhagwTL352TxZSsevQINxiKhl/RiYLxg3EKRfZ7hPhvPBmccMe4UaF9Bbfdqk08mZAooteiCTjxLnBAF+WEq1XObEZnP3IUxdxOpfIifIz3Pem0rup4v8FtNPxQEOqeaoLIYfR3ikAJP9osWhkzcvtqyWEq/MqwA3rcbP8VA7McIrEzPdC7jfnVK72jCYbgETxgAoC+h3RMDNj9lq8HyDduu0RwMvf58pqmBKHrWgoIvg7FbWEaXvfvB3OdwnJxVo4LlT7m1+p0PFFE7kKrfV0of7lofCYt5a84Otgo7Rq+vVFgNxVz1KBCDWWzzlO32YYmS9GFZgkA5G0MNsEd9AqLTXnuZgbpUal3ZcchxxOvqlkWk5Xg9akEHpNOvm+wHu05y95HpNsuX3NfHR9k4K+BtTlkrmneNQiJH5oKfR39i0WDGK6ufjp3rVZW+G1raw5f79vk/39tiYr7gSaiWsmkvlKlMwJ+QmHuP9nV5e/2fA5w== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:37 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 05/39] tracefs: add __get_str_strip_nl Date: Sun, 11 Feb 2024 00:49:35 +0100 Message-ID: <20240210235009.2405808-6-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Jim Cromie This variant of __get_str() removes the trailing newline. It is for use by printk/debug-ish events which already have a trailing newline. It is here to support [1] which taught dyndbg to send pr_debug() msgs to tracefs, via -T flag. It "reused" the include/trace/events/printk.h console event, which does the following: TP_fast_assign( /* * Each trace entry is printed in a new line. * If the msg finishes with '\n', cut it off * to avoid blank lines in the trace. */ if (len > 0 && (msg[len-1] =3D=3D '\n')) len -=3D 1; memcpy(__get_str(s), msg, len); __get_str(s)[len] =3D 0; ), We can avoid trimming the last \n during write into the tracebuf, by instead stripping it when reading the tracebuf. So do that. [1] https://lore.kernel.org/lkml/20200825153338.17061-1-vincent.whitchurch@= axis.com Cc: Cc: Vincent Whitchurch Cc: Cc: Cc: Cc: Cc: Simon Ser Cc: Sean Paul Signed-off-by: Jim Cromie Co-developed-by: =C5=81ukasz Bartosik Signed-off-by: =C5=81ukasz Bartosik --- include/trace/stages/stage3_trace_output.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/trace/stages/stage3_trace_output.h b/include/trace/sta= ges/stage3_trace_output.h index c1fb1355d309..283533a17e62 100644 --- a/include/trace/stages/stage3_trace_output.h +++ b/include/trace/stages/stage3_trace_output.h @@ -19,6 +19,19 @@ #undef __get_str #define __get_str(field) ((char *)__get_dynamic_array(field)) =20 +#undef __get_str_strip_nl +#define __get_str_strip_nl(field) \ + ({ \ + char *s =3D trace_seq_buffer_ptr(p); \ + size_t len; \ + trace_seq_printf(p, "%s", __get_str(field)); \ + trace_seq_putc(p, '\0'); \ + len =3D strlen(s); \ + if (len && s[len-1] =3D=3D '\n') \ + s[len-1] =3D '\0'; \ + s; \ + }) + #undef __get_rel_dynamic_array #define __get_rel_dynamic_array(field) \ ((void *)__entry + \ --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4E3A2604CF for ; Sat, 10 Feb 2024 23:50:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609043; cv=none; b=GdjCXyRoaRb1vGoIiPqtvVihtX7rjgelrwmCCU9d0+cvQFmA7ytUDy/nN4ShY43L0jcrR2h/NmHtIvQSpiwf2ipKGOIDmGQWLnghiVm7MbnOimZaQ6g5GxD4zjjFMA9eHW734tVdqkxhVWa8Xu4erb16NWF0d4rS+wYYV736IeA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609043; c=relaxed/simple; bh=bAccrTv3hmSTu7zPzthT8nvQoJH35PHedf4O6GRUW3I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=SSMDGoadZs8delhvMPz/avxJa38vUERmdewpEqiKDMdBahB158CZ4wPh9i1/kUSI0fKdRmIWki0SRb/Nh0XWhjewaR2tiebNyI2MBviDRjh3p8BHke6a7dVadhty6m/hJiHPCQYnaDZ0vu4jOMufF6YNm6h29sZ7k+otC1bzSnk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=bsh7dshm; arc=none smtp.client-ip=209.85.167.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="bsh7dshm" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-5114b2b3b73so2506813e87.0 for ; Sat, 10 Feb 2024 15:50:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609039; x=1708213839; darn=vger.kernel.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=x00D6P9yOyMiqD2q0GliLWT+bL7NY08ZLZWAqgBxEXY=; b=bsh7dshm4K0Nbe5N2eBL91tg68F66TZi0f/LIzUQjQN5r8FOXqtqnm2hz4MzO3u7V8 PQncXmd2Po1xZkTYiMqsq4/4HoNtz64ufAV91DQdC7xJN2+m3e3ijcpYcDirjEK67Jw4 AfMBofNWutpT103dFQ+LJ0dHpKpPWn0RiBgW8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609039; x=1708213839; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x00D6P9yOyMiqD2q0GliLWT+bL7NY08ZLZWAqgBxEXY=; b=rU2hhRjo24R8wjI4pguTQpq4g+RaGpzLOlwKKzI1ZqsJH7t/31qiyt0dQlYoDP5ZdH BEfjEeQXug+VyLf6p2OxTPjEB5aq20U2hBCuTeBvM0Tcg9doHQYQz3ElycJwb9jV1ELV 4aJjbGwZ1RmEBbBElIm9nxiFj1FkGKTGjEoLQVUF0+COGaRSg/wIPMnps8dUxt7NRdj4 ShH+RBT5DHRvwkVrV1aUM4LVoprrbZX+yOc2xlT+2uWsUMnviFUGURd5MInSCmorcXcH 8446eKJ22jw5v0iY39Mz8KTsWEl+aap6osHBM/PMQbXASX8bIQ/lNi4ZlkEHIQtFljcn wNQw== X-Forwarded-Encrypted: i=1; AJvYcCWdTQW3atXGBD6j0BFfO7FVR0Zp+jru1DODSEJ7QqSDQww0wQhwWiGezjVicOb7pXLI69gxurJ2aZatIQt/rhuO0TTWdQ70Hl9Aio13 X-Gm-Message-State: AOJu0Yw9aBUEnvE6+cWZwEe8BmLLD3BQ5JHIzxW47G+Ysw32aTz5uDQp vvCpu6DCSyiUcRkMbsAhJ9jJnCkQphEe+xIX9QcfziXcXK7Z+rOribIgvR56 X-Google-Smtp-Source: AGHT+IEEmXCDAjJbk/WivEbLO+m1UD2apM3Sq8YB0Oy4T8mG/wcSYTZz9sVE3xQqv4zU00HzYNaMYw== X-Received: by 2002:a05:6512:31d4:b0:510:ee2c:e9c4 with SMTP id j20-20020a05651231d400b00510ee2ce9c4mr2815993lfe.17.1707609039442; Sat, 10 Feb 2024 15:50:39 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCV7ySymF3+AZV/6j1K9+VJqK5qT7OPdyNN28fJe2JQqW3xVM2SBYur4wQol+rUwrbeum1oQKxJE2gW7XvXM4MagBlhPedO9CFSwpcSYyFs7LPcPLIxgCe0KpYo234EU1Is2CVFVPkWWkUMYMj/A2MR+etJNsp9MBoXIT7cIs1xYIwJY/Ovxgb/0YVWn9QmJG1iUGqNecxny1WI9D4kxIgNfpIEZ9aeT8SSWYUrj5NrD2yAh6m9U1kIVuhEnZ1IVk/hR5my+nmOe3sVestZnkkup5wU/gZvWFEylKK/FALNsvUtjdiqJc4m+rGadQZ3kivXiDFiXPf1mJWaoNR1AaYWtzMvCOYOYsVDr3JeKFIjzfUSeNURPieCatlRwgbAJQuG6ampB4tYgnwwf1pYtW5s+GyGiC//jfNPXE3RFc4md5VUSuG0VEauzE5/+pCIafiAnhaTKJF1QQtzyKgTHSQPHy00nWD4mKdj055Mq5GWL7sHRLvMRJfRQkf3z6yRoCBAGGdHomteoQ/yY2gcaHqugcMgnTB2Dx+LxDfdZRDTzzxXXxq1rmbADKpATKYjOfHga1gUxQx2qEeZEG32hYsrp91dKbOkW2peqBd/Z3T7buu4Sbg== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:39 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 06/39] dyndbg: use __get_str_strip_nl in prdbg and devdbg Date: Sun, 11 Feb 2024 00:49:36 +0100 Message-ID: <20240210235009.2405808-7-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Jim Cromie Recently added dyndbg events: prdbg, devdbg have code to strip the trailing newline, if it's there. Instead of removing the newline in TP_fast_assign use __get_str_strip_nl macro in TP_printk. Advantage of such an approach is that the removal is done on the read side (slow path). The change removes also passing of debug message length to prdbg and devdbg events. This use is slightly premature/overkill, since some pr_debugs do not have the expected trailing newline. While those lacks are arguably bugs, this doesn't fix them. Signed-off-by: Jim Cromie Co-developed-by: =C5=81ukasz Bartosik Signed-off-by: =C5=81ukasz Bartosik --- include/trace/events/dyndbg.h | 27 +++++++++------------------ lib/dynamic_debug.c | 7 +++---- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/include/trace/events/dyndbg.h b/include/trace/events/dyndbg.h index 647c30206a7d..ffd21480cd9d 100644 --- a/include/trace/events/dyndbg.h +++ b/include/trace/events/dyndbg.h @@ -15,46 +15,37 @@ DECLARE_EVENT_CLASS(dyndbg_template, =20 TP_PROTO(const struct _ddebug *desc, const struct device *dev, - const char *msg, size_t len), + const char *msg), =20 - TP_ARGS(desc, dev, msg, len), + TP_ARGS(desc, dev, msg), =20 TP_STRUCT__entry( - __dynamic_array(char, s, len+1) + __string(s, msg) ), =20 TP_fast_assign( - /* - * Each trace entry is printed in a new line. - * If the msg finishes with '\n', cut it off - * to avoid blank lines in the trace. - */ - if (len > 0 && (msg[len-1] =3D=3D '\n')) - len -=3D 1; - - memcpy(__get_str(s), msg, len); - __get_str(s)[len] =3D 0; + __assign_str(s, msg); ), =20 - TP_printk("%s", __get_str(s)) + TP_printk("%s", __get_str_strip_nl(s)) ); =20 /* captures pr_debug() callsites */ DEFINE_EVENT(dyndbg_template, prdbg, =20 TP_PROTO(const struct _ddebug *desc, const struct device *dev, - const char *msg, size_t len), + const char *msg), =20 - TP_ARGS(desc, dev, msg, len) + TP_ARGS(desc, dev, msg) ); =20 /* captures dev_dbg() callsites */ DEFINE_EVENT(dyndbg_template, devdbg, =20 TP_PROTO(const struct _ddebug *desc, const struct device *dev, - const char *msg, size_t len), + const char *msg), =20 - TP_ARGS(desc, dev, msg, len) + TP_ARGS(desc, dev, msg) ); =20 #endif /* _TRACE_DYNDBG_H */ diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index fcc7c5631b53..9682277f3909 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -886,7 +886,6 @@ static void ddebug_trace(struct _ddebug *desc, const st= ruct device *dev, { struct ddebug_trace_buf *buf; int bufidx; - int len; =20 preempt_disable_notrace(); =20 @@ -900,12 +899,12 @@ static void ddebug_trace(struct _ddebug *desc, const = struct device *dev, =20 buf =3D this_cpu_ptr(ddebug_trace_bufs.bufs) + bufidx; =20 - len =3D vscnprintf(buf->buf, sizeof(buf->buf), fmt, args); + vscnprintf(buf->buf, sizeof(buf->buf), fmt, args); =20 if (!dev) - trace_prdbg(desc, NULL, buf->buf, len); + trace_prdbg(desc, NULL, buf->buf); else - trace_devdbg(desc, dev, buf->buf, len); + trace_devdbg(desc, dev, buf->buf); =20 out: /* As above. */ --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E0BF5605AB for ; Sat, 10 Feb 2024 23:50:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609044; cv=none; b=BnN7rdJAZAV4cEm8gZs173LEg7Qb8QqMbzce4TDKIbNKkkCJTDGZchTyXz+q9Ceq+wAxSAjKvznEUJ+3ZMwHyz0aSbaW9PZFGeVsYq6l4CYndtAYP4TIro3egzEKFFDcWOcFuIggYE9QgpejUxcuigJ6Flj2j0v7eiXr9Lq1HuI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609044; c=relaxed/simple; bh=PKIPCdVpIuUn/00YwCRKhljNgiSyRdjJyytN1tq9BaQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=W6Fx+IE6vNO5YvRXQqN9b0tJg0afyK1LhwMloK4qHRRQbcU88fotetBbSJZIh8VdZkuaKT/yCUdMWoe8AGRwoho1bB/sYs74vs2Han3QPohNniWWz5tJR8wVEhkY0kBTyut88xK8KIwyaegcsX8iIpGrIm7YxEf6h/pyTW2B0YY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=XXrkXuw5; arc=none smtp.client-ip=209.85.167.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="XXrkXuw5" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-5101cd91017so2348452e87.2 for ; Sat, 10 Feb 2024 15:50:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609041; x=1708213841; darn=vger.kernel.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=wHpG276MmElKepXhunEl7bkyaSWvxSiZXup8NnNdSuc=; b=XXrkXuw5amxDB1i/GGDQsUqAAlmsPklnIIoxdJYS3v2b7eottwGsfgsRPdpq3g/Hgn UGJ78SKGREnDpwObfm5yCjp5AV32mgAo2xtSRAiV2b038MnEjasuovWUdrBGFmVFGC+5 teN4oCZ1IWrulbn2xgVLC1dI6WCgiVlTXTQuA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609041; x=1708213841; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wHpG276MmElKepXhunEl7bkyaSWvxSiZXup8NnNdSuc=; b=CPnCPTbzodaacQzi26ZcUOi4VSBrOieXuOdqElFjYe6+vM7jZKYRmjVYNLFUf1MFi3 7FeIn+vyXhg4Cgzj2Y8I5zRDacxCjrMhQkG1LrBIU0cyNoVlDyDfXfeTHmRYCkh4CMZp DVHffz4BHjHjaFiEoRBXwLtJ9vVKMojBvtytW9bRc6EQwFE/KDETltLKolgiVb3udhfZ O+uuaAyJ0FyF6yqFovwLhmokMbYRVVWxn7923AumhDW+h/pZBJ0vdbKHOy353c/tRj9h SZ8w3D65XrqKFla0aJRygwd3MNPMJTEgMB2VhaWgGIATZvBuw70fjTBWf20klJ0OKlr7 EsLg== X-Gm-Message-State: AOJu0YyjFGc7/F93VBOGiCmVAwncQYjcJB2HVSFA+nwzrJ8l34DoSBs6 rmRrgS4Q16tIE+znYpp8lNJGRQviX2VMvndFN4mV1CAksmiSFStS1qM+Bf+S X-Google-Smtp-Source: AGHT+IHz+0gL0xM1fOcsFa/yd/LCrmiJcdGR4nG8muhDEguWlff0lFrYHY7jsR7tg0CMcnORGQrEJQ== X-Received: by 2002:a05:6512:3246:b0:511:882e:aa2f with SMTP id c6-20020a056512324600b00511882eaa2fmr249269lfr.50.1707609041040; Sat, 10 Feb 2024 15:50:41 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCVXzcfxvl53b0KUr1AgxRUitK73QLnppDlhHkKvnYnab4XlZzdLWCQtiWNZTYX4A42GkbmGlrcniR/8P9q9qsEfn5rnazlCjGxZ/7GZ12O3O7hHnIetYy+tHDPpZWSkRdAF5LGaz9p1aSZi1NwR6pRUq8VdmvotG8GZ+nFvPdc7wHduqJbYT7MpMjfz2E4YKzn6X/JFh9qgWcm/tO2BQYHs7QM+9nsK0KxXA0BTFqZit1tt2d0Ucftula3JtEJPHSXiffMXkeAEId7sF6lSGVsHXSEOE5XcWFnnwNo3CIpLB1CiLs0wh79FheTZivU2sASNqFuDMzszhOH2rpWy2aMx6fDsmIN68V+MLmEOcfQzAqBUegcMlfV0NEFW/44q9cqHla+NQuJZUbi/6dHGkSqSlKIhkoVjfhIZeNoF8EZ4ALwrOR9kCjxXMrTyG5D6BA+59BZXkaYVzqzIHFlHupE3DCLtEcs8Cttack5ZOZpHdgEg91o79IUTbfMHMYjG+gl1uXliMCJAcsevu4KzWWKJ+U36DbxTZE9kWRnYZC8FuRWU8Yf6oOZU/vGU8pVxS5FQsBKTDr1mgLhGyiWyb1JjeTkakLsk2B9EJX7djmTZFOY50Q== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:40 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 07/39] dyndbg: repack _ddebug structure Date: Sun, 11 Feb 2024 00:49:37 +0100 Message-ID: <20240210235009.2405808-8-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie Move the JUMP_LABEL to the top of the struct, since they're both align(8) and this closes a pahole (unfortunately trading for padding, but still). Signed-off-by: Jim Cromie --- include/linux/dynamic_debug.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index 497130816e9c..b9237e4ecd1b 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -14,6 +14,12 @@ * the special section is treated as an array of these. */ struct _ddebug { +#ifdef CONFIG_JUMP_LABEL + union { + struct static_key_true dd_key_true; + struct static_key_false dd_key_false; + } key; +#endif /* * These fields are used to drive the user interface * for selecting and displaying debug callsites. @@ -53,12 +59,6 @@ struct _ddebug { #define _DPRINTK_FLAGS_DEFAULT 0 #endif unsigned int flags:8; -#ifdef CONFIG_JUMP_LABEL - union { - struct static_key_true dd_key_true; - struct static_key_false dd_key_false; - } key; -#endif } __attribute__((aligned(8))); =20 enum class_map_type { --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f68.google.com (mail-lf1-f68.google.com [209.85.167.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B807605D0 for ; Sat, 10 Feb 2024 23:50:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.68 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609046; cv=none; b=RHJ/V6RdMadeUBE5FfSVbln3iWgdBIYWpY/qHf3dIyi7m5A8DrKL8AZeENhVbuyvubl3MseiOs5hrgC5phHWwRcT0+7y4Co72vVB9CvlUCNNZFUyeNWwejjvwCFd5TfKeQ1Ui5+gIxbsS9NS+IPYazzqa+uXMBWBtfrHFC9OyW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609046; c=relaxed/simple; bh=N7cA8bn8EjCVuVHuDU0PP9ju1v33Lwp1kuaVQzOCU4g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=HGvPaKraZlkMy7ZYQnhflA8LqaiNerpdIQcA9hA4HupcryqL0DgGgJ7PXIqK0KKsW6LLVSFUIxScb9NUfOmq0q/H219dXMB1Jt48nR6ZkStD3tZGOhdfJGy3K5Vx4KfQjPoP6i6ZjKyXK2wFUHcmdZrPbCWR14MvKfjZmC+ona8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=aylZEiq9; arc=none smtp.client-ip=209.85.167.68 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="aylZEiq9" Received: by mail-lf1-f68.google.com with SMTP id 2adb3069b0e04-511570b2f49so2794220e87.1 for ; Sat, 10 Feb 2024 15:50:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609042; x=1708213842; darn=vger.kernel.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=hSW8rXIgUpmvq2wb08IXdigJ9UWnCc/ryLuvI1HuFRg=; b=aylZEiq9E/qFEiR/eiO+ebTW0jVWymk8vKgiAgun+zEQoOIjRMrt75KKN5I6wECC3q JiAQPjX6RskCapxzw1YWEhNH0DRXepXvor/XoZkbw01FxmQ9aIo1IO2ecViUCxDe5SWX NMEXdnFwKf/zX86RXJbA3uL2COwNzMvWyRrX0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609042; x=1708213842; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hSW8rXIgUpmvq2wb08IXdigJ9UWnCc/ryLuvI1HuFRg=; b=Wm3QpOqHInywbNd+IWcRMfpeN/riFut1Ylze8l/I9flthXX2Meq0Zktj+WbUSsbXKZ 6oquioHdy4xMCK2N0MVkKwxxo7bbFXB5DMyXi5KZWfwyrtOX5f3TyiLwpAm7wzuljsK+ xJ1hjFKXtZi46BtGIc4nSdUESK3w+b7VG24MgjcqqrKUT8XwfpOFvbIMYH8ZfM0GFmHj 2mfoJ4htKOkiziP3iUPHJJilYoWQD44G3urGkQXgzao1MCVvf3ltAfftK8Fc13rQjR4S Bf4xHUBMZfldVIzOFUvR6jwyPC/J29ngkZDdqQOGgGo/RwJDI6y7cMNJfulJGijE0BjY YjEg== X-Gm-Message-State: AOJu0YxRP+YvtNTVNl0yekGTH5WggwXDYOXnpnmfo2DYgpFlz+H9+6FO aWP+T5i28SpyC0eMSyKbZVnwRMnydcdIdh8/FS730007J5B4s7x4fLRdyV6W X-Google-Smtp-Source: AGHT+IEKs9GSfzJRjw3qonTGvh/0m1R1sF4z+fwNII8EEjOshComreCrNOfWBOkhn9OqXbC7xKa2Zw== X-Received: by 2002:a05:6512:3e28:b0:511:737d:661a with SMTP id i40-20020a0565123e2800b00511737d661amr1974636lfv.28.1707609042741; Sat, 10 Feb 2024 15:50:42 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUEL6IuQVTDfgEq8cmA2Dm+DQ6N5Xl8H019iNbYo2XCU4T/t5EfPLhwRWbW0eIkvQ/fsdmfg52wQAqYjGeg65ItFFZhgyU1UjLS4as++Up2B0G7HcTk7j3xrhSddP0r35tomWTt+fYGG6/Num6QlOzOOF5qusTEhCvux9Yx77gdWSvOyYHzC1TpNVnL6ZUOwDHyDC9kjH3PyGBKcDdf/RTnqXWU9TfQ7zEU4KAplqLorHAbfnozeZcDSQZic6SfHbwcEiY9EpesTToE4jn65n03Q4mhnmNORUMpif8FEGqi3TXjn6uvxYtT2/7v/IblP4iaE8lPKMYZVUp2W9Sret0nyXH1DL0ibb7E5Jd/CL7jhFvvA/IMyd6D9K6l9Ro5oCoL0r7YDSWyH3G1bPQY1R3iCz/pZs78c6vRZFUXFnSs6k5FzuQYXp94gN5brY/WhfwHNcKLn+i/q7lSzbDdvk582EaQMdh0VrEy+y5C/a4qKFiwYzh0vCE83OKSbJJjO8q7iGbH5sTHriqVNZRu6lQZbMnEyjOxnbAq1i6il6+PyMSBLSICfGVhl5i3ZOU/M3UBqjPq7/NnVR7dtOifd04CavmWPDg7XfVqKxV5PvqhdOLNMQ== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:42 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 08/39] dyndbg: move flags field to a new structure Date: Sun, 11 Feb 2024 00:49:38 +0100 Message-ID: <20240210235009.2405808-9-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Add a new structure ctrl and place it in 4 padding bytes of _ddebug struct. Move flags field to the ctrl struct and create setter and getter for the flags field. Add unused fields to explicitly emphasise size of each bitfield. This step prepares for addition of a trace_dst field. Layout of _ddebug struct after addition of ctrl is: struct _ddebug { union { struct static_key_true dd_key_true; /* 0 16 */ struct static_key_false dd_key_false; /* 0 16 */ } key; /* 0 16 */ const char * modname; /* 16 8 */ const char * function; /* 24 8 */ const char * filename; /* 32 8 */ const char * format; /* 40 8 */ unsigned int lineno:18; /* 48: 0 4 */ unsigned int class_id:6; /* 48:18 4 */ unsigned int unused:8; /* 48:24 4 */ struct dd_ctrl ctrl; /* 52 4 */ /* size: 56, cachelines: 1, members: 9 */ /* last cacheline: 56 bytes */ } __attribute__((__aligned__(8))); Signed-off-by: =C5=81ukasz Bartosik --- include/linux/dynamic_debug.h | 13 +++++++---- lib/dynamic_debug.c | 44 ++++++++++++++++++++++------------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index b9237e4ecd1b..a551b2967cb8 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -32,6 +32,8 @@ struct _ddebug { #define CLS_BITS 6 unsigned int class_id:CLS_BITS; #define _DPRINTK_CLASS_DFLT ((1 << CLS_BITS) - 1) + unsigned int unused:8; + /* * The flags field controls the behaviour at the callsite. * The bits here are changed dynamically when the user @@ -58,7 +60,10 @@ struct _ddebug { #else #define _DPRINTK_FLAGS_DEFAULT 0 #endif - unsigned int flags:8; + struct { + unsigned int flags:8; + unsigned unused:24; + } ctrl; } __attribute__((aligned(8))); =20 enum class_map_type { @@ -171,7 +176,7 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, .filename =3D __FILE__, \ .format =3D (fmt), \ .lineno =3D __LINE__, \ - .flags =3D _DPRINTK_FLAGS_DEFAULT, \ + .ctrl =3D { .flags =3D _DPRINTK_FLAGS_DEFAULT }, \ .class_id =3D cls, \ _DPRINTK_KEY_INIT \ }; \ @@ -202,10 +207,10 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, =20 #ifdef DEBUG #define DYNAMIC_DEBUG_BRANCH(descriptor) \ - likely(descriptor.flags & _DPRINTK_FLAGS_ENABLED) + likely(descriptor.ctrl.flags & _DPRINTK_FLAGS_ENABLED) #else #define DYNAMIC_DEBUG_BRANCH(descriptor) \ - unlikely(descriptor.flags & _DPRINTK_FLAGS_ENABLED) + unlikely(descriptor.ctrl.flags & _DPRINTK_FLAGS_ENABLED) #endif =20 #endif /* CONFIG_JUMP_LABEL */ diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 9682277f3909..f47cb76e0e3d 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -80,6 +80,16 @@ module_param(verbose, int, 0644); MODULE_PARM_DESC(verbose, " dynamic_debug/control processing " "( 0 =3D off (default), 1 =3D module add/rm, 2 =3D >control summary, 3 = =3D parsing, 4 =3D per-site changes)"); =20 +static inline unsigned int get_flags(const struct _ddebug *desc) +{ + return desc->ctrl.flags; +} + +static inline void set_flags(struct _ddebug *desc, unsigned int val) +{ + desc->ctrl.flags =3D val; +} + /* Return the path relative to source root */ static inline const char *trim_prefix(const char *path) { @@ -247,11 +257,11 @@ static int ddebug_change(const struct ddebug_query *q= uery, =20 nfound++; =20 - newflags =3D (dp->flags & modifiers->mask) | modifiers->flags; - if (newflags =3D=3D dp->flags) + newflags =3D (get_flags(dp) & modifiers->mask) | modifiers->flags; + if (newflags =3D=3D get_flags(dp)) continue; #ifdef CONFIG_JUMP_LABEL - if (dp->flags & _DPRINTK_FLAGS_ENABLED) { + if (get_flags(dp) & _DPRINTK_FLAGS_ENABLED) { if (!(newflags & _DPRINTK_FLAGS_ENABLED)) static_branch_disable(&dp->key.dd_key_true); } else if (newflags & _DPRINTK_FLAGS_ENABLED) { @@ -261,9 +271,9 @@ static int ddebug_change(const struct ddebug_query *que= ry, v4pr_info("changed %s:%d [%s]%s %s =3D> %s\n", trim_prefix(dp->filename), dp->lineno, dt->mod_name, dp->function, - ddebug_describe_flags(dp->flags, &fbuf), + ddebug_describe_flags(get_flags(dp), &fbuf), ddebug_describe_flags(newflags, &nbuf)); - dp->flags =3D newflags; + set_flags(dp, newflags); } } mutex_unlock(&ddebug_lock); @@ -824,10 +834,11 @@ static int remaining(int wrote) =20 static char *__dynamic_emit_prefix(const struct _ddebug *desc, char *buf) { + unsigned int flags =3D get_flags(desc); int pos_after_tid; int pos =3D 0; =20 - if (desc->flags & _DPRINTK_FLAGS_INCL_TID) { + if (flags & _DPRINTK_FLAGS_INCL_TID) { if (in_interrupt()) pos +=3D snprintf(buf + pos, remaining(pos), " "); else @@ -835,16 +846,16 @@ static char *__dynamic_emit_prefix(const struct _ddeb= ug *desc, char *buf) task_pid_vnr(current)); } pos_after_tid =3D pos; - if (desc->flags & _DPRINTK_FLAGS_INCL_MODNAME) + if (flags & _DPRINTK_FLAGS_INCL_MODNAME) pos +=3D snprintf(buf + pos, remaining(pos), "%s:", desc->modname); - if (desc->flags & _DPRINTK_FLAGS_INCL_FUNCNAME) + if (flags & _DPRINTK_FLAGS_INCL_FUNCNAME) pos +=3D snprintf(buf + pos, remaining(pos), "%s:", desc->function); - if (desc->flags & _DPRINTK_FLAGS_INCL_SOURCENAME) + if (flags & _DPRINTK_FLAGS_INCL_SOURCENAME) pos +=3D snprintf(buf + pos, remaining(pos), "%s:", trim_prefix(desc->filename)); - if (desc->flags & _DPRINTK_FLAGS_INCL_LINENO) + if (flags & _DPRINTK_FLAGS_INCL_LINENO) pos +=3D snprintf(buf + pos, remaining(pos), "%d:", desc->lineno); if (pos - pos_after_tid) @@ -857,7 +868,7 @@ static char *__dynamic_emit_prefix(const struct _ddebug= *desc, char *buf) =20 static inline char *dynamic_emit_prefix(struct _ddebug *desc, char *buf) { - if (unlikely(desc->flags & _DPRINTK_FLAGS_INCL_ANY)) + if (unlikely(get_flags(desc) & _DPRINTK_FLAGS_INCL_ANY)) return __dynamic_emit_prefix(desc, buf); return buf; } @@ -916,7 +927,8 @@ static void ddebug_trace(struct _ddebug *desc, const st= ruct device *dev, __printf(2, 3) static void ddebug_printk(struct _ddebug *desc, const char *fmt, ...) { - if (desc->flags & _DPRINTK_FLAGS_TRACE) { + + if (get_flags(desc) & _DPRINTK_FLAGS_TRACE) { va_list args; =20 va_start(args, fmt); @@ -928,7 +940,7 @@ static void ddebug_printk(struct _ddebug *desc, const c= har *fmt, ...) va_end(args); } =20 - if (desc->flags & _DPRINTK_FLAGS_PRINTK) { + if (get_flags(desc) & _DPRINTK_FLAGS_PRINTK) { va_list args; =20 va_start(args, fmt); @@ -942,7 +954,7 @@ static void ddebug_dev_printk(struct _ddebug *desc, con= st struct device *dev, const char *fmt, ...) { =20 - if (desc->flags & _DPRINTK_FLAGS_TRACE) { + if (get_flags(desc) & _DPRINTK_FLAGS_TRACE) { va_list args; =20 va_start(args, fmt); @@ -950,7 +962,7 @@ static void ddebug_dev_printk(struct _ddebug *desc, con= st struct device *dev, va_end(args); } =20 - if (desc->flags & _DPRINTK_FLAGS_PRINTK) { + if (get_flags(desc) & _DPRINTK_FLAGS_PRINTK) { va_list args; =20 va_start(args, fmt); @@ -1246,7 +1258,7 @@ static int ddebug_proc_show(struct seq_file *m, void = *p) seq_printf(m, "%s:%u [%s]%s =3D%s \"", trim_prefix(dp->filename), dp->lineno, iter->table->mod_name, dp->function, - ddebug_describe_flags(dp->flags, &flags)); + ddebug_describe_flags(get_flags(dp), &flags)); seq_escape_str(m, dp->format, ESCAPE_SPACE, "\t\r\n\""); seq_puts(m, "\""); =20 --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f68.google.com (mail-lf1-f68.google.com [209.85.167.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6481160881 for ; Sat, 10 Feb 2024 23:50:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.68 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609048; cv=none; b=O3OU/Ga1kldKsHv+rR1TKH51yXTDZmTQSXdnDV1y6x+t0105CPp4/VgZEb4LwUfhxvTn+Ft0r1CNx2/msZSVLPSoqjqeyV3ltWm9Eh5koiIkk85RxNOeDXLqdbaQ2mseMvHW9U350edytidnEYY9m6A+oWP5ag20MLEWPUWxQmI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609048; c=relaxed/simple; bh=Yix+pbfpxiUDW0+LvNlKGlFsd39VDWqixPWRM9lIlGU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=jwxfRkm0NhcFfG4cMzwMFeFAZ//NY76PDS8WO7AYEYowXn34Hd8Ec0oEs95sz93X0BAfUzZBw2k7g8zJ8bhu37xuMp8/EgtD0hPskywIeYRtUI8TuGxGYZ6EQka5YmLvzZAiBeT6JPZq03REkT3MkZr3vd61IbjZqqyL+9vdRRY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=Ztvr1j+v; arc=none smtp.client-ip=209.85.167.68 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="Ztvr1j+v" Received: by mail-lf1-f68.google.com with SMTP id 2adb3069b0e04-51147d0abd1so2384481e87.1 for ; Sat, 10 Feb 2024 15:50:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609044; x=1708213844; darn=vger.kernel.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=nULGoBvrjPazMaReX9FXf3uprPHVFqensPMgM7zd3J0=; b=Ztvr1j+vWq8KHrlGO+JrHCEpW+dj5020sOzySAlrFPWkL7I2/KDSAg5hlfTp8ykMm6 feA3ej0NTV7gURHhjWF/kNwYWqOlGHm7FYkg8zeN+44Fri21U+AL3b+Jtn8VejHUDUhz ivtACn2mmKNm3pi16Is88SBzOsKkxdbSqaod8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609044; x=1708213844; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nULGoBvrjPazMaReX9FXf3uprPHVFqensPMgM7zd3J0=; b=HxRjkDUXtRFTcwNIHGKZ/qP1Ext7lQKywg5lpzMJwqXHpMoS+uLsl3tT9reXooFpwT w+sD//WgkkZbqLaWEkR/JGhWTaWevxOVHUKV3Moc2znBkthihAikxiWTaoINWKfI+jKa +oPCshGKYk0d+j+pDxnQgRs3De1iMBe64yIS21CpiqGTEs2lJrsfjOTSa7SBnoQ5MVSm ml1LuY7Dx5dmyMsYQ3quaK4E+VdF4AwUiPhdTY3UKesjpGUNzIaCP7epZnTPSriTJDK3 IBoOM0lF/ea3EpUYv2TPEooNGp8Ft26vSPMwn6wvb13xNcHiGdSS4qtKPypKbspP7jwg Jv4Q== X-Forwarded-Encrypted: i=1; AJvYcCVJUPIa0GkjApL3sm1+1lNWccbAK28TDfj4KI8JdhwDbbPWs5jAvoeRd7+4c0uVOJFz6KpXD08VPbtnvhYqYuuzW4gdjJwgl/IiWX+S X-Gm-Message-State: AOJu0Yz/6ePEZY79WMwHzXO9jPQ+czy280zMXZlJGEZqJ4519bYQn7gs ABvuCBIsqY0bfRqpsUQO/ubxjRbQ4RVFaRjlMVa1PGok3zij7brBH5ww5mP7 X-Google-Smtp-Source: AGHT+IH9Jz9goMpzOU5N74maDWBFb2Fsr0JIUy4m4DNWY9NXEblbSg69vo9fNVLQBzh56rpO/q40DA== X-Received: by 2002:a05:6512:2e9:b0:511:2e97:add2 with SMTP id m9-20020a05651202e900b005112e97add2mr1854012lfq.66.1707609044477; Sat, 10 Feb 2024 15:50:44 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCXQzzEwiN58SQb8vBfDQPtFpNaKYkBecdyHyEUZb8tbv73P3Ah9jV2pyLh9mjjU9J+ku92PzDwu4vY3zbwQOmObLeROtbnDLn6ep0xGE4s/a4Tg1UhwiRouuWZSgMtt3jOEowM51QT1+OR6BpPstnDsZDoCL3SSFOvQAeEOPwGlxuXwHt5bl5r9h+dNVVWs4hlnzobgTEEvLU+0/XRRM1IIEthZjcYc1i/p/Q+ay7r4ECMi7QVM75haNQIrhf7uMB2KeZ+J+tju2ZzF29fxrqTxLbnt0PZWnxeW7LbR4xaAcQvvU8nNKCjbk7SH6bcTcDMkPL2UtQM1zlPit6SPeSU6eGo1NtDibmR28maW1wmPwvyWkSKswNeQOslO5P9DnXdvpuSDV2bjoopPHZWG/5skswr1uRUkNNVsVkQIcqCxl+hjjcSDM2AlMucPFMOSVwxZfCRM6IGBihRYsGtDo0K9bOSl2Mxmy4Byl7spbFhAqayILLNjiVm5iSKYMXFSPtDRHQN7NzDEYFncM4leytKlBzazpsxaw1egd0usYZ75c+NsMylO4yH7hcx2/s+rcxbbZtOc6Aw0vWiW851AZ0n0djmYsd+kHtgXh8CiWN9mPlJXMg== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:44 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 09/39] dyndbg: add trace destination field to _ddebug Date: Sun, 11 Feb 2024 00:49:39 +0100 Message-ID: <20240210235009.2405808-10-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The trace destination field is used to determine output of debug logs when +T is set. Setting trace_dst value to 0 enables output to prdbg and devdbg trace events. Setting trace_dst value to a value in range of [1..63] enables output to trace instance. Signed-off-by: =C5=81ukasz Bartosik --- include/linux/dynamic_debug.h | 13 +++++++++++-- lib/dynamic_debug.c | 28 +++++++++++++++++++--------- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index a551b2967cb8..dc10c7535f13 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -60,9 +60,18 @@ struct _ddebug { #else #define _DPRINTK_FLAGS_DEFAULT 0 #endif - struct { + struct dd_ctrl { unsigned int flags:8; - unsigned unused:24; + /* + * The trace destination field is used to determine output of debug + * logs when +T is set. Setting trace_dst value to 0 enables output + * to prdbg and devdbg trace events. Setting trace_dst value to a + * value in range of [1..63] enables output to trace instance. + */ +#define TRACE_DST_BITS 6 + unsigned int trace_dst:TRACE_DST_BITS; +#define TRACE_DST_LAST (1 << TRACE_DST_BITS) + unsigned unused:18; } ctrl; } __attribute__((aligned(8))); =20 diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index f47cb76e0e3d..0dc9ec76b867 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -80,14 +80,24 @@ module_param(verbose, int, 0644); MODULE_PARM_DESC(verbose, " dynamic_debug/control processing " "( 0 =3D off (default), 1 =3D module add/rm, 2 =3D >control summary, 3 = =3D parsing, 4 =3D per-site changes)"); =20 +static inline struct dd_ctrl *get_ctrl(struct _ddebug *desc) +{ + return &desc->ctrl; +} + +static inline void set_ctrl(struct _ddebug *desc, struct dd_ctrl *ctrl) +{ + desc->ctrl =3D *ctrl; +} + static inline unsigned int get_flags(const struct _ddebug *desc) { return desc->ctrl.flags; } =20 -static inline void set_flags(struct _ddebug *desc, unsigned int val) +static inline unsigned int get_trace_dst(const struct _ddebug *desc) { - desc->ctrl.flags =3D val; + return desc->ctrl.trace_dst; } =20 /* Return the path relative to source root */ @@ -190,8 +200,8 @@ static int ddebug_change(const struct ddebug_query *que= ry, { int i; struct ddebug_table *dt; - unsigned int newflags; unsigned int nfound =3D 0; + struct dd_ctrl nctrl =3D {0}; struct flagsbuf fbuf, nbuf; struct ddebug_class_map *map =3D NULL; int __outvar valid_class; @@ -257,14 +267,14 @@ static int ddebug_change(const struct ddebug_query *q= uery, =20 nfound++; =20 - newflags =3D (get_flags(dp) & modifiers->mask) | modifiers->flags; - if (newflags =3D=3D get_flags(dp)) + nctrl.flags =3D (get_flags(dp) & modifiers->mask) | modifiers->flags; + if (!memcmp(&nctrl, get_ctrl(dp), sizeof(struct dd_ctrl))) continue; #ifdef CONFIG_JUMP_LABEL if (get_flags(dp) & _DPRINTK_FLAGS_ENABLED) { - if (!(newflags & _DPRINTK_FLAGS_ENABLED)) + if (!(nctrl.flags & _DPRINTK_FLAGS_ENABLED)) static_branch_disable(&dp->key.dd_key_true); - } else if (newflags & _DPRINTK_FLAGS_ENABLED) { + } else if (nctrl.flags & _DPRINTK_FLAGS_ENABLED) { static_branch_enable(&dp->key.dd_key_true); } #endif @@ -272,8 +282,8 @@ static int ddebug_change(const struct ddebug_query *que= ry, trim_prefix(dp->filename), dp->lineno, dt->mod_name, dp->function, ddebug_describe_flags(get_flags(dp), &fbuf), - ddebug_describe_flags(newflags, &nbuf)); - set_flags(dp, newflags); + ddebug_describe_flags(nctrl.flags, &nbuf)); + set_ctrl(dp, &nctrl); } } mutex_unlock(&ddebug_lock); --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com [209.85.167.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E3D8C6089D for ; Sat, 10 Feb 2024 23:50:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609049; cv=none; b=lLKlYqS4Q/vRZDY33dtVDi/BlpjhpdmB3G082g5XfPDGyYATlpHn4VjvL5EllsG1pqC+L8+k3vvPRqnnTGz8wV1xUfT7Lr2gIulOwCNjSQppqb0ZAOXPhASsF4A7MoZgVc7MBff3KpaF/lI2EG7YHneAFn7zVD+a+9UYoPSlZgs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609049; c=relaxed/simple; bh=auLLBjaM7NJ4bfEIN23dALRyRz9gbqEMOckQKBJQ810=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=TQDE39RUDjEKs0NS9lxKa5Hz/RTAE1ZGeoyCN/paPTD/44XufNHYk2hbD8iRpnnNhSeuxE9CWaDbf7RAH6UZAbxUEM3yd1T2uEG3+FjTr/5ZNEjE2ku3hCh2KutcjeLjCAIA8uvVI1SqXl0bYsLI424C+QL828XTBdhlarVuR+Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=j1k3Z5rt; arc=none smtp.client-ip=209.85.167.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="j1k3Z5rt" Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-51142b5b76dso3281284e87.2 for ; Sat, 10 Feb 2024 15:50:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609046; x=1708213846; darn=vger.kernel.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=kdad3Evs7q/LlRKkCSzkMMat3wm4/GWPiv0LyGMWHAo=; b=j1k3Z5rtUWmHRtmR3GJjUOn9dVhcpdRsqrXrRZwQMHMvD6o0uGtO7c/oQgoPm5TxV3 Nfbi1+l8iCEtj7KEQ6mG5wl72NLeQvmnZg+Uj1i+FUO1QMf6WiqKifMF69grRPTfJDAy NGrZC/Gkf9JUt1qcHHS68l4Jnh9mNfjqp/UsA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609046; x=1708213846; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kdad3Evs7q/LlRKkCSzkMMat3wm4/GWPiv0LyGMWHAo=; b=moRNomSsGlxa0cMCj3OGGHmeEEf4VKIKmLzN8Mgh1aUNFxiZOee0xfxvZYYD0SQR+W ZzGQTL4kTxzxEx2AQ4l7jBDZpZhU4YXPxf/pu4y8xyqgAbugSWUx57Z+1A/vcG5YPV4j RxSMIdLIlNOHqqYfwweIylxB+L1dx8JHQd6ZmL1ozIwQWgKinNAQgdqDAiLhWyJGi51y uMBo6sJQEnVM7CLw4X/syHfuSINKnWNfGDBBDKb8k1jHfKxBM3f0vQBAAIdA2DP99Bfj Pyusr10UaHQbIyVF1E+0kBasDXURbFlqIUqBCQDrUbSIuWo9dAMHaARAugB/jmu71YyQ I6nQ== X-Forwarded-Encrypted: i=1; AJvYcCX0QkbpL+2Qk+JmM5t3ayLzDbL3gCVfS6T6Vcv44uNMpUsR4pvcf/JhIzV4lVShYHDP/7WaiytUBmhikZNTOAQV8sclXL8Jw2Kv9nuc X-Gm-Message-State: AOJu0Ywo4P+Cx5COnruXP3YgLkIYSezlwQ+d4xRTKOf2hFOD9o2IbvF6 lJF9qBrDC4Zh6z8NY5yC/UPSkXoJpyDK3TUBxul3g6vxEZ8rkfZiY6LQz0Vs X-Google-Smtp-Source: AGHT+IGgphL4YPys733aQd2TzTyZFRMTG6XMpvAEKxpm96maridBg6WMFLXffARfWdF60h4quVSYWg== X-Received: by 2002:a05:6512:2246:b0:511:30fd:9223 with SMTP id i6-20020a056512224600b0051130fd9223mr2437424lfu.55.1707609046141; Sat, 10 Feb 2024 15:50:46 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUeEN/u1Ra7BheU7TL7DwOI0jDwcjxIBHsm8aVcbFuDjCj+dW8hZSBy5ZT1IwGGzhMw5TqcEYZW5wLWCkd75BpMVrWwv0pTLf9lPeFUYkvRpsXNIJYQoM/x9N3DpljZPErHGV+NaskAjRof7bcNxFFVArSMz+1KZ3He9pWp1rvkOUycnbKChd3gzROwFRP02mN3cc9YBhrqWVmgHNoKi/q+q/a27oa5bzQrXllzp4a0sJ43xUUPen/EGCHScoFFkEdsI+Ggw89WzKmE0FHyVD4TyZ4m1nM6JHfhKVkoGk0eWZp1Vy3w6QG5vl1yGIKHzwKVdN9Qx9JtoSydwDa8ZF4H4uOfhwWtxS2BbMO7PODELBbmLTJFqggZ4xlLDnO+1qzDCwmrNpmvyUq+G2h/F9HXOlGd2T67KhOtuEn2M34nuv+nlrfD8ZOHMKztDVkitd8AU3TI8Gl0YtAKhS2NyeXq0bSlU++yKM/XTobzRUzEVUY7f9VhAG1e3GgRvODesSnS2M/MJiuscLwLkoO5HAOiB8zxi/5mpDyTFMYw073n+OZq1QbBzOKvqBmAEVVTT1ayanfbV9xLgVeqjiTskDbm4VZJ3uBxOaSF7FmF/bZej21DGw== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:45 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 10/39] dyndbg: add open and close commands for trace Date: Sun, 11 Feb 2024 00:49:40 +0100 Message-ID: <20240210235009.2405808-11-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Add open and close commands for opening and closing trace instances. The open command has to be mandatory followed by a trace instance name. If a trace instance already exists in /tracing/instances directory then the open command will reuse it otherwise a new trace instance with a name provided to the open will be created. Close command closes previously opened trace instance. The close will fail if a user tries to close non-existent trace instances or an instance which was not previously opened. For example the following command will open (create or reuse existing) trace instance located in /tracing/instances/usbcore: echo "open usbcore" > /dynamic_debug/control Signed-off-by: =C5=81ukasz Bartosik --- lib/Kconfig.debug | 2 + lib/dynamic_debug.c | 194 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+) diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 975a07f9f1cc..01caf885d86b 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -110,6 +110,7 @@ config DYNAMIC_DEBUG default n depends on PRINTK depends on (DEBUG_FS || PROC_FS) + depends on TRACING select DYNAMIC_DEBUG_CORE help =20 @@ -181,6 +182,7 @@ config DYNAMIC_DEBUG_CORE bool "Enable core function of dynamic debug support" depends on PRINTK depends on (DEBUG_FS || PROC_FS) + depends on TRACING help Enable core functional support of dynamic debug. It is useful when you want to tie dynamic debug to your kernel modules with diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 0dc9ec76b867..d0d1057911e8 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -36,6 +36,7 @@ #include #include #include +#include =20 #define CREATE_TRACE_POINTS #include @@ -73,6 +74,27 @@ struct flag_settings { unsigned int mask; }; =20 +#define DD_OPEN_CMD "open" +#define DD_CLOSE_CMD "close" +#define DD_TR_EVENT "0" + +struct dd_private_tracebuf { + const char *name; + struct trace_array *arr; +}; + +/* + * Trace destination value 0 is reserved for writing + * debug logs to trace events (prdbg, devdbg), that + * is why buf[0] is not used and we traverse bitmap + * starting from bit 1 (bit 0 is also not used). + */ +struct dd_tracebuf_tbl_info { + struct dd_private_tracebuf buf[TRACE_DST_LAST]; + DECLARE_BITMAP(bmap, TRACE_DST_LAST); + int bmap_size; +}; + static DEFINE_MUTEX(ddebug_lock); static LIST_HEAD(ddebug_tables); static int verbose; @@ -80,6 +102,9 @@ module_param(verbose, int, 0644); MODULE_PARM_DESC(verbose, " dynamic_debug/control processing " "( 0 =3D off (default), 1 =3D module add/rm, 2 =3D >control summary, 3 = =3D parsing, 4 =3D per-site changes)"); =20 +static struct +dd_tracebuf_tbl_info trc_tbl =3D { .bmap_size =3D TRACE_DST_LAST }; + static inline struct dd_ctrl *get_ctrl(struct _ddebug *desc) { return &desc->ctrl; @@ -171,6 +196,145 @@ static void vpr_info_dq(const struct ddebug_query *qu= ery, const char *msg) query->first_lineno, query->last_lineno, query->class_string); } =20 +static bool is_dd_trace_cmd(const char *str) +{ + if (!strcmp(str, DD_OPEN_CMD) || !strcmp(str, DD_CLOSE_CMD)) + return true; + + return false; +} + +static bool dd_good_trace_name(const char *str) +{ + /* "0" is reserved for writing debug logs to trace events (prdbg, devdbg)= */ + if (!strcmp(str, DD_TR_EVENT)) + return false; + + /* we allow trace instance names to include ^\w+ and underscore */ + while (*str !=3D '\0') { + if (!isalnum(*str) && *str !=3D '_') + return false; + str++; + } + + return true; +} + +static int find_tr_instance(const char *name) +{ + int idx =3D 1; + + for_each_set_bit_from(idx, trc_tbl.bmap, trc_tbl.bmap_size) + if (!strcmp(trc_tbl.buf[idx].name, name)) + return idx; + + return -ENOENT; +} + +static int handle_trace_open_cmd(const char *arg) +{ + struct dd_private_tracebuf *buf; + int idx, ret =3D 0; + + mutex_lock(&ddebug_lock); + + /* bit 0 is not used, reserved for trace prdbg and devdbg events */ + idx =3D find_next_zero_bit(trc_tbl.bmap, trc_tbl.bmap_size, 1); + if (idx =3D=3D trc_tbl.bmap_size) { + ret =3D -ENOSPC; + goto end; + } + + if (!dd_good_trace_name(arg)) { + pr_err("invalid instance name:%s\n", arg); + ret =3D -EINVAL; + goto end; + } + + if (find_tr_instance(arg) >=3D 0) { + pr_err("instance is already opened name:%s\n", arg); + ret =3D -EEXIST; + goto end; + } + + buf =3D &trc_tbl.buf[idx]; + buf->name =3D kstrdup(arg, GFP_KERNEL); + if (!buf->name) { + ret =3D -ENOMEM; + goto end; + } + + buf->arr =3D trace_array_get_by_name(buf->name, NULL); + if (!buf->arr) { + pr_err("failed to get trace array name:%s", buf->name); + ret =3D -EINVAL; + goto end; + } + + ret =3D trace_array_init_printk(buf->arr); + if (ret) { + pr_err("failed to init trace array name:%s", buf->name); + trace_array_put(buf->arr); + trace_array_destroy(buf->arr); + goto end; + } + + set_bit(idx, trc_tbl.bmap); + v3pr_info("opened trace instance idx=3D%d, name=3D%s\n", idx, arg); +end: + mutex_unlock(&ddebug_lock); + return ret; +} + +static int handle_trace_close_cmd(const char *arg) +{ + struct dd_private_tracebuf *buf; + int idx, ret =3D 0; + + mutex_lock(&ddebug_lock); + + idx =3D find_tr_instance(arg); + if (idx < 0) { + ret =3D idx; + goto end; + } + + buf =3D &trc_tbl.buf[idx]; + + trace_array_put(buf->arr); + /* + * don't destroy trace instance but let user do it manually + * with rmdir command at a convenient time later, if it is + * destroyed here all debug logs will be lost + * + * trace_array_destroy(inst->arr); + */ + buf->arr =3D NULL; + + kfree(buf->name); + buf->name =3D NULL; + + clear_bit(idx, trc_tbl.bmap); + v3pr_info("closed trace instance idx=3D%d, name=3D%s\n", idx, arg); +end: + mutex_unlock(&ddebug_lock); + return ret; +} + +static int ddebug_parse_cmd(char *words[], int nwords) +{ + if (nwords !=3D 1) + return -EINVAL; + + if (!strcmp(words[0], DD_OPEN_CMD)) + return handle_trace_open_cmd(words[1]); + if (!strcmp(words[0], DD_CLOSE_CMD)) + return handle_trace_close_cmd(words[1]); + + pr_err("invalid command %s\n", words[0]); + return -EINVAL; +} + static struct ddebug_class_map *ddebug_find_valid_class(struct ddebug_tabl= e const *dt, const char *class_string, int *class_id) { @@ -567,6 +731,11 @@ static int ddebug_exec_query(char *query_string, const= char *modname) pr_err("tokenize failed\n"); return -EINVAL; } + + /* check for open, close commands */ + if (is_dd_trace_cmd(words[0])) + return ddebug_parse_cmd(words, nwords-1); + /* check flags 1st (last arg) so query is pairs of spec,val */ if (ddebug_parse_flags(words[nwords-1], &modifiers)) { pr_err("flags parse failed\n"); @@ -1191,6 +1360,20 @@ static struct _ddebug *ddebug_iter_next(struct ddebu= g_iter *iter) return &iter->table->ddebugs[iter->idx]; } =20 +/* + * Check if the iterator points to the last _ddebug object + * to traverse. + */ +static bool ddebug_iter_is_last(struct ddebug_iter *iter) +{ + if (iter->table =3D=3D NULL) + return false; + if (iter->idx-1 < 0 && + list_is_last(&iter->table->link, &ddebug_tables)) + return true; + return false; +} + /* * Seq_ops start method. Called at the start of every * read() call from userspace. Takes the ddebug_lock and @@ -1281,6 +1464,17 @@ static int ddebug_proc_show(struct seq_file *m, void= *p) } seq_puts(m, "\n"); =20 + if (ddebug_iter_is_last(iter) && + !bitmap_empty(trc_tbl.bmap, trc_tbl.bmap_size)) { + int idx =3D 1; + + seq_puts(m, "\n"); + seq_puts(m, "#: Opened trace instances:"); + for_each_set_bit_from(idx, trc_tbl.bmap, trc_tbl.bmap_size) + seq_printf(m, " %s", trc_tbl.buf[idx].name); + seq_puts(m, "\n"); + } + return 0; } =20 --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f65.google.com (mail-lf1-f65.google.com [209.85.167.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8405960B95 for ; Sat, 10 Feb 2024 23:50:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609051; cv=none; b=Cwt9ksBEJJ6OPv3CbeVFJegy9szeXTJmwrmzCpm+qITI6NsuDXl+xQZ8zSydLhPlG9pgNPAoifjw4OyU0Dzc44Nt4OtGl/UklkMPuw+dc0ufs923KRnQOqlMI6W6WC3akeGzW1sGBxQ207vc6jlZGAtgtSKNPKcgqPkBTvklH0g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609051; c=relaxed/simple; bh=Q12PHdJJNT6cHmzxSgqa8vX7kdu2nXbasdwo0iTu/C4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=omRkYFqhbgsu0KlcttnZIu9SdBYz/oP56QYA6skxxXcTjk8Cvxr+3fwyo4Upe/CVpna0H0b8+Qsqyg5rLQxB2aEYCX2jB/Tjn/ByttyrrjkN7lpboDsWpihJvfXdyIzVWfkC3Qx0Ne5QU0tjUZzYFlUv89uT2ARj0UKm4tNkp2I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=M9RUtWqF; arc=none smtp.client-ip=209.85.167.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="M9RUtWqF" Received: by mail-lf1-f65.google.com with SMTP id 2adb3069b0e04-51167e470f7so2650892e87.2 for ; Sat, 10 Feb 2024 15:50:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609047; x=1708213847; darn=vger.kernel.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=457Ak5D/cnjLkQBnQYpRWcf9B+gpaO4d0gKyEUhhPYE=; b=M9RUtWqFgbfNjL/ujjQKLYU58wc9EE6hmHq9m6CiyVWgKtD7VxiGti44i/3fPYLL16 z8aLItMeLvn1Hyalj4fOX6uzq8ec8gmVYJndgdWmijAzCYBP6AYJKtXreeM/i2//DKcT eC4l2FQqoyeZZwewlVjoJszMHqcdfE4oNqwuo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609047; x=1708213847; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=457Ak5D/cnjLkQBnQYpRWcf9B+gpaO4d0gKyEUhhPYE=; b=qedTKKZcoR26edBZHrBnS78DJhb4oji+Ml2j0GCszOxPYR2EP/HpAP2EJWbXOA6QYI Ai5n8wOdmcMDRCiEtHB18crze/0Zq/kVsLGoWkETz7CKlllPVGbQWgL1D5se6mJIJBk+ DLGvvDeBY2tRNau5wvO9YgoMxic5b3cAIohUwgMl96QsbZPb+76ss2R1jO163xQwS07A ENEXRCkONh4acwmyAntb1DGum24tQGU1A1G3wZ2yRMQ3Zst6IipAbQGO3c9V0BBDJ9XH OWt/7syBNUw2dWlTs5X/IRVli/q/Bc+GZKCf2XXnQdmYX7gFV7/klU9sEx5AE7qe8IRy Z2FA== X-Gm-Message-State: AOJu0Yze5yprBJfTistUbzVxXSjGm3+tOX+YMz9X0ksXE+bL1zBT6DoE fafqME8sjmoSj39zBuinWWJSxawIyF5/lXiUP+UNTlQmMMoSzno5jCrNc5Sw X-Google-Smtp-Source: AGHT+IF2WK1Sqffff5PRQjQ9LGF5zxyr3gIbv8QLdCy7WpmHqkqPSkC53Mu1MWGOy6JV6ZHSb0yKrQ== X-Received: by 2002:a19:7506:0:b0:511:82a9:d1ba with SMTP id y6-20020a197506000000b0051182a9d1bamr1457500lfe.28.1707609047708; Sat, 10 Feb 2024 15:50:47 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCW5raDEuSR4hlFmQbaPuUFU4U8r0QGr8yRF5A8pn4yL7EjCSmrvGldSg/Vy19lmZaBy+BKzxBQuiYTaQcreViEjFFImhUvmVpfNLo33gr2HMooqImQOycKUXFwISZAoC2LL+7cM/+fhFeJHpyrU/EU7rKzrnNl5wzuJzoY6JcM6qvi5eRe4E04nLrIKT6A42tPYtsL7po0+yrgEPnzx5enJ8Cncytm6iuw+bg120c8soKGLxAn0MCR2Pwjc16IxvIOsg0+z6BPbXWrkkDhN+WqZq58jZsYOedfiidvpEYQHz8Mw2uTpT8Rd0nnQaniDcPoRZRpXPCLY1jaoRoKVgPb1pijLsiL+k035seqfeWWl8JNSuZ4GYHSEZPtd9p4a8ZjpjKHfPJWDydaFJ5yqVMxZpj3BQ2F2GyV9TvgP0OEWXpxOv6Jexnof8/B929zA+MIlvy4GxbgUQWHAm1mvG+Te/e3zOcS+kgjENNNRKRG0WZFvLYzp1CqhAqFhdeCzM/MhwwUJK7roJu84fAuFrPvagLBcdLj3y0mE+vGIoiI9hxhLnPU4jzmSsZsT0SzShc9xEIPgmtn7FqGc7lXff2IjHezQbhOQgWKmhOj9aWewVW1vZw== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:47 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 11/39] dyndbg: don't close trace instance when in use Date: Sun, 11 Feb 2024 00:49:41 +0100 Message-ID: <20240210235009.2405808-12-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Don't allow trace instance to be closed when it is still being used by at least one callsite. Signed-off-by: =C5=81ukasz Bartosik --- lib/dynamic_debug.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index d0d1057911e8..6668f265f2c3 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -81,6 +81,7 @@ struct flag_settings { struct dd_private_tracebuf { const char *name; struct trace_array *arr; + int use_cnt; }; =20 /* @@ -279,6 +280,7 @@ static int handle_trace_open_cmd(const char *arg) goto end; } =20 + buf->use_cnt =3D 0; set_bit(idx, trc_tbl.bmap); v3pr_info("opened trace instance idx=3D%d, name=3D%s\n", idx, arg); end: @@ -301,6 +303,14 @@ static int handle_trace_close_cmd(const char *arg) =20 buf =3D &trc_tbl.buf[idx]; =20 + WARN_ON(buf->use_cnt < 0); + if (buf->use_cnt) { + pr_err("trace instance is being used name=3D%s, use_cnt=3D%d\n", + buf->name, buf->use_cnt); + ret =3D -EBUSY; + goto end; + } + trace_array_put(buf->arr); /* * don't destroy trace instance but let user do it manually @@ -321,6 +331,22 @@ static int handle_trace_close_cmd(const char *arg) return ret; } =20 +static +void update_tr_dst(const struct _ddebug *desc, const struct dd_ctrl *nctrl) +{ + int odst =3D get_trace_dst(desc); + int ndst =3D nctrl->trace_dst; + + if (odst =3D=3D ndst) + return; + + if (odst) + trc_tbl.buf[odst].use_cnt--; + + if (ndst) + trc_tbl.buf[ndst].use_cnt++; +} + static int ddebug_parse_cmd(char *words[], int nwords) { if (nwords !=3D 1) @@ -447,6 +473,7 @@ static int ddebug_change(const struct ddebug_query *que= ry, dt->mod_name, dp->function, ddebug_describe_flags(get_flags(dp), &fbuf), ddebug_describe_flags(nctrl.flags, &nbuf)); + update_tr_dst(dp, &nctrl); set_ctrl(dp, &nctrl); } } @@ -1628,6 +1655,14 @@ int ddebug_dyndbg_module_param_cb(char *param, char = *val, const char *module) =20 static void ddebug_table_free(struct ddebug_table *dt) { + int dst, i; + + for (i =3D 0; i < dt->num_ddebugs; i++) { + dst =3D get_trace_dst(&dt->ddebugs[i]); + if (dst) + trc_tbl.buf[dst].use_cnt--; + } + list_del_init(&dt->link); kfree(dt); } --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4AD0060BB8 for ; Sat, 10 Feb 2024 23:50:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609053; cv=none; b=abckQW7o9xHfBjbo4iaQY3qgfUdzKCDGA20k5Gs6/os5c84i45L5DFv9MlKlgyYgUxcd7hD2oL6L3NEiVYxsceozyQbDPv9ROX9YyC1UzwAkSrsJSzDgXpR2mNAAVsZOV/v3N9wCgW88MDydzSfYrCwiXXKfewW1iaxEMBQf1vc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609053; c=relaxed/simple; bh=YbEEGz+x4DGalh89sTCHjKKTuGvWKdWzObsdPhFL1wQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=GtQiTygtl2sUtW1hf2Ua1D0ErCMZYjYgp4I2sC0Xq4OT/CHawbEAkhBeXa4ICxTp+wcw2yQRKmhJ77Ar43JpJKvEPqoFyMMT3piWa8bFbaeNZPY7w45uYCa1El4nJiLjksTtad3BrCyfujyP/TLCfb4J2mPeSotZKgXfU4dYHdI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=NEc68OHh; arc=none smtp.client-ip=209.85.167.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="NEc68OHh" Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-511531f03f6so2471383e87.0 for ; Sat, 10 Feb 2024 15:50:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609049; x=1708213849; darn=vger.kernel.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=VfKj9NP/58mMOcfaMc+gvbzTB/hMk+FrCsCCziFkNU8=; b=NEc68OHhXtTFO9xYinVIt81NO9lLr6U0JS87MQ1dGhZUiVuJmoX3p81Jy7Q2nZApXS NR0FnMH29PvJN0IE9PyPYu+1k7VVfcIOCoYXyS1v88XafT98mFaupl5spRmLtK/TCvJP eEbt/R4YdKUUueytTUHchHue6CMDOtAZ5hY78= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609049; x=1708213849; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VfKj9NP/58mMOcfaMc+gvbzTB/hMk+FrCsCCziFkNU8=; b=AO5obeQEHMZuBqIswlHoZ8DufvI5nO0CYLOWGLPoCV5CDFluqXCLjmUwuFBzSp6Ep2 d4jJDE8U6DFHliFdpatqBmZwoWcZCowULxVxV70KxKOt5qzc9vGe0gTXAQ3tl4oCvsya 2sSeQUcORo2J8poYHmw07fenYX6wmGNVddR9Zq22y8f8LDp6pQUK6rFciETxJr2Cg2Y8 dzg2MmytJtV6+2/9RFGKRGUsPAu+uSresnusTIHa1E8w1aYSSEzeokkZlw7vfm6dx7Yz LKxVxB12aQqLp9imcPokCmI33UxUrNDZjIDMCNfp8NZlIThtSdi3jfxzEU3ZY0gdAX26 ELdQ== X-Forwarded-Encrypted: i=1; AJvYcCVv5VOnK1IitUVv0Ky+pTzOWnPA048Y0eUb3BvXeQlgHirEf4MFLxBsBn9w3qYwSj3MNqa4YiDvxg9Md07EDDRi2wWstPlo0++Ynlrt X-Gm-Message-State: AOJu0YyR/GNSZvyUfSgqy5qrvZPA2WtCAQeadg9xKda+yuy4Fs4IVqtQ bQ8+o2nt2u6EgXm4qqLKFlDonEx9M3kJUmezmo729gWeYPM4t2WuaK9/pvse X-Google-Smtp-Source: AGHT+IEMeYfZnOf0yaY+29yzBa+kP9IAL7RSPWIsbe26MGx1+KFL1LNJu7LVSCR4N5UhimZdw7e8gg== X-Received: by 2002:a05:6512:3494:b0:511:29ee:83b8 with SMTP id v20-20020a056512349400b0051129ee83b8mr1734783lfr.62.1707609049402; Sat, 10 Feb 2024 15:50:49 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUnsHsChtMY0XIdk/Tmra55cNHHohds/OiiSOJLv0iBqWdC10K+YsgbEEMMOPsB3XJbsSI9NoifHRtdkIOnt8nhTBwoEUIWQFELx7VPy3kr5rvDa+HIrOhzWFGXASHJahCFj0felYnPLIDmbBHjsuw4R+X8Nu4c46DhDTT2LUs3rfA/DSm8yihWmkKno1ZXluMLqdlRVrDe6bZpV1oSI7QTYxoc0MazdDiSEldCMtbJV/DvNht6h8Xp1dF6wX9yMWqM62Pu6mk4LpSR1gsGOilSy5C+01lrHoW3a91i/dKJKjiUp+dZaPrF9tBlkm2D8fUGqo2EwsvunTwLZy5Hsmt8M1HhHmmuZr1mjoMoWl/vatS3+R2Cfysoq2629ZIKOEim1xDUh5UXf595ug8JUu/FafXFRmCUHKu06nCNct70PsSKiG9t9KeFGnpsLqhIG8Qrye0gEat0A853slueNJ2Tkv/xYPB/a99MpnFX+lIumz1pJNF3KcwDCJsOSns0/yTgleI8cowwpjn5w079sIIdynDazFUZ8Pnz5uGxq+L1uA/SGRiXhNIATE1qNVl6yvmkqEiOWROuoi9ScBWc1VxBYjPt8vnCtUPojnMyIK8p+RKKig== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:49 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 12/39] dyndbg: handle [+T]:buf_name.flags grammar Date: Sun, 11 Feb 2024 00:49:42 +0100 Message-ID: <20240210235009.2405808-13-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Add processing to handle the new [+T]:trace_name.flags grammar. The name provided sets selected callsites' trace-destinations: "0" - pr_debug()s are written to prdbg and devdbg trace events. name - pr_debug()s are written to named trace instance, if its already been open'd, else err. A user can provide trace destination name by following T flag with ":" and trace destination name, for example: echo "module thunderbolt =3DpT:tbt" > /dynamic_debug/control echo "module thunderbolt =3DlT:tbt.p" > /dynamic_debug/control Or user can provide only ":" and trace destination name, for example: echo "module thunderbolt =3Dp:tbt" > /dynamic_debug/control echo "module thunderbolt =3Dl:tbt.p" > /dynamic_debug/control In the former examples trace destination is set (":tbt") and write of pr_debug()s is enabled ("T"). In the latter examples only trace destination is set (":tbt") for later use. When T flag with argument is followed by other flag then the next flag has to be preceded with ".". When both T flag and ":" are provided together then ":" has to follow T flag in the form of "T:". Use of "." as a separator between flags allows a later patch to treat ',' as a space, which mostly eliminates the need to quote query/rules. And this in turn avoids quoting hassles: modprobe test_dynamic_debug dyndbg=3Dclass,D2_CORE,+p It is particularly good for passing boot-args into test-scripts. vng -p 4 -v \ -a test_dynamic_debug.dyndbg=3Dclass,D2_CORE,+p Signed-off-by: =C5=81ukasz Bartosik Co-developed-by: Jim Cromie Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 201 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 162 insertions(+), 39 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 6668f265f2c3..8a81356c52b3 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -72,6 +72,7 @@ struct ddebug_iter { struct flag_settings { unsigned int flags; unsigned int mask; + unsigned int trace_dst; }; =20 #define DD_OPEN_CMD "open" @@ -84,11 +85,17 @@ struct dd_private_tracebuf { int use_cnt; }; =20 +#define DST_NOT_SET (-1) + /* - * Trace destination value 0 is reserved for writing - * debug logs to trace events (prdbg, devdbg), that - * is why buf[0] is not used and we traverse bitmap - * starting from bit 1 (bit 0 is also not used). + * When trace is enabled (T flag is set) and trace destination field + * value is in range [1..63] then debug logs will be written to trace + * instance whose name is stored in buf[trace destination].name, e.g. + * when trace destination value is 2 and buf[2].name is set to tbt then + * debug logs will be written to /tracing/instances/tbt. + * On the other hand trace destination value 0 is reserved for writing + * debug logs to trace events (prdbg, devdbg), that is why buf[0] is not + * used and we traverse bitmap starting from bit 1 (bit 0 is also not used= ). */ struct dd_tracebuf_tbl_info { struct dd_private_tracebuf buf[TRACE_DST_LAST]; @@ -126,6 +133,81 @@ static inline unsigned int get_trace_dst(const struct = _ddebug *desc) return desc->ctrl.trace_dst; } =20 +static int find_tr_instance(const char *name) +{ + int idx =3D 1; + + for_each_set_bit_from(idx, trc_tbl.bmap, trc_tbl.bmap_size) + if (!strcmp(trc_tbl.buf[idx].name, name)) + return idx; + + return -ENOENT; +} + +static const +char *read_colon_args(const char *str, struct flag_settings *modifiers) +{ + int len, idx =3D 0; + char *end; + + /* Check if trace destination was already set */ + if (modifiers->trace_dst !=3D DST_NOT_SET) + return NULL; + /* + * When both T flag and ':' are provided then the T flag + * has to be followed by ':' in the form of 'T:'. + */ + if (modifiers->flags & _DPRINTK_FLAGS_TRACE && + *(str-1) !=3D 'T') + return NULL; + + if (strchr(str, 'T')) + return NULL; + + str++; + end =3D strchr(str, '.'); + if (end) { + len =3D end - str; + *end =3D '\0'; + } else + len =3D strlen(str); + len -=3D 1; + + /* destination trace events */ + if (!strcmp(str, DD_TR_EVENT)) + goto end; + + idx =3D find_tr_instance(str); + if (idx < 0) + return NULL; +end: + modifiers->trace_dst =3D idx; + return end ? end : str + len; +} + +/* + * Maximum number of characters which are being displayed when + * printing trace instance name, longer names are truncated + */ +#define FLAG_COLON_ARG_LEN 24 + +static char *show_colon_args(struct dd_ctrl *ctrl, char *p) +{ + int n, len =3D FLAG_COLON_ARG_LEN; + const char *str; + + str =3D !ctrl->trace_dst ? DD_TR_EVENT : + trc_tbl.buf[ctrl->trace_dst].name; + + n =3D snprintf(p, len, "%s", str); + if (n >=3D len) { + strscpy(&p[len-4], "...", 4); + n =3D len - 1; + } + + return n < 0 ? p : p + n; +} + /* Return the path relative to source root */ static inline const char *trim_prefix(const char *path) { @@ -137,9 +219,28 @@ static inline const char *trim_prefix(const char *path) return path + skip; } =20 -static const struct { unsigned flag:8; char opt_char; } opt_array[] =3D { +typedef const char* (*read_flag_args_f)(const char *, struct flag_settings= *); +typedef char* (*show_flag_args_f)(struct dd_ctrl *, char *); + +static const struct +{ + unsigned flag:8; + char opt_char; + bool always_show; + read_flag_args_f read_args; + show_flag_args_f show_args; +} opt_array[] =3D { { _DPRINTK_FLAGS_PRINTK, 'p' }, { _DPRINTK_FLAGS_TRACE, 'T' }, + /* + * We don't reserve a flag for ':'. The ':' is used to provide + * trace destination name and when provided together with T flag + * it enables output to the trace destination. When ':' is provided + * without T flag then it sets trace destination for a callsite for + * future use. When both T flag and ':'are provided together then + * ':' has to follow T flag in the form of 'T:'. + */ + { _DPRINTK_FLAGS_NONE, ':', true, read_colon_args, show_colon_args }, { _DPRINTK_FLAGS_INCL_MODNAME, 'm' }, { _DPRINTK_FLAGS_INCL_FUNCNAME, 'f' }, { _DPRINTK_FLAGS_INCL_SOURCENAME, 's' }, @@ -148,22 +249,31 @@ static const struct { unsigned flag:8; char opt_char;= } opt_array[] =3D { { _DPRINTK_FLAGS_NONE, '_' }, }; =20 -struct flagsbuf { char buf[ARRAY_SIZE(opt_array)+1]; }; +struct ctrlbuf { char buf[ARRAY_SIZE(opt_array)+FLAG_COLON_ARG_LEN+1]; }; =20 /* format a string into buf[] which describes the _ddebug's flags */ -static char *ddebug_describe_flags(unsigned int flags, struct flagsbuf *fb) +static char *ddebug_describe_ctrl(struct dd_ctrl *ctrl, struct ctrlbuf *cb) { - char *p =3D fb->buf; + show_flag_args_f show_args =3D NULL; + char *p =3D cb->buf; int i; =20 for (i =3D 0; i < ARRAY_SIZE(opt_array); ++i) - if (flags & opt_array[i].flag) + if (ctrl->flags & opt_array[i].flag || + opt_array[i].always_show) { + if (show_args) + *p++ =3D '.'; *p++ =3D opt_array[i].opt_char; - if (p =3D=3D fb->buf) + show_args =3D opt_array[i].show_args; + if (show_args) + p =3D show_args(ctrl, p); + } + + if (p =3D=3D cb->buf) *p++ =3D '_'; *p =3D '\0'; =20 - return fb->buf; + return cb->buf; } =20 #define vnpr_info(lvl, fmt, ...) \ @@ -221,17 +331,6 @@ static bool dd_good_trace_name(const char *str) return true; } =20 -static int find_tr_instance(const char *name) -{ - int idx =3D 1; - - for_each_set_bit_from(idx, trc_tbl.bmap, trc_tbl.bmap_size) - if (!strcmp(trc_tbl.buf[idx].name, name)) - return idx; - - return -ENOENT; -} - static int handle_trace_open_cmd(const char *arg) { struct dd_private_tracebuf *buf; @@ -383,7 +482,7 @@ static struct ddebug_class_map *ddebug_find_valid_class= (struct ddebug_table cons * Search the tables for _ddebug's which match the given `query' and * apply the `flags' and `mask' to them. Returns number of matching * callsites, normally the same as number of changes. If verbose, - * logs the changes. Takes ddebug_lock. + * logs the changes. */ static int ddebug_change(const struct ddebug_query *query, struct flag_settings *modifiers) @@ -391,13 +490,12 @@ static int ddebug_change(const struct ddebug_query *q= uery, int i; struct ddebug_table *dt; unsigned int nfound =3D 0; + struct ctrlbuf cbuf, nbuf; struct dd_ctrl nctrl =3D {0}; - struct flagsbuf fbuf, nbuf; struct ddebug_class_map *map =3D NULL; int __outvar valid_class; =20 /* search for matching ddebugs */ - mutex_lock(&ddebug_lock); list_for_each_entry(dt, &ddebug_tables, link) { =20 /* match against the module name */ @@ -458,7 +556,8 @@ static int ddebug_change(const struct ddebug_query *que= ry, nfound++; =20 nctrl.flags =3D (get_flags(dp) & modifiers->mask) | modifiers->flags; - if (!memcmp(&nctrl, get_ctrl(dp), sizeof(struct dd_ctrl))) + nctrl.trace_dst =3D modifiers->trace_dst; + if (!memcmp(&nctrl, get_ctrl(dp), sizeof(nctrl))) continue; #ifdef CONFIG_JUMP_LABEL if (get_flags(dp) & _DPRINTK_FLAGS_ENABLED) { @@ -471,13 +570,12 @@ static int ddebug_change(const struct ddebug_query *q= uery, v4pr_info("changed %s:%d [%s]%s %s =3D> %s\n", trim_prefix(dp->filename), dp->lineno, dt->mod_name, dp->function, - ddebug_describe_flags(get_flags(dp), &fbuf), - ddebug_describe_flags(nctrl.flags, &nbuf)); + ddebug_describe_ctrl(&dp->ctrl, &cbuf), + ddebug_describe_ctrl(&nctrl, &nbuf)); update_tr_dst(dp, &nctrl); set_ctrl(dp, &nctrl); } } - mutex_unlock(&ddebug_lock); =20 if (!nfound && verbose) pr_info("no matches for query\n"); @@ -698,6 +796,7 @@ static int ddebug_parse_query(char *words[], int nwords, */ static int ddebug_parse_flags(const char *str, struct flag_settings *modif= iers) { + read_flag_args_f read_args; int op, i; =20 switch (*str) { @@ -716,6 +815,12 @@ static int ddebug_parse_flags(const char *str, struct = flag_settings *modifiers) for (i =3D ARRAY_SIZE(opt_array) - 1; i >=3D 0; i--) { if (*str =3D=3D opt_array[i].opt_char) { modifiers->flags |=3D opt_array[i].flag; + read_args =3D opt_array[i].read_args; + if (read_args) { + str =3D read_args(str, modifiers); + if (!str) + return -EINVAL; + } break; } } @@ -724,7 +829,7 @@ static int ddebug_parse_flags(const char *str, struct f= lag_settings *modifiers) return -EINVAL; } } - v3pr_info("flags=3D0x%x\n", modifiers->flags); + v3pr_info("flags=3D0x%x, trace_dest=3D0x%x\n", modifiers->flags, modifier= s->trace_dst); =20 /* calculate final flags, mask based upon op */ switch (op) { @@ -747,7 +852,7 @@ static int ddebug_parse_flags(const char *str, struct f= lag_settings *modifiers) =20 static int ddebug_exec_query(char *query_string, const char *modname) { - struct flag_settings modifiers =3D {}; + struct flag_settings modifiers =3D { .trace_dst =3D DST_NOT_SET }; struct ddebug_query query =3D {}; #define MAXWORDS 9 int nwords, nfound; @@ -763,20 +868,38 @@ static int ddebug_exec_query(char *query_string, cons= t char *modname) if (is_dd_trace_cmd(words[0])) return ddebug_parse_cmd(words, nwords-1); =20 - /* check flags 1st (last arg) so query is pairs of spec,val */ - if (ddebug_parse_flags(words[nwords-1], &modifiers)) { - pr_err("flags parse failed\n"); - return -EINVAL; - } if (ddebug_parse_query(words, nwords-1, &query, modname)) { pr_err("query parse failed\n"); return -EINVAL; } + + /* + * Both ddebug_parse_flags and ddebug_change have to be run + * with locking because ddebug_parse_flags->read_T_args verifies + * if a requested trace instance is opened. Next ddebug_change + * sets the requested trace instance as output for debug logs of + * callsite(s) which matched a query. Because ddebug_proc_write + * function can be called concurrently then without locking we + * could for example run into a scenario where ddebug_change uses + * a trace instance which is already closed. + */ + mutex_lock(&ddebug_lock); + + /* check flags 1st (last arg) so query is pairs of spec,val */ + if (ddebug_parse_flags(words[nwords-1], &modifiers)) { + pr_err("flags parse failed\n"); + goto err; + } + /* actually go and implement the change */ nfound =3D ddebug_change(&query, &modifiers); - vpr_info_dq(&query, nfound ? "applied" : "no-match"); =20 + mutex_unlock(&ddebug_lock); + vpr_info_dq(&query, nfound ? "applied" : "no-match"); return nfound; +err: + mutex_unlock(&ddebug_lock); + return -EINVAL; } =20 /* handle multiple queries in query string, continue on error, return @@ -1466,7 +1589,7 @@ static int ddebug_proc_show(struct seq_file *m, void = *p) { struct ddebug_iter *iter =3D m->private; struct _ddebug *dp =3D p; - struct flagsbuf flags; + struct ctrlbuf cbuf; char const *class; =20 if (p =3D=3D SEQ_START_TOKEN) { @@ -1478,7 +1601,7 @@ static int ddebug_proc_show(struct seq_file *m, void = *p) seq_printf(m, "%s:%u [%s]%s =3D%s \"", trim_prefix(dp->filename), dp->lineno, iter->table->mod_name, dp->function, - ddebug_describe_flags(get_flags(dp), &flags)); + ddebug_describe_ctrl(&dp->ctrl, &cbuf)); seq_escape_str(m, dp->format, ESCAPE_SPACE, "\t\r\n\""); seq_puts(m, "\""); =20 --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f66.google.com (mail-lf1-f66.google.com [209.85.167.66]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DEB1860DDE for ; Sat, 10 Feb 2024 23:50:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609055; cv=none; b=p8w+kqPb5+Ml4woWBwO3+vQLhI6DWd19TM4ozKJxo2I34tbDz34zJfi+ggIBaOYP75QEhgRZUi87bG/QJbTAoY1GXfD9i7Jee9mFFrniDVWqEAIZz2BQFWapHeUWsw5zCUhjeZaw8gBnI7ezkBac3y3hMUTJIrEfz2LQAFbBJEw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609055; c=relaxed/simple; bh=u2qVSn/FGDyWuMOo3N00MhELB4fJ8yoJ1hYXCFG65Mc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=nfZQN9IfnQJdSEhWDVIDzql7sRKog9X2lrQGNPBNmDHb6WM1NeBrYHJf6F83XBymZcnbTJEb/zzHNL+59Kdf4odng80gBjgvvpZJG2Lc72WsFqT1zOOkCMH8UEWmkr+bn2UmtWsX9U45C7T3BqIJ3ut9xK7BF1wP9Fse0bdp61Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=RPIx63a4; arc=none smtp.client-ip=209.85.167.66 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="RPIx63a4" Received: by mail-lf1-f66.google.com with SMTP id 2adb3069b0e04-51185c33626so552146e87.0 for ; Sat, 10 Feb 2024 15:50:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609051; x=1708213851; darn=vger.kernel.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=EK4jXgQTQp2lbOreR5SqRb2MAnJAgwo9xsz57it33Vs=; b=RPIx63a4o2BwKHCauRs0zajXqZzO05H87Cf197Aznr5wRPT9O11Fybmhyg29gUWolY YhutaMRuh+AfO3t5Uhrml1yY6WbA1DBPuJcz1y+QXqEMNzskS8fzZIyFHHWFIotVC3ex RTQ4rsOXdSE5Dr2mu5LW+YBu5PkdSbO4DATxI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609051; x=1708213851; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EK4jXgQTQp2lbOreR5SqRb2MAnJAgwo9xsz57it33Vs=; b=uwiqmM8j9Ntf3t0d4t+fSdrmiJyQdLq6CkKHCpGhe6nz4cMw+kEPGpVrmiec9aIcFl UTI70GeebWoDMfgYkTNkIBjN24ICQnTsmQxzpkEQ+uGS1qzr+sktaXVFJWncRziFCKbB hCELKDNgwkRQb6aNJoPNZzMcS2JkQm5r0CyFCgagygFpX7LquOLNgZJHxgegnQSdHHci SLnHY1K/7omhRI2R3vlfj7MuArHanrh1j7FqgC1Abn9iSUG5qaUidoQR7LWYEeOFWCra c15KH5vU1k65joiJe8z5/e4Js8v36CTFHdTkNcyH1JNnmwPMhCXhMb9GxBj4xs+vegWH T8tg== X-Forwarded-Encrypted: i=1; AJvYcCXl7K9UygliWZpjECmNXGU1a0ReNbQ9Tpe+q5M+rYZtlOgOXZQ42ajESlwnmK3AeGoNJBBWZZY4nbyuOahTO1zL4Z4pO/cdhsCEBj3P X-Gm-Message-State: AOJu0YzolMMSCgLU2vp5/sl8DKHHaymksmohi1jAI8u+ep/hYyU+9fJR v27owCWfEMLUNaX2iPXzUvsz3OJwzYTxDZFfn1v0ypERdiit+UuIUFq/kJ4y X-Google-Smtp-Source: AGHT+IEstMixyEwWqeSZQ/X3zEh3uqpp8edbWB1NLAA+j80NFhwYDA2Z08WzFiZGNgSlObYsvjHjnA== X-Received: by 2002:ac2:5dce:0:b0:511:6256:3b8d with SMTP id x14-20020ac25dce000000b0051162563b8dmr1861642lfq.5.1707609050996; Sat, 10 Feb 2024 15:50:50 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWz64HlI6AGfZ/sg9YFNQ4r9IRaz51l0COS2ktSKlNFhr7W0V+57It/68zPPZYOi3b+T58YayTS4SGlyBG2nUEe1Y21Sh8Bm0zI9Ha8QNRXWiywXUNoOKG9N2kk2sNiiqYyKuB2OxNEzcPftzzcsAWQbtVDX5duGKoxDPm74OqHlR7F1OU7IugwqXLroTdXyaGsPRxS08HfjuN5OsLMJAUy2baG3/pJmFxrtEVjTMoBrO0ackMCCE8PczEQM/dRT/sod0ZnpyQrnaxRmd5UcU/8EiWyY0FcAnFAreJ0WZOZlZIOOn+zIgy7k2XdoT00gSXbUnlFynhWTWYLnHMy8vEQOcneSeY9zJmqcI2bEDTz4p2yJwth2RC5648GHfWjc6IqsH03B1+7GZF9jBwZbWfD5M5b+nLxoIMQ3+97eEthTT6aS6jRXoz0gkiMuNz9eirm4heAEWkxcWSEgW/c7QVgvbRjhFyk/y5URbsZXHFSDHViwXIoXfdGo6KYYA7ZYm4jjaiw9v4BxpBrVFOeWqD+eF/zxISMwPR0mDJ8yb3yabnjEahZApNyoIVD1bDG/7xDgtBBwx8Q7NYgUbMyBHL1+EZiU7/Dg1kzXBGelg1+im5bFw== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:50 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 13/39] dyndbg: add support for default trace destination Date: Sun, 11 Feb 2024 00:49:43 +0100 Message-ID: <20240210235009.2405808-14-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Instead of repeating trace destination name explicitly for each command (e.g. +T:thunderbolt), this change saves trace destination provided to last successful open command as default and consecutive commands which don't provide trace destination explicitly will use the saved trace destination. Signed-off-by: =C5=81ukasz Bartosik --- lib/dynamic_debug.c | 69 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 8a81356c52b3..f41b0b0c8b47 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -72,7 +72,7 @@ struct ddebug_iter { struct flag_settings { unsigned int flags; unsigned int mask; - unsigned int trace_dst; + int trace_dst; }; =20 #define DD_OPEN_CMD "open" @@ -85,8 +85,6 @@ struct dd_private_tracebuf { int use_cnt; }; =20 -#define DST_NOT_SET (-1) - /* * When trace is enabled (T flag is set) and trace destination field * value is in range [1..63] then debug logs will be written to trace @@ -101,6 +99,9 @@ struct dd_tracebuf_tbl_info { struct dd_private_tracebuf buf[TRACE_DST_LAST]; DECLARE_BITMAP(bmap, TRACE_DST_LAST); int bmap_size; +#define DST_NOT_SET (-1) +#define DST_TR_EVENT 0 + int default_dst; }; =20 static DEFINE_MUTEX(ddebug_lock); @@ -111,7 +112,8 @@ MODULE_PARM_DESC(verbose, " dynamic_debug/control proce= ssing " "( 0 =3D off (default), 1 =3D module add/rm, 2 =3D >control summary, 3 = =3D parsing, 4 =3D per-site changes)"); =20 static struct -dd_tracebuf_tbl_info trc_tbl =3D { .bmap_size =3D TRACE_DST_LAST }; +dd_tracebuf_tbl_info trc_tbl =3D { .bmap_size =3D TRACE_DST_LAST, + .default_dst =3D DST_TR_EVENT, }; =20 static inline struct dd_ctrl *get_ctrl(struct _ddebug *desc) { @@ -147,7 +149,7 @@ static int find_tr_instance(const char *name) static const char *read_colon_args(const char *str, struct flag_settings *modifiers) { - int len, idx =3D 0; + int len, idx =3D DST_TR_EVENT; char *end; =20 /* Check if trace destination was already set */ @@ -331,6 +333,24 @@ static bool dd_good_trace_name(const char *str) return true; } =20 +static const char *get_tr_default_dst_str(void) +{ + if (trc_tbl.default_dst =3D=3D DST_TR_EVENT) + return DD_TR_EVENT; + else + return trc_tbl.buf[trc_tbl.default_dst].name; +} + +static void update_tr_default_dst(int trace_dst) +{ + if (trace_dst =3D=3D trc_tbl.default_dst) + return; + + trc_tbl.default_dst =3D trace_dst; + v3pr_info("set default trace dst to idx=3D%d, name=3D%s\n", trace_dst, + get_tr_default_dst_str()); +} + static int handle_trace_open_cmd(const char *arg) { struct dd_private_tracebuf *buf; @@ -382,6 +402,7 @@ static int handle_trace_open_cmd(const char *arg) buf->use_cnt =3D 0; set_bit(idx, trc_tbl.bmap); v3pr_info("opened trace instance idx=3D%d, name=3D%s\n", idx, arg); + update_tr_default_dst(idx); end: mutex_unlock(&ddebug_lock); return ret; @@ -410,6 +431,13 @@ static int handle_trace_close_cmd(const char *arg) goto end; } =20 + /* + * check if default trace instance is being closed, + * if yes then update default destination to '0' + */ + if (trc_tbl.default_dst =3D=3D idx) + trc_tbl.default_dst =3D DST_TR_EVENT; + trace_array_put(buf->arr); /* * don't destroy trace instance but let user do it manually @@ -556,7 +584,8 @@ static int ddebug_change(const struct ddebug_query *que= ry, nfound++; =20 nctrl.flags =3D (get_flags(dp) & modifiers->mask) | modifiers->flags; - nctrl.trace_dst =3D modifiers->trace_dst; + nctrl.trace_dst =3D modifiers->trace_dst =3D=3D DST_NOT_SET ? + get_trace_dst(dp) : modifiers->trace_dst; if (!memcmp(&nctrl, get_ctrl(dp), sizeof(nctrl))) continue; #ifdef CONFIG_JUMP_LABEL @@ -845,7 +874,13 @@ static int ddebug_parse_flags(const char *str, struct = flag_settings *modifiers) modifiers->flags =3D 0; break; } - v3pr_info("*flagsp=3D0x%x *maskp=3D0x%x\n", modifiers->flags, modifiers->= mask); + + if (modifiers->flags & _DPRINTK_FLAGS_TRACE && + modifiers->trace_dst =3D=3D DST_NOT_SET) + modifiers->trace_dst =3D trc_tbl.default_dst; + + v3pr_info("flags=3D0x%x mask=3D0x%x, trace_dest=3D0x%x\n", + modifiers->flags, modifiers->mask, modifiers->trace_dst); =20 return 0; } @@ -1614,15 +1649,21 @@ static int ddebug_proc_show(struct seq_file *m, voi= d *p) } seq_puts(m, "\n"); =20 - if (ddebug_iter_is_last(iter) && - !bitmap_empty(trc_tbl.bmap, trc_tbl.bmap_size)) { - int idx =3D 1; + if (ddebug_iter_is_last(iter)) { =20 seq_puts(m, "\n"); - seq_puts(m, "#: Opened trace instances:"); - for_each_set_bit_from(idx, trc_tbl.bmap, trc_tbl.bmap_size) - seq_printf(m, " %s", trc_tbl.buf[idx].name); - seq_puts(m, "\n"); + seq_printf(m, "#: Default trace destination: %s\n", + get_tr_default_dst_str()); + + if (!bitmap_empty(trc_tbl.bmap, trc_tbl.bmap_size)) { + int idx =3D 1; + + seq_puts(m, "\n"); + seq_puts(m, "#: Opened trace instances:"); + for_each_set_bit_from(idx, trc_tbl.bmap, trc_tbl.bmap_size) + seq_printf(m, " %s", trc_tbl.buf[idx].name); + seq_puts(m, "\n"); + } } =20 return 0; --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9831060DD8 for ; Sat, 10 Feb 2024 23:50:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609056; cv=none; b=LICE+LxI1DtWCo7H0vYfSFlhZAY/n1/UUXyQ+cKcQLqr/9LEOzgq+Ljex2j9NoM5K7bl+nNQY32r1BXl/qAIw/EDiN48EpjGrjaGHhBY85SrX6Gk6493uj+C+wKy/QaERXQvIKbTDcVbE8Z/VaDsLiXa6js/Vu2Xub3GztsrCIw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609056; c=relaxed/simple; bh=svE0ydmRhksE61Jfxvr6jlgMjC0XYATtTVPi+1xPOKE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=UMj1Exgd72kIgQ1WIDXDErtx9Eg9KfC4wX0EZKaZ2gCkoJc3AvFTp4ZklyARPxZcr4xs8G9QLQFxogQ2P+NUP11ft0yAfcL4p3EMUC4sSkXaw3TjMb5rJGEvn6mm5a6xu1Ou06uhXcu4/kKYLLw7JK5RLAz+yF76+LBslgkIOGI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=P0YfpGtR; arc=none smtp.client-ip=209.85.167.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="P0YfpGtR" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-5116b017503so2861643e87.1 for ; Sat, 10 Feb 2024 15:50:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609052; x=1708213852; darn=vger.kernel.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=m0C7d9TR7oCLKiGX51PIEVgdXmMwdwdVpasUDDkUmDA=; b=P0YfpGtR2+eCi0IIqVbftRscTbJjJy9hrTF50DkXLhGDGBB8vXd2gzdGHxvwpq4ToS q3DcKqQhXCgHCKy77xnV10SoTTpvfB1PXBWeyimoyvLmmAezJNEJlW0loNLHzajq5hyl b3zwJ5zmuVuxYE5qPUr7eB/XBofXzUC5xHMr4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609052; x=1708213852; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m0C7d9TR7oCLKiGX51PIEVgdXmMwdwdVpasUDDkUmDA=; b=ZXhV42CfC/una1z/IIdLmX9NtpH19g664nNPbmvTS60dmfjTWmnD29zKmBgvf3gy2C Xz8IP8NjK2qidh5fwaEscRPvko4E3QUvfWPSpOqLlputyvYPpcwK1MMCOBqnZQcJyqcs Vm/tgjxfDEEXmB2exJgn5+Vx2C6u/HtISQuJjQ8fFeOFnJkQ1g+74ua2t8kj0fbC2HiH kI3nBV6seJ5wlz7fwlEmZF7N9Ew2YjmaMqT/KYEupIYYErEd0zkaTjXae5jrx9qUoxyU FexfifUN9ZaF8vtUVSWwUXlLQCHcfXC8EM+huYQSHsYiijpQ9wbebQU/jwK2+C1ohvB6 3FAw== X-Gm-Message-State: AOJu0YzvresigdUUC1aNpW+/bH923tfwQsSZQCuKcB1THY04OjA/7CbW wIJbcPpQXoPhBK3qPLWmzJD8OSYt6cLwLGZ5LfoUDGKeBUG2DhK2Hw38ldyS X-Google-Smtp-Source: AGHT+IEIbw/XCToXLpf+OkOAOuRLJfOBDrTKrkFy6DU+9DPONycq9b/4rur93hA5h94ftG6KWNVEDg== X-Received: by 2002:ac2:5dc8:0:b0:511:62ab:5f03 with SMTP id x8-20020ac25dc8000000b0051162ab5f03mr1878907lfq.60.1707609052801; Sat, 10 Feb 2024 15:50:52 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWfdpieG7Xq0wJgEwvOp+MkQV8u/MwIyUikMGTNVVNK+dwp70vbTGfyuvR/QCLrvUxKN+egISXAcQRkIktfSY9x02li3nO+Dwlg91zKlh2LiY4awAbjA35s4xGLTsTJEZbZ4VfNHcstvRhRKHv1BmtBIWQx52FEDhNHxH7RqkhP5KOiEqGxzzKaIlovMvMkP+2clrjrnab/+TshTe0O6uT9G1FYmSRycqbWUwFmvSQmxXZVwtx8pBRi+rQGxtyT5yu4ksJ8Aj+zacXk7OU6VOgz6UFc+HC6klD7wtgOrSrFr0rBqPfXXoaC4rQeaKibU4+bnyahEvFkgoOJM61CzUqetuejAP0EQvH+iX7l/UuDlHYoUx7B1J72ndUNEGNtiUmDYbao2iG9+ibQF5RLGXzQnbZsYR5b3ZtRXDl39hdFtNfb6O/Pek8c0w9I9kvMMMDO5QLY4cNTWbZ7wf++Zh77gPd3LNye+3H/0gZUbgNs6/mzmkQ6LTD17bYozOMTJW2HPSYY/cuxfREu78CGiBqM3O9dVWdPYbH/6e1jvHD54Hj0CA1zXj+WNj3hP3KzBWk3cdPt6xTT+N+MqHZRUXz+/dXuq2xnnwoeax6k/NYcmpkAig== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:52 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 14/39] dyndbg: update default trace destination on reopen Date: Sun, 11 Feb 2024 00:49:44 +0100 Message-ID: <20240210235009.2405808-15-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable The change updates default trace destination when a user requests to open '0' ('0' writes debug logs to global trace-events buffer /sys/kernel/tracing/trace) or open an already opened trace instance. Signed-off-by: =C5=81ukasz Bartosik --- lib/dynamic_debug.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index f41b0b0c8b47..f91c51234456 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -354,10 +354,21 @@ static void update_tr_default_dst(int trace_dst) static int handle_trace_open_cmd(const char *arg) { struct dd_private_tracebuf *buf; - int idx, ret =3D 0; + int idx =3D 0, ret =3D 0; =20 mutex_lock(&ddebug_lock); =20 + /* + * request to open '0' or an already opened trace instance + * results in update of default trace destination + */ + if (!strcmp(arg, DD_TR_EVENT)) + goto update; + + idx =3D find_tr_instance(arg); + if (idx >=3D 0) + goto update; + /* bit 0 is not used, reserved for trace prdbg and devdbg events */ idx =3D find_next_zero_bit(trc_tbl.bmap, trc_tbl.bmap_size, 1); if (idx =3D=3D trc_tbl.bmap_size) { @@ -371,12 +382,6 @@ static int handle_trace_open_cmd(const char *arg) goto end; } =20 - if (find_tr_instance(arg) >=3D 0) { - pr_err("instance is already opened name:%s\n", arg); - ret =3D -EEXIST; - goto end; - } - buf =3D &trc_tbl.buf[idx]; buf->name =3D kstrdup(arg, GFP_KERNEL); if (!buf->name) { @@ -402,6 +407,7 @@ static int handle_trace_open_cmd(const char *arg) buf->use_cnt =3D 0; set_bit(idx, trc_tbl.bmap); v3pr_info("opened trace instance idx=3D%d, name=3D%s\n", idx, arg); +update: update_tr_default_dst(idx); end: mutex_unlock(&ddebug_lock); --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f65.google.com (mail-lf1-f65.google.com [209.85.167.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E70760ED8 for ; Sat, 10 Feb 2024 23:50:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.65 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609057; cv=none; b=TX2LhWQ3lZbVgCBPhX88m8ILwAAjVac9oz5x64CHnfAfJ9qGl1cZHxkSAsHLuGPLkVa/Cdyk3qo2VT/8YROZbdUe9jvU+z1PRHlgiP8rcOxQFal5yeZ9/w9TGkYo32Lh2uesW7CcJkJ5/eQLuCdgMeTRk/dB6t9UTcGSu+fz5q4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609057; c=relaxed/simple; bh=ohE6vU5kodAgmE00a94Fey2CKuwVGGZlFNzAOgDt1Ro=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=J2OWdD0ymtW0Oecbh65ZvhkuagMFeT/nb1zpVH0ee1+zIUdOVCn2+EAH3u8HEP+zQHWaqVgrYZPqmI9tA18V3IUZYNX0UPFMk89Uy2JISiu4XrUAyy2JRIYqaNF2fW/pYDZaL/4rlU4bYBCCGRxinj0k89il5l93Edckg92BntQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=FEuo4wYp; arc=none smtp.client-ip=209.85.167.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="FEuo4wYp" Received: by mail-lf1-f65.google.com with SMTP id 2adb3069b0e04-51167e470f7so2650927e87.2 for ; Sat, 10 Feb 2024 15:50:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609054; x=1708213854; darn=vger.kernel.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=lhSJOrwG0vPx3/FWw5xBrBZ2OkHe0Kqn1x7V968tGh8=; b=FEuo4wYpS8rla2cWJKPp6UE+l+B9u8gvZxjSDlRiDTuWeW6OgPIn0R4nY3Cb8uHKXz UJGlrg8CVeHH3PapjJcDzL0qTss4+4D4I6bxPPLByBAbxRIqgFi38ptVWH2LnFETxvEB 3xb/g8fZShy9CBDcTSlc5lhB7dWlP6yNF0Gw8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609054; x=1708213854; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lhSJOrwG0vPx3/FWw5xBrBZ2OkHe0Kqn1x7V968tGh8=; b=VxK6WyqiGMjIyrT0laExWD/0KJ/plncE43mIyE1A5663flwVbpTV4T4ul2bpgDw7z4 dyQLP1ngvae6diZMoDhR8npSRKIC/eC8iE938fEL/zoO3VCOxd/BcW0RVuH1bylZAV/s wWqczo9vLngQaWarnWnn704aODYyvAkdgAKOxhajT/5ySoaF8ZiaTOfrvEWDHI5ANehU 4HmCo5Amgjcsc3xOX1/SY8Axo5hBC3/hxpEZMjUHSMbPEs28PpA6y9rk04S7LTDV0o5B KJXDUr+GALU9jcP77HrNUF/KTg6gda2uoIG0gnUC5GWGPDt274TKM1jSfw0oAWVa7ATe 8bQw== X-Gm-Message-State: AOJu0Yx9Xd7/+jFSzTzhdjRrHJGQhs/3JjTgiofFlyX+4rNzMqm8okEj WN5VLr/Nk9jrIwNkCOdySR/8MKZbk99dMY2QHFQD0bEgymkg2S88YNtaMmkm X-Google-Smtp-Source: AGHT+IGu6Qu/0GalhQgiRzfCPrYXdbSwq+Pd+Xbv4UZUgM2z0+0cmIas7OsRtYtMidkr5bXpoZi+yw== X-Received: by 2002:a05:6512:3f7:b0:511:8697:c66a with SMTP id n23-20020a05651203f700b005118697c66amr741665lfq.31.1707609054364; Sat, 10 Feb 2024 15:50:54 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWjjmGHSLBbQRDcbxOiGOhju/B6TdFQLxsbySRXM0XJrf6IuBtPEYUoAyCJRsZuLnU7z5N0XkTmoXGNIU8rd1qCHUIICWd36lpwMMMTdFUURd9HXm7PE5jZUE9Wx7I55RAYsBoURRS/W//1kRudDG7P4HM87sWZcAVUd50kYCXRVxZHh2TmhYQR1s9SRAt+/VEAg8bGBj6wwl6GmMKkZTBUTfgjj8L+le0lQ3v819uY5fIUcQnHBK0lT/60BddaYVyZnhtlghfx+Bs4rLDgfi1N88gtJO9Tkx6YIhBVs7sfX3MaEXehzTHyCdOxZ4xXi38lrYwAqKNq8fCGaRbrS6DmSZ7pLr9bKU6PxttxHRJ6j9dcExuPuvxeUKmiQfKly8mzwtUEMOWe2R8dcWuSChVA3jZmP9OmOagWGyab7CzMOD7WfxEoRUa7Lv21gmgM/uqwN12epL/6kvVJ8Avz+0OvQZVqhJKCRUV86Njn3M5eFsj8g08iQaSNcVcOx4A2lyMOWAdeSqI17oJ26LUzWUfXzonfR+V7QR1nrT4ubGCX6jrElNaX9t+SFwcxaHnvgCZ2RzTn6qMigZsvUxZq9lNjqZfMUFrzc8zxZ5ki+G3PjACF2Q== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:54 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 15/39] dyndbg: update selection of trace destination Date: Sun, 11 Feb 2024 00:49:45 +0100 Message-ID: <20240210235009.2405808-16-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable If callsite's current trace destination is '0' and user provided T flag without trace destination name then set callsite's trace destination to default trace destination. If a user provided trace destination name :trace_dest_name with or without T flag then set callsite's trace destination to the provided name. Otherwise keep callsite's current trace destination. The change main purpose is to preserve trace destination names (different from '0') set previously by a user which can be later enabled with 'label' keyword. Signed-off-by: =C5=81ukasz Bartosik --- lib/dynamic_debug.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index f91c51234456..172497954e00 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -480,6 +480,27 @@ void update_tr_dst(const struct _ddebug *desc, const s= truct dd_ctrl *nctrl) trc_tbl.buf[ndst].use_cnt++; } =20 + +/* + * Selects trace destination. If callsite's current trace destination is '= 0' + * and user provided T flag without trace destination name then set callsi= te's + * trace destination to default trace destination. If a user provided trace + * destination name :trace_dest_name with or without T flag then set calls= ite's + * trace destination to the provided name. Otherwise keep callsite's curre= nt + * trace destination. + */ +static int select_tr_dst(struct flag_settings *modifiers, int cur_dst) +{ + if (!cur_dst && modifiers->flags & _DPRINTK_FLAGS_TRACE && + modifiers->trace_dst =3D=3D DST_NOT_SET) + return trc_tbl.default_dst; + + if (modifiers->trace_dst >=3D 0) + return modifiers->trace_dst; + + return cur_dst; +} + static int ddebug_parse_cmd(char *words[], int nwords) { if (nwords !=3D 1) @@ -590,8 +611,7 @@ static int ddebug_change(const struct ddebug_query *que= ry, nfound++; =20 nctrl.flags =3D (get_flags(dp) & modifiers->mask) | modifiers->flags; - nctrl.trace_dst =3D modifiers->trace_dst =3D=3D DST_NOT_SET ? - get_trace_dst(dp) : modifiers->trace_dst; + nctrl.trace_dst =3D select_tr_dst(modifiers, get_trace_dst(dp)); if (!memcmp(&nctrl, get_ctrl(dp), sizeof(nctrl))) continue; #ifdef CONFIG_JUMP_LABEL @@ -881,10 +901,6 @@ static int ddebug_parse_flags(const char *str, struct = flag_settings *modifiers) break; } =20 - if (modifiers->flags & _DPRINTK_FLAGS_TRACE && - modifiers->trace_dst =3D=3D DST_NOT_SET) - modifiers->trace_dst =3D trc_tbl.default_dst; - v3pr_info("flags=3D0x%x mask=3D0x%x, trace_dest=3D0x%x\n", modifiers->flags, modifiers->mask, modifiers->trace_dst); =20 --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C39DC60EFF for ; Sat, 10 Feb 2024 23:50:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609059; cv=none; b=C4lw047jrvxR/1qAiBdFo8S8e8mIXLBW691IVrduJiMe31BndE8VB00KrMfExH8adcsR2UgFarwNtTGm9mOpWto2v4AFn3D6Zthp2F2DfdY5u55xRPEkxkx5S1evMDhWqXN7AnY3JYyIKnJhJvV/SA8wMdNoEXR+ap07Krg1DnY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609059; c=relaxed/simple; bh=l1V9QLXGLN9N14rao8E4GzprXYURIUrk6mdW5/cLkEg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=pyOLM2rqH1TJQw5k+uCirWZNRO9727oghulxwT6GyJWGeTTaBcrp8fTkE13afppxw6x+c2AWMiUIe08n6fUZI9IkyJx1qd3OiCS2RnbUCzo3NAjrJX76omtQH+58veKrF7y+Vx09RxHQ4q8lP4QAhB0r98886cGJFDfDEjnEFk8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=Maz/Aw+f; arc=none smtp.client-ip=209.85.167.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="Maz/Aw+f" Received: by mail-lf1-f46.google.com with SMTP id 2adb3069b0e04-51032058f17so2603074e87.3 for ; Sat, 10 Feb 2024 15:50:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609056; x=1708213856; darn=vger.kernel.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=+meeM2Vk6l0WdNE3+wNvpjDW7+uOCSnCzAIE4DVZl4I=; b=Maz/Aw+f+MtIWMO3kXDK86OaiWrIskcdmUC4785M7ShoVh3YeuZ1I+V0XpDcxDAoc4 GV7lx6xZV3fwC9i0/CUkpzc567m6INWWTp8gjHgd9BHcWbDxmccrSFnmt0xpPiw+7f7I whMbbAaaf0h8Qt8oVwstoROutq9aCnw75wXDI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609056; x=1708213856; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+meeM2Vk6l0WdNE3+wNvpjDW7+uOCSnCzAIE4DVZl4I=; b=Ncg2XPxwVLR7WUFKiXazOHs2XUBcpqM24ia4XzxWNjeRG80Y1fA1AZm4ns4FZ9nsbq OIFi3/EfDNmlVy9jC6wvhOMYhXG4HnbZr8jkFyaIXA3+6Pvdhg1A8mCujrmrIfHGfBuH 04R8yDfJubZANpdr3afSwAF6erbaVZ6NmydxAufW57mVE8c5v5Q7WsrgH+qTwz8cucDc 0+FERDJ80h2zwc8IZ4NighDG+PsQkBXpUHFgFiu5J5x05HNaoYNY0CrcaAI3pnTWHcVw b1E2jqprlQZqCmdNcHrPsinCVl55sxYCtqkwurY6DUGh/rtyR5ANMzwPDpv0fgGTkhlJ SsUQ== X-Forwarded-Encrypted: i=1; AJvYcCUwOhkOR37sqTL33iKXpBpBYi2yaSX1IdJ2QCANXzmrG11FwJkFM79Hn5RaHWieVnPsSlIm8i2CDwBFj7EmmEL25SyIOYDGjnq8cHql X-Gm-Message-State: AOJu0YyKp6dHFPl52CssX0WlN/LORfbW3I8TsPlj2mP3Z6EAvRhSgQJY 1A7i4aflyTZTNAQQl8FaKP8DMec4RY3+18R2sRaooeivYv2xPErscPwasZIX X-Google-Smtp-Source: AGHT+IEVsQfE3/Ku8GY9wEARJtHvcLpqA0MyX9lVuCivqKATZYpTxbqjcywYxg7HE9xUPgdJOSqYxQ== X-Received: by 2002:a19:2d47:0:b0:511:49f8:b42f with SMTP id t7-20020a192d47000000b0051149f8b42fmr2044506lft.8.1707609055904; Sat, 10 Feb 2024 15:50:55 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCXWzrYynI29zRZZDkdrYySf/qdUsSiTQf0Ck0ApIde4uN+FCjcPut2uLF3xYRFs+ELUnxwYHdYIGi416Vdua3k0Ang9Rm43hnz+3INTmLm8vt6zzQEbYliq4yyxib6UA/MhQrC+JdRDVVSI0x8KY53x0inOi4frTEz0gusZuefCd1zk2bSxsWDJH1xWbd5Fu/hs/p31kzf5Er82S7O4HNPcFGqUbXrpbeR12TxEvmiS6v7vSkYuYj1xOJX1rbWg/Mn+vzv9Z1fQfPIujUjkFdsUS1HpJ3tG1whBCAsPO9p6AsO4nW6bC/alYxI+Sy860j61y9czCyCL07H2etcmaZcDX0ZoLmjiW/0WR8pjJds8hIm/lAD+vMbAUmzvKdYzO7+Pj9A//WhNbz33cWHxpwXk5Mqs/uhGObCYxQsaw/SqtKEovYJl6wd7/eAu3FGznt5Hi5eLkM27/g7ITHwAGDdsgu1fw21CG9VfQ27ul2u7ajQoS/5j/oWghvBMszYJGLZEj0PEu7/d06hCOuIscCdzcBDgeTrdKmFHzL6BfuJ2fAXTnE3a0w/OfHmcTE6uKM5HLT91dqxcVaTBMjDuZaw82o1kUUDKd2OsMkjZxeAW1gNxTg== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:55 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 16/39] dyndbg: write debug logs to trace instance Date: Sun, 11 Feb 2024 00:49:46 +0100 Message-ID: <20240210235009.2405808-17-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable When trace is enabled (T flag is set) and trace destination field value is in range [1..63] (value 0 is reserved for writing debug logs to trace prdbg and devdbg events) then debug logs will be written to trace instance whose name is stored in buf[trace destination].name, e.g. when trace destination value is 2 and buf[2].name is set to tbt then debug logs will be written to /tracing/instances/tbt. Before using trace instance as a destination for writing debug logs it has to be explicitly opened with open command. Signed-off-by: =C5=81ukasz Bartosik --- lib/dynamic_debug.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 172497954e00..d379e05837be 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -1278,8 +1278,8 @@ static DEFINE_PER_CPU(struct ddebug_trace_bufs, ddebu= g_trace_bufs); static DEFINE_PER_CPU(int, ddebug_trace_reserve); =20 __printf(3, 0) -static void ddebug_trace(struct _ddebug *desc, const struct device *dev, - const char *fmt, va_list args) +static void ddebug_trace_event(struct _ddebug *desc, const struct device *= dev, + const char *fmt, va_list args) { struct ddebug_trace_buf *buf; int bufidx; @@ -1310,6 +1310,18 @@ static void ddebug_trace(struct _ddebug *desc, const= struct device *dev, preempt_enable_notrace(); } =20 +__printf(2, 0) +static void ddebug_trace_instance(struct _ddebug *desc, const char *fmt, + va_list * args) +{ + struct va_format vaf =3D { .fmt =3D fmt, .va =3D args}; + struct trace_array *arr =3D trc_tbl.buf[get_trace_dst(desc)].arr; + + WARN_ON_ONCE(!arr); + + trace_array_printk(arr, 0, "%pV", &vaf); +} + __printf(2, 3) static void ddebug_printk(struct _ddebug *desc, const char *fmt, ...) { @@ -1322,7 +1334,12 @@ static void ddebug_printk(struct _ddebug *desc, cons= t char *fmt, ...) * All callers include the KERN_DEBUG prefix to keep the * vprintk case simple; strip it out for tracing. */ - ddebug_trace(desc, NULL, fmt + strlen(KERN_DEBUG), args); + if (!get_trace_dst(desc)) + ddebug_trace_event(desc, NULL, + fmt + strlen(KERN_DEBUG), args); + else + ddebug_trace_instance(desc, fmt + strlen(KERN_DEBUG), + &args); va_end(args); } =20 @@ -1344,7 +1361,10 @@ static void ddebug_dev_printk(struct _ddebug *desc, = const struct device *dev, va_list args; =20 va_start(args, fmt); - ddebug_trace(desc, dev, fmt, args); + if (!get_trace_dst(desc)) + ddebug_trace_event(desc, dev, fmt, args); + else + ddebug_trace_instance(desc, fmt, &args); va_end(args); } =20 --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f50.google.com (mail-lf1-f50.google.com [209.85.167.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 70B6C612EE for ; Sat, 10 Feb 2024 23:50:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609061; cv=none; b=WlJjYXNwHQ5W2orhEPZ3FT22FWNrKBHGq5ggegtq9je7h4Xj6WpIvWfcaoCzHt2fOA0uT4LofAIC8WM7iQTNS2OaiziYnieeYVUyELYCMrStgh9PFGzPtBWxRpofmqDe3Atfe1O8vUIgNiVUPKTTfC1O1B6qZbUMfPiKMN+K6/M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609061; c=relaxed/simple; bh=xaGmcsjd+lkOWUksrw9hG2GtCYA1l7WNpGBbOaK1l7o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=nIuQW5U7xOIRYjA6wM5h34zUGDTAQJ1x4u3UMMZU1oo0CzK2o7pzQ2YzB8h4yRj8p8nScQdhC+6aU0ZXkJSwlPwjM5M3LMY5l2r21mJ6EAQORtLx0af3bDAS3afOR5qud1DHQhOU2xEs7STKPwcaqySbfSuLXzKsN7MmxZqggdE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=CPIYffui; arc=none smtp.client-ip=209.85.167.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="CPIYffui" Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-5114cd44f6aso2840942e87.1 for ; Sat, 10 Feb 2024 15:50:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609057; x=1708213857; darn=vger.kernel.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=GcUhkZrXlF5pRwcMyaOQX2HOmfuyNRPW8LUolF8mADY=; b=CPIYffuiExah5o8/w1W4dH7kwyrLP8oCPHOTmz9hHRvAwYKIA12VgqBo5F7CBC5AHC 1xKmAuRwCTsFPGDgIsWFyU3NzYfCMhA0ortwVZdcTkb8Hc02fIH3I6XU0DqEcJaE/l2i Vo/4NhwNW0g2/bwKTKKaafMLja2804uFWFGAs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609057; x=1708213857; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GcUhkZrXlF5pRwcMyaOQX2HOmfuyNRPW8LUolF8mADY=; b=V48JXzB0tsjfIej67/ES25qaGLMzyHAXh0Uy6OmLWCFOtQTfNjsdpTw0z8dkTMwvd/ faxsPgC55PRcBmIhbOfeYVxlFleLx9I5gB3MZ9BtHAeK21s7DsY/vIEkfJx3wsuWaFGd 0m7t2fI9IlIBj2pydDfeHqrFiN085K2NSlqxckyhasdKLOQ5t7TH3GjVfPqtsv8r4uMr mVVQypyV8QIqjHR71ypeV5bauEPbCMcJ6DlDcGTX8VC2k+cWx5Z8coBj7EHXhnZCeMzK +jr66s/TydiM+rOkaqqbq+X4cscCO4hiripAxMxkT4fyBWvpm0f7m4gKMvfs53YxdwR5 6/9A== X-Gm-Message-State: AOJu0YzBTjNFSYRs/cRoeGXyK3Mbf2v+Hf1VgUjayoAift/8ZtVUIUV+ VLesPtpCuKcQUIg+buduXk0YKLEwIZE3DmYkFkNI5pLAccVI2nI3tByDKuBRzCnupM24f3aRZQ= = X-Google-Smtp-Source: AGHT+IEEgUtwreiAHXmoffnO7ggXYeIeG7rVYrB+JsapB5c9FhMRT5KMg9cDtA/txb+RAWnZtYy9OA== X-Received: by 2002:ac2:5eda:0:b0:511:55fb:2405 with SMTP id d26-20020ac25eda000000b0051155fb2405mr1659223lfq.50.1707609057566; Sat, 10 Feb 2024 15:50:57 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUMvMLuG7XWucjAH59S42BW92allZjpZHUiTZ04ZDytLeYM3qAkBnJsfwWB+mu9HTVVqkcciJ2PvdqAXL+Lw/CxLX016E2mfnFbGVXnY4elEdNKDkGpNxiUOYCSisgKf1x8g/1rvNOyPKkE7awdV/V2tNXIMG2+eX+vwEd0vj0I++44WalYTfoi/iz01iuR1a0rZc+lwoApvUQa1jeTb1+/LkdZtduzXmRkb0QP59tdOhrsYomvHmv8c1bwMsUTMrUWncRoVJiOLiQnvCIc/qA+VLmZ6SgoTbTSFzwVizQOyAQfL2y9lQp6EPli4UFC3Ij3o16Rw8+VofwvhZ+om7zvHg3Rg1sqrIHuXqKOzECasCWmLw56VaIkVsECEHXf2qNT4UfbAA2qgpA49xvATtvbzfeiMVoqfWFLEv3R7aiZBEs7BOWbzmOFFmklDvv7MGT8wmtLB+RZmmUpnMPYKMdjk82ZwKMCDAC0ZabHDlsdJcMq/Dv3jwUWxKyAWB2L0NbjC0Xhz7u09oheM4IgOzkEQCrUAACCyBEnNg9MmNx3rSju6D8riT7ffwLW2W1cxlSEwquJ5ugc8Ok5p9QiHTL9IdBfRru3ucbuEaCUhbERMoJCog== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:57 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 17/39] dyndbg: add support for hex_dump output to trace Date: Sun, 11 Feb 2024 00:49:47 +0100 Message-ID: <20240210235009.2405808-18-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Add support for writing hex_dump debug logs to trace. Signed-off-by: =C5=81ukasz Bartosik Co-developed-by: Jim Cromie Signed-off-by: Jim Cromie --- include/linux/dynamic_debug.h | 16 ++++++++++------ lib/dynamic_debug.c | 36 +++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index dc10c7535f13..76eec3f05be9 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -298,12 +298,16 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, _dynamic_func_call(fmt, __dynamic_ibdev_dbg, \ dev, fmt, ##__VA_ARGS__) =20 -#define dynamic_hex_dump(prefix_str, prefix_type, rowsize, \ - groupsize, buf, len, ascii) \ - _dynamic_func_call_no_desc(__builtin_constant_p(prefix_str) ? prefix_str = : "hexdump", \ - print_hex_dump, \ - KERN_DEBUG, prefix_str, prefix_type, \ - rowsize, groupsize, buf, len, ascii) +void _print_hex_dump(struct _ddebug *descriptor, const char *level, + const char *prefix_str, int prefix_type, int rowsize, + int groupsize, const void *buf, size_t len, bool ascii); + +#define dynamic_hex_dump(prefix_str, prefix_type, rowsize, \ + groupsize, buf, len, ascii) \ + _dynamic_func_call(__builtin_constant_p(prefix_str) ? prefix_str : "hexdu= mp", \ + _print_hex_dump, \ + KERN_DEBUG, prefix_str, prefix_type, \ + rowsize, groupsize, buf, len, ascii) =20 /* for test only, generally expect drm.debug style macro wrappers */ #define __pr_debug_cls(cls, fmt, ...) do { \ diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index d379e05837be..dbae1ed6ab5b 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -1377,6 +1377,42 @@ static void ddebug_dev_printk(struct _ddebug *desc, = const struct device *dev, } } =20 +void _print_hex_dump(struct _ddebug *descriptor, const char *level, + const char *prefix_str, int prefix_type, int rowsize, + int groupsize, const void *buf, size_t len, bool ascii) +{ + const u8 *ptr =3D buf; + int i, linelen, remaining =3D len; + unsigned char linebuf[32 * 3 + 2 + 32 + 1]; + + if (rowsize !=3D 16 && rowsize !=3D 32) + rowsize =3D 16; + + for (i =3D 0; i < len; i +=3D rowsize) { + linelen =3D min(remaining, rowsize); + remaining -=3D rowsize; + + hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, + linebuf, sizeof(linebuf), ascii); + + switch (prefix_type) { + case DUMP_PREFIX_ADDRESS: + ddebug_printk(descriptor, KERN_DEBUG "%s%s%p: %s\n", + level, prefix_str, ptr + i, linebuf); + break; + case DUMP_PREFIX_OFFSET: + ddebug_printk(descriptor, KERN_DEBUG "%s%s%.8x: %s\n", + level, prefix_str, i, linebuf); + break; + default: + ddebug_printk(descriptor, KERN_DEBUG "%s%s%s\n", + level, prefix_str, linebuf); + break; + } + } +} +EXPORT_SYMBOL(_print_hex_dump); + void __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...) { va_list args; --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f67.google.com (mail-lf1-f67.google.com [209.85.167.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 00ABE61677 for ; Sat, 10 Feb 2024 23:51:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.67 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609062; cv=none; b=TCK7+f9K0Dm+LOdtiLZCOsDAhgShbPNsVYhvEUKixMlyRYGGfBBXe4HoyZ1RxlaUls8hk2IvrNeB+itCB1Z1CtR2CaAIy566bzsDc+AjZ2jTuDA9kVE/2QzGi3QkbFpKiSRGo24VzvNpNUI87ulYskd/M23LHdhhGSEJRd0JKco= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609062; c=relaxed/simple; bh=38I58GgEEuvwOX95RJ1mNCPWP76DGHxflbVS5gA9xhE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=b2EgzlBaGIB2x8/rxyCqtiKF+GwLh/vTqg9xABkkzQQUpUMT65eLGHfpmplhXm8SVLEMAQBzldaDcT5HENdqvuMEJqakMwa6J5/HTnmF9Re1VzLS42VsRgHxDSwnBO0t5dOR1XQHOBTbG4gbvkln73qgjeLJil0w7SoqQs6R7HI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=hPubffDm; arc=none smtp.client-ip=209.85.167.67 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="hPubffDm" Received: by mail-lf1-f67.google.com with SMTP id 2adb3069b0e04-51147d0abd1so2384578e87.1 for ; Sat, 10 Feb 2024 15:51:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609059; x=1708213859; darn=vger.kernel.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=f2CTMmybaxg0dOtHmB7rXgRA/borZ7XgGMz9viO7lBc=; b=hPubffDmJ5Odq8LPxPhhzmcqxd7gcGlAA3EL1sgmsRpLQy8QwmA2WR4RpiPsLNcFWb 6Ea2XIvEaidlKXXcjkFnCdNYoeoaG2XBiyaBJz0yWGIe3lz5HrMnlbMobLZAWof8g0ay qYUKNizCYiPnQin+YVat1IKJEWqfZ5/FU5qU4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609059; x=1708213859; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=f2CTMmybaxg0dOtHmB7rXgRA/borZ7XgGMz9viO7lBc=; b=dXyZx5xzXgiAgaYOU81QqZlTd2vCu+LGfomY33SqDss8W2wiYqTA8uF5JtAaoKABjq uz2Jy//fpOuFOAPGAEI7ojXFMBgXmwe3EzqEE8zfdLCM71zAJRTBulAolk610vsmFVUX kMTw2PFH8NRK96/drFKRT/v4wMcRbJn9ITTc/ix7svehBWmsDY8ptp9mHOuMtFJ8B8G0 p7NlyYgXjSGDU6DHsuDBK2hS/pjK1v9U9jY7V3A+bFoGH09X5I4IgyAj0NAmJ1ddz56u HBJVNd0scvCsvR3Olys8QBwG2QPih8DN6zlZv8yXxOU16O36PQzyIddWm9GuTo5PWtVG AhSg== X-Gm-Message-State: AOJu0YyENLuw6IyCZtXToHBsLtka/3ZhCil/CufECHpAKq5SwcSdvsQT cEZ9sdB7F4wPQVkTAqDcLTmHdz+qiON0OHdPWS/HlcWFcez7OS6zdSovBVbG X-Google-Smtp-Source: AGHT+IFTC5AiPZsL2WCtZ9YUmYQzPfPSbIZd7pGWlek1hN3yyM/LQ79PBILscJ8my/ork79CMUHxmQ== X-Received: by 2002:ac2:46fb:0:b0:511:79ac:2d78 with SMTP id q27-20020ac246fb000000b0051179ac2d78mr1847074lfo.39.1707609059268; Sat, 10 Feb 2024 15:50:59 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUwY9QgQWBv3mqmXEOiAqOyF2ZXgQZL51x6zCMlF3rA9kaeIjjxX4WV8W+tU7uU3bK3T5QCGqKacFR6Lm4Y1KMiFafq8X+P692nGbcsnH1T7UbAyvneXsakqxDZqrZ5NRtjIHKz1VzLdyaNeo0nLtRShcG3xVyA4goGGXDYrO/kSwxOtuC6CJkX4Lph08GFRxvjG9KttQPGgGKCO18y1paBNOTam+SHnNkmAW+SROUQdx9yJ7Ab5sGbJgRyFP0bJN9x7OuYvYVK+KYdxBu7SRqSQpRl9n5ys8w9Ya3p7eQit0LQnmwVO+tcmWv+bFZ/6Y3szDethzuM4aD0YsctshLo5S7hen9Z6CzM6uzkrJ0p9tgFAs86c8nt3edwHXYZcRt/S4ZDrzyoaf53s5SleHYz148Ey0FCfhOOtKnrdVaBSY+mihT/Mhq4n+wNAOYQabilSgdrBng8nPwtVGyoMmvuMrEJ6LvbhaeHBqLNfafV0HdoVFArmHPa7sdplz+uGmFmcblJTey4nbGhPtWjiPVg5styQD5oqn6BE2llt8G7bOZVAMGIvxwpcbbn2ozReyWnTXFXZBSp5kl5WiDduOlymbNrxwZltgRe+LRRnvr+Nk7uSQ== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:50:58 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 18/39] dyndbg: add label keyword handling Date: Sun, 11 Feb 2024 00:49:48 +0100 Message-ID: <20240210235009.2405808-19-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie Add a new user_label field to struct ddebug_query, label keyword handling and saving to the struct, and update ddebug_change to test if a given user_label is found in the list of known trace-instances. Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index dbae1ed6ab5b..17df4bf6863a 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -61,6 +61,7 @@ struct ddebug_query { const char *function; const char *format; const char *class_string; + const char *user_label; unsigned int first_lineno, last_lineno; }; =20 @@ -300,13 +301,14 @@ static void vpr_info_dq(const struct ddebug_query *qu= ery, const char *msg) fmtlen--; } =20 - v3pr_info("%s: func=3D\"%s\" file=3D\"%s\" module=3D\"%s\" format=3D\"%.*= s\" lineno=3D%u-%u class=3D%s\n", + v3pr_info("%s: func=3D\"%s\" file=3D\"%s\" module=3D\"%s\" format=3D\"%.*= s\" lineno=3D%u-%u class=3D%s label=3D%s\n", msg, query->function ?: "", query->filename ?: "", query->module ?: "", fmtlen, query->format ?: "", - query->first_lineno, query->last_lineno, query->class_string); + query->first_lineno, query->last_lineno, + query->class_string, query->user_label); } =20 static bool is_dd_trace_cmd(const char *str) @@ -574,6 +576,16 @@ static int ddebug_change(const struct ddebug_query *qu= ery, if (dp->class_id !=3D valid_class) continue; =20 + /* match against a given label */ + if (query->user_label) { + int idx =3D find_tr_instance(query->user_label); + + if (idx < 0) + continue; + if (idx !=3D get_trace_dst(dp)) + continue; + } + /* match against the source filename */ if (query->filename && !match_wildcard(query->filename, dp->filename) && @@ -770,6 +782,8 @@ static int check_set(const char **dest, char *src, char= *name) * file * file * module + * class + * label * format * line * line - // where either may be empty @@ -825,6 +839,8 @@ static int ddebug_parse_query(char *words[], int nwords, return -EINVAL; } else if (!strcmp(keyword, "class")) { rc =3D check_set(&query->class_string, arg, "class"); + } else if (!strcmp(keyword, "label")) { + rc =3D check_set(&query->user_label, arg, "label"); } else { pr_err("unknown keyword \"%s\"\n", keyword); return -EINVAL; --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9813B61690 for ; Sat, 10 Feb 2024 23:51:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609064; cv=none; b=c6SsVd722LEuFaqN0OqREyI8VMPuceF+L4yTLiNkyiaRWaTMhVXhPg76QOemJVNVL2m2pP17cGm2Pp//qM6yMetPlZn6FwnbRC2mcWBJkCXB+Id3jFtzAh1FfegR55tStJBEFrxBtlA+qOarv39I4HWEI/mCNLdODh2e9DTYea8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609064; c=relaxed/simple; bh=nXECD65rD0s/P1xvsdNfQSv3wCJRkijHf1Q3X+aDxVg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tJM/pvSsyhwBgcoK5Unx2HPkVBnJXdz/t4V3lpYBAdz2wBWkBL8YcVnSI/PAbDcDt8FpzvvtGmZMQbpSlLZ3pbuR4mRSPPjCbQJE/TQ8K2IUpaMvx2vMf5ejyqdSiILJZVEuztr4uyJUBxSeEz3TwsSFDikPbv8QJAPPrmXtJ64= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=InQ0Ny3W; arc=none smtp.client-ip=209.85.167.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="InQ0Ny3W" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-5101cd91017so2348537e87.2 for ; Sat, 10 Feb 2024 15:51:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609061; x=1708213861; darn=vger.kernel.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=87LdGKdo1o52qqAOMkU7XUi8d7iSZPf2NI4GoJJh05A=; b=InQ0Ny3WiA2AX0cY9AJSXCQsAT8+oL9ynyFUM2gwDvCaGl+RLZpIyx4LPjKrwzjJMt VA1vCRmvrotwX+WgLPty8kb2XIdk91O5VC93PJDB0M0aSYRfEw/nBo5Yrh5e7hJ3ngbp a7nguu46RnboBWEoLeCi1aFAFOf10964XjlOo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609061; x=1708213861; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=87LdGKdo1o52qqAOMkU7XUi8d7iSZPf2NI4GoJJh05A=; b=cIysG/J2S4uk3MhTS4TWXg3MMQO4ud0fcN919nuejquwSvlVtyGHbLkzpIqnAygwWB I0gcfCrs+Rqjd94o0TiDVGrcR/ICDWV80Fm/PIbVcYUI46yafCrtpsMkq1MJofGZmexc 7NYRVXhJhqEU696S0nBEw5FQWfqHFtd+qQhYk824x6X5ZzbYejW3UpTiSCmWSJJl443u oHxi359JnguYE3gilzdTvbjKDneqkYyLCBHSVdY6VW2F0XGaXEb7AQEGnoNzAqkdhehd yjxkp96PBYM4Uv9U5CAP9zuDyX/7tSmwR7PC2AyXC+ybOs5Ynp4yzeuh1RBjp0fzWcuv S4Bg== X-Gm-Message-State: AOJu0YygGFeboC395oMjwFBj3PcU3AtjWEacs84/k8Zb9yFtiFM/tT2F /Yw6iqge+ulrpD4iseUoJScDRg8WygbKbzm1nq2o+yFeEQ6tIkhN3vflWXnt X-Google-Smtp-Source: AGHT+IEq7rY3VNv6LC2Taafc3eFgdH5XqlDlGxX7dfLuO3JpFXeqCj1t5ohnogVe1UA7pi42lTDFfA== X-Received: by 2002:ac2:43d5:0:b0:511:4eda:2563 with SMTP id u21-20020ac243d5000000b005114eda2563mr1744694lfl.69.1707609060849; Sat, 10 Feb 2024 15:51:00 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUYfeFXNc7BY13yOy/AaBbGoVRDaAbyI/u972bYmkBYD3ubr80foQ0xWNpFyqSy8H4iUDoKibWQ2Wb2pSv+sdq2XstMdzS1skZyxrwy+y6jYySz9/1MadhsyKafE0gPqKgcbVCkVEYUglZZ0yJ12yrJEWaGrV+vPL4+SA4hy7yQIciI1njiyhZrzp4uJ57qdaFdc92ckoivTd6t2r7xcWSNnNnps8D5GrRz0pZqPCk9hTZ3XWQJ1Umg9huBIsZYJeXMxxidlZAkUtEArXutsJZwB7AlIsdHiMtIKaflYXXP4MHOEV1xiDi86eOumYiGpjqzZRMD0MXP+/WJlBtm17IzR8PgYVNpkI1DabfLIoUeAmDMjWq6MM25EuAE/qvp5JEAP5hK90m4M7QVaaoPvV+zkaT2ZHM8CnTXSOUzPYl8D+l6fCcaoQAkgPPfKV9ngznFQQfSxBC8pYz/boHlenlHSbGk+Lds03vJ8S32oKdBfYy5kkwh4EclDUzVDV3Vg/P02+JJUYCMtna6OHznYulnu7mSoYVUqOHg4bL21dW5TSCQjsMBrpJD9CriGBwRD9susUUU9jSpedBWWpXY15vfnu9W5+F/01Hijx42Kx7E/TYxKA== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.50.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:51:00 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 19/39] dyndbg: fix old BUG_ON in >control parser Date: Sun, 11 Feb 2024 00:49:49 +0100 Message-ID: <20240210235009.2405808-20-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie Fix a BUG_ON from 2009. I have hit it while fuzzing >control on some other patches, and panic from user input is bad. Replace the BUG_ON with pr_error and return -EINVAL. Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 17df4bf6863a..20bfb6de2404 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -682,7 +682,11 @@ static int ddebug_tokenize(char *buf, char *words[], i= nt maxwords) } else { for (end =3D buf; *end && !isspace(*end); end++) ; - BUG_ON(end =3D=3D buf); + if (end =3D=3D buf) { + pr_err("parse err after word:%d=3D%s\n", nwords, + nwords ? words[nwords - 1] : ""); + return -EINVAL; + } } =20 /* `buf' is start of word, `end' is one past its end */ --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1A4CE62177 for ; Sat, 10 Feb 2024 23:51:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609066; cv=none; b=KIKPHb9xZyDsrqE4UUaSHUKEN9bWq50ysdurwA6nHQrXKwXhHwzPRO0kiK3ru7cx8uBkLoypIDR4vdEdHePpDjwJ6uCyTKm6Qg6iVAgCyq80j6GZsK0itJhexKK1QpnMHpxog5LbL6avpR53yDAyPovyIq18X2lHmyn04Ge+P/s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609066; c=relaxed/simple; bh=KhSOeCx7N/HjioQXr6VqOtlhnK8h3fsvUF59nf4Ak+Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uzvXtESRefTS31Vxl2Og/WVD+dL38kHtOPpcCiWjhRpvHUwmNKOuF5iThLWxDnojAiF2iI5TNPQrt0HIA4hOLe2sXrWEY3JR4LD0fDu1B55qZDtPAA0Nqin3yZCfXJg3Fx8q412y1YGiQf8pvVxACRxc14KxCw9gcfxAprHaGCs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=JgtEEfJY; arc=none smtp.client-ip=209.85.208.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="JgtEEfJY" Received: by mail-lj1-f170.google.com with SMTP id 38308e7fff4ca-2d0e2adfeefso14518731fa.2 for ; Sat, 10 Feb 2024 15:51:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609063; x=1708213863; darn=vger.kernel.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=y2saDJqjVn0V5IZnXz4myO9Pbq5U3qhHJ6QVZDbJVX0=; b=JgtEEfJYtRFkoEjycFdphx86txP+uvU4CJ0Ksb/8JyVirt6rS03cSfN6nSA4zwWpsP bzmE+z0ZY18ZjohBQKqNscGIq/6FJ3KjDewQE/snzxKmp5P6SmLsPx9lrQvUlrcZJLVt LwuA9QQNFwM+IX5WG7YAcW1lecomXgKGnn+7M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609063; x=1708213863; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=y2saDJqjVn0V5IZnXz4myO9Pbq5U3qhHJ6QVZDbJVX0=; b=Cp1osaH3zuVqjKuFvIXio9qp8gMqRvw9ohzi5NUipy2g5oaY0j8ROe9TF0C4GltXLP QA/U0qZHakRIV4U7JROOvEeynFZBBNMAGr74QBQCKsifoe98DannqcvN9zdUOUwSgHC3 COhM9187t1JYK2cWVEDvBUQ2LCa7U6AKdL9dAsyzNIvHbo7LqjXSQg5F/tQvK6EJGYQo lwJ0McPGGmABiCZn/O/I/KRgkSKfAMGZXz8fybbh8VYr8p2iaKGuMUQGhTk+6y3LDAE6 9G+LNwG86E8W5PaO1JHDjGbQvY9c5HxxxXGbQ6icKbtRfMO1f4gtU2UZRdRTDTkAwJym uxEA== X-Gm-Message-State: AOJu0YzYPaCoUgN+2mGpKBW+PxRVp8ukc3fpyis7t/b0hLDZIF7iN5qn TFfq/swUafWjxffWHBisuos/RnTxB7619gsdNzxmyA/FiuO/H/fntIWBA76X X-Google-Smtp-Source: AGHT+IEQNRYkkCNExLXB0eu/24eo6TVeOdEpedwiNYrfjcjHuMPRst89/1X1Qv7vMt7SYdlMDvzE0Q== X-Received: by 2002:ac2:482e:0:b0:511:5411:1144 with SMTP id 14-20020ac2482e000000b0051154111144mr1786082lft.14.1707609063219; Sat, 10 Feb 2024 15:51:03 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCX++7P2W3N6FZzJcKeOJnOS15wNbWMLQrLZgBmpkFjbPCzYsjHvgareXCm8sqvzowGcAFjyy+PlVoI1IzTzX9tqQYvEEz+mt6aK/5sbhKvp19Z2eezssNY/tXOkhYLE5xOPkH3WOJ7Hkp+79WWx7w0mQvQlDvmjBV7ENmwLLccICJVGIhqICd4FjPTUEOa4nDhYT8RR7aP7nVI7LjDtmBAphSaKvwTH16m58s6zl11Q6Qg59dJExOK2Myw/oHfP1XgesQ4E8CCDrMjhEI/CLIbzSwdHdx6swy6WdXtqS7QVhPpzHKlTbPJrKI1LYWyfKPcNTi4n9DckbcLxEbD5Npv0Gxpwz2RVHHNHcKTy+BPPreF0bJrnz3gJPQ3di53KeflmYqWQZdtRUmGGeh9zSPNXPtyd0wN8AQ7DxCRQlo7HEU/wP2bvSyKMnWLmx4t4BanahyIxt+fWB1AOQZj6q4FAUixGk9Wdb6AkuiCWhum6clLK5l8XpGPQbqpR6dfnVLaeoj+OMoH3IoukDiPl4VKag3T+aB0lM/sdacWdqNM7Z0s2ki4qoZ6tVbVaQ+INTOZvy+95HplmJ3Vw6OgSTfEWnfwymnvpByR7QumgVkhinaFODw== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.51.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:51:02 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 20/39] dyndbg: treat comma as a token separator Date: Sun, 11 Feb 2024 00:49:50 +0100 Message-ID: <20240210235009.2405808-21-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable From: Jim Cromie Treat comma as a token terminator, just like a space. This allows a user to avoid quoting hassles when spaces are otherwise needed: :#> modprobe drm dyndbg=3Dclass,DRM_UT_CORE,+p\;class,DRM_UT_KMS,+p or as a boot arg: drm.dyndbg=3Dclass,DRM_UT_CORE,+p # todo: support multi-query here Given the myriad ways a boot-line can be assembled and then passed in/down/around shell based tools, if the >control parser treats commas like spacees, this would allow side-stepping all sorts of quoting hassles thru those layers. This change apart from existing query format: modprobe test_dynamic_debug dyndbg=3D"class D2_CORE +p" introduces new format: modprobe test_dynamic_debug dyndbg=3Dclass,D2_CORE,+p Signed-off-by: Jim Cromie Co-developed-by: =C5=81ukasz Bartosik Signed-off-by: =C5=81ukasz Bartosik --- lib/dynamic_debug.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 20bfb6de2404..78b06a617918 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -650,6 +650,14 @@ static int ddebug_change(const struct ddebug_query *qu= ery, return nfound; } =20 +static char *skip_spaces_and_comma(const char *str) +{ + str =3D skip_spaces(str); + if (*str =3D=3D ',') + str =3D skip_spaces(++str); + return (char *)str; +} + /* * Split the buffer `buf' into space-separated words. * Handles simple " and ' quoting, i.e. without nested, @@ -663,12 +671,16 @@ static int ddebug_tokenize(char *buf, char *words[], = int maxwords) while (*buf) { char *end; =20 - /* Skip leading whitespace */ - buf =3D skip_spaces(buf); + /* Skip leading whitespace and comma */ + buf =3D skip_spaces_and_comma(buf); if (!*buf) break; /* oh, it was trailing whitespace */ if (*buf =3D=3D '#') break; /* token starts comment, skip rest of line */ + if (*buf =3D=3D ',') { + buf++; + continue; + } =20 /* find `end' of word, whitespace separated or quoted */ if (*buf =3D=3D '"' || *buf =3D=3D '\'') { @@ -680,7 +692,7 @@ static int ddebug_tokenize(char *buf, char *words[], in= t maxwords) return -EINVAL; /* unclosed quote */ } } else { - for (end =3D buf; *end && !isspace(*end); end++) + for (end =3D buf; *end && !isspace(*end) && *end !=3D ','; end++) ; if (end =3D=3D buf) { pr_err("parse err after word:%d=3D%s\n", nwords, @@ -993,7 +1005,7 @@ static int ddebug_exec_queries(char *query, const char= *modname) if (split) *split++ =3D '\0'; =20 - query =3D skip_spaces(query); + query =3D skip_spaces_and_comma(query); if (!query || !*query || *query =3D=3D '#') continue; =20 --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lj1-f174.google.com (mail-lj1-f174.google.com [209.85.208.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D452626C7 for ; Sat, 10 Feb 2024 23:51:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609068; cv=none; b=tdcCsBvK9Rv+MFAmi1n1Lz22NX6qwwUh0uxBtKzJWpsjpIxCeO9+ugh+T0Tw3O2zhjL7la0ze6YAlGuW3f/Xo+E3YZsuAZNY+t868qD5K0anxOSCue2Hn0G8XYenUhjo4nqZqS2wvkpuWTM4SZbNcXjDZxukx6tQY4uEXaTSCpc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609068; c=relaxed/simple; bh=wAxPq0zBe7IpEyDOvpmRO5TFTuGXvH5YMnkbzDZC4fo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OU6XmyQAf6nxU2BFDJ7SUtkwKuM5m5D5V5cXrQuY3tfik1zOz+WbcucSw8W/9WaVm18ZzC2q0GC11XbIGjwzTWjUMXeg0HXZRB0DzQZxn8W9uqoEMpg7solh63a7YhrL/bgPt6/EoEPRh8zoJfYeA3H7pnW73DHBfPoAmE7L0Xo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=A/nIjTre; arc=none smtp.client-ip=209.85.208.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="A/nIjTre" Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-2d094bc2244so24261021fa.1 for ; Sat, 10 Feb 2024 15:51:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609065; x=1708213865; darn=vger.kernel.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=T8V9Re3rorVQytgMEZlbpA/2LnF/BQwNBihKNd98pUw=; b=A/nIjTrepdalZmxzQPGEhAsrVjU1YoSqVbLilfcwHP4kBC4rdwwQZFQuoG7EVCsikb z7gOL959TxhgZgyyYVQx0eYzFag9hhJZtvwGRdAQP51ER6rleAmBE1ddlghEkG1ZPOKD xfFztFEgS3xtGHJVll8HTqg4FxpNIA3MmhPaA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609065; x=1708213865; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T8V9Re3rorVQytgMEZlbpA/2LnF/BQwNBihKNd98pUw=; b=rE397TVEmaeU0RNQvOtNaN011tTQJ42dGsG6rCdKUWdNvwRuFakum4wByzh/pbKLHz qfC1hZmQ/3vq3usjbwXWbn74RT43D39ytybMrNsZ+ILSCKhY0hqg4F3jgsJGsxgV3+Ip phwuRItzqFYO4cGdajc9Tr+VEJNjexAP7PpOtJR2FC2UTM8UKs5+TmD4pOm9cDuO8+IM cNW9SaIWYaWe8aOMDc2aa5mIkRrEs4IfPBWCiNSxvRwl8vqgv80LZM8lUXP0wxqJHryt x3JIysJPDT1bv/QR6gCd2ueT3ZrDw7QH3MQGdYri5OHF2mhvpw3DWrvIaxwyzja+uQ6s gLKQ== X-Gm-Message-State: AOJu0YyL1pdaIqTyGvYInAj/0bZnRc/cLpjuZjXlshjVv1DckcdQ7L/7 TT0+TBGQluQ0DNIspxlrnWEhESmvGYrP2iH1QBW61KkwP60Qs5XONMf/3clb X-Google-Smtp-Source: AGHT+IHP/vMFgzjTpgySXFjNLMbGaqSZC3cy2UmuEzH92yYKybw5ZQzsYSs2Uxj0gmElHyf10qaPow== X-Received: by 2002:ac2:4315:0:b0:511:4dac:f1ab with SMTP id l21-20020ac24315000000b005114dacf1abmr1671617lfh.40.1707609064808; Sat, 10 Feb 2024 15:51:04 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCW0HS+00HYoxQiogyr9WBwa1uNU3+Oy3nx55i3YZhKZAHCXUgScNtcchyYsVTu6aQdITZI3UN8DjYpzIMWvemBBq8+8pI2G3z/xvDtxlbYDwZDZU3KkXoAvUQ5B0rRwYDxFZjiZ8mDgcDkIHaYNSHdqQGGVLf162YypA+RZS36OBUf05ynuMAaNEI8JYomOPqd+qDajC6q66LlG7Kt8FvyGtY1f2Ydi/vLASFek/r4PmF1EjiZmIZdwLFmJPwn5HBG17Vco3nK+wmv6FA7Dy7vJWvMF897vGI3ry1swlBfoL8mcN46FG4HdXPiPkfR+F8tMFGeJv4jAt2T8YaTEU1QKq3ai9djg5HsSmWzf0u1IjcqvYSxZ6XBc7cNztIJhdLGc+Ahxw5HmGYdMQGlfeTv4dpKjSvzgxGqNrQyAFcWBYlM8+kjZRdO11WXfstQCUOfVTNIf+6W6leCzsQeTt3TfV1mEk9WUuFAfzR+emn1zUvVcbIibJHUTdKJMhjh9jWnVm6BdcbyqbfX13B8KCDXQcB3fMploK4bjyMmtVmrzNN+v8sKVJE7ujybBppbuT4+1IhLiBR7Uc/XUkVUtt98Ag9eNdvi1mqjO/dgfTyN7j0LErg== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.51.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:51:04 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 21/39] dyndbg: split multi-query strings with % Date: Sun, 11 Feb 2024 00:49:51 +0100 Message-ID: <20240210235009.2405808-22-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie Multi-query strings have long allowed: modprobe drm dyndbg=3D"class DRM_UT_CORE +p; class DRM_UT_KMS +p" modprobe drm dyndbg=3D< [ 38.173791] dyndbg: query parse failed [ 38.174141] dyndbg: processed 2 queries, with 0 matches, 2 errs bash: echo: write error: Invalid argument In trade for that minor format selection limitation, we get to do: vng -v --user root -p 4 \ -a dynamic_debug.verbose=3D3 \ -a drm.debug=3D0x15 \ -a i915.dyndbg=3Dclass,DRM_UT_CORE,+pfmlt_%class,DRM_UT_KMS,+pfml modprobe drm modprobe i915 NOTES/TLDR: In this example, using both drm.debug & drm.dyndbg is mostly for testing. Using drm.debug is preferred, because the drivers all explicitly depend on that input/control-point, so settings there are propagated to drivers. But more to the point, drm.dyndbg explicitly limits the query to drm. In fact, you could pass a module wildcard in the above, and achieve the same thing: vng -v --user root -p 4 \ -a dynamic_debug.verbose=3D3 \ -a \*.dyndbg=3Dclass,DRM_UT_CORE,+pfmlt_%class,DRM_UT_KMS,+pfm%class, \ DRM_UT_ATOMIC,+pf ':' would be a more natural multi-cmd separator, but is reserved for +T: to designate separate tracebuf instances. If '%' is distasteful, the backup plan is ",_,", since that would never appear in a useful cmd. Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 78b06a617918..a6c6392cde3e 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -1001,7 +1001,7 @@ static int ddebug_exec_queries(char *query, const cha= r *modname) int i, errs =3D 0, exitcode =3D 0, rc, nfound =3D 0; =20 for (i =3D 0; query; query =3D split) { - split =3D strpbrk(query, ";\n"); + split =3D strpbrk(query, "%;\n"); if (split) *split++ =3D '\0'; =20 --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4669E627E7 for ; Sat, 10 Feb 2024 23:51:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609070; cv=none; b=h0wK5FHbEJuwDy7YmegulSgv80yef4STdCE3eiN/YeRepBYAVo/5NgExaoIJX2z5mRw5K+wCEuqL8iC9aovxgUZJpd1ieGZNbOuYhKVm83Lf/S7J0ttaEn0CUI1Tdogj8+c+zUsnzOrA2q1u/l/0hd+sorRbDLcehMl0NxEA9ow= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609070; c=relaxed/simple; bh=e2HkgHzrnxkaozeso9X8OpimgMJwsOA48wio9rSEU5g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=erG+UoVW7c7v3FiAyAjCnjIhg5Sa31w4rugMFNTSBliAzA/WEXb6GtyxMVvOe6XH1aYqFzjVP1FftickXKUgn1mgWTLMBDfj7EqAej0Hd+M/sbTqQ4PYrlJ/CYckFcNpQ2yXRDM5G06bBBn1a8nZrXFAyVGmE29F9GjQWmRtbos= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=F0yf/GS5; arc=none smtp.client-ip=209.85.167.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="F0yf/GS5" Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-5116bf4dcf4so2602396e87.0 for ; Sat, 10 Feb 2024 15:51:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609066; x=1708213866; darn=vger.kernel.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=Ns2ZlXdsr7Utv/ToBSlS0u0tX/sChblP3BD9+95vrrw=; b=F0yf/GS5FIAwigHoSFmBwrq9a76GZT5vN2oWhFmpTJnsnHO+LVXK2pSQmWoaJ6/Uh6 xZzaL2fqJUTDN4szltM4ruZIkAMNJ65NHc7CQjyMqXP3PM8qqh0GVkBqpVDkvtQFeBw7 ISuLWsRBeZ5s/PHz6CXHAby7dvdjkWtXr9VwY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609066; x=1708213866; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ns2ZlXdsr7Utv/ToBSlS0u0tX/sChblP3BD9+95vrrw=; b=BLMbA/tT0wJd/PCvunEheVFjEfTsVnNEYurMoEOpVdF+FVajpn4RzXSfaFyznv0hq3 Gy+den/nRYYY9fNDrGAh8CLzNr1X9kQTlvxqS7xr7Ix0bNsaGl3xggarWznXS472ZdVj mzD3Kp0E5DOiC7Lgp5BeVDRonqpj9vCaOBWf9ydzcVvOKxKgzPB0U1eTFOW3pup3gSna NM+eKRRV60let9Wj6DsfWKTV2ABfv55tROPPI/5xNiSXHPgtSP3+wisZKT8yjsAVEDMk OKCQAc5HBpascViJqWEULVUIIfFMEGd+16g5sfg7AJyvV0PYWTeTSfPR4ptouqStaXlr tICQ== X-Forwarded-Encrypted: i=1; AJvYcCXrPaO4z/xqcg6lWyH9mepWyyvFcZsfXeo57Swh2p2L2JTnlz6HNTTUGHkuXNGzmLvNCQSLzBtHpmJabf5SPLG9Q5YLgt81IVsDgDVv X-Gm-Message-State: AOJu0YzAlrPmiImDBDR2E8R1eAcG6bwxr4Ghl0lAd4zqnEZea6iVFECT Ansrfc3F2v7XkOKRn8vKIFttJpd7pQvicIyQuqCQ2EueAyIpFLHwp2zAmB0l X-Google-Smtp-Source: AGHT+IH4oO3eCnfauS3SZj6nSiwdZTTJi+hQ1vo+gTka0ULmwyAyWUFi5iYL2vb6DFj/bsPnc7YeRw== X-Received: by 2002:ac2:5924:0:b0:511:312d:6761 with SMTP id v4-20020ac25924000000b00511312d6761mr1882020lfi.47.1707609066447; Sat, 10 Feb 2024 15:51:06 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWz2FwLx9omz+tWms88s4OYHo/O8PSui851Mih+LNW5OyhYTV3MwgvMWwjdnA96xAXAB2gx7x0KPy/06Kd90Q3zQcy09AzjVPmihWjg6EcM9SMPoWdTxQZz3YrudbSkYPmtG1KzqpRJy3T/wuXP3UaNMPaMBhtkUpPo1hAWmKxdb7vJgKD7quoqRycte4VTZOAmbLseN4WwBNNgQHD1Dsizj7h3Zmc6+CHu81p0eoBgztQ9sbofkspX4g4OTo0h0x2zHyoHHwilz3yPmiiuImi9qYaKl0V/JcEt8z5NJVrPDCOvCuNhwg08svpNp4e1gmVkxtFpq7Jv5xPkc0t8zaNFIlUDfr/ELTBVMZ57fxKg5vNX5h252eXes9r9GeLN47tkfsOTtPwx4dpJrR64+esSytnY4w7ydjHpDKaFe0azEWHxMqYwSdKi0gDoJ2WPufrLTuE87tQTXNsf7OFRiHt9IBYCgL7JBMGLqI9BzP+dprkcQcLU9Eqa4yo/J7KtWhdTSVfZVAob9fMJPvmiyWAomKm3L3lW6se3lCf+hT1uF9vaB7OkpWXsimpK4PCgBHWFqnSoVZ83xb7xqJFu749k7dXzT5MsywJKu+29rmVBh6C2LA== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.51.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:51:06 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 22/39] dyndbg: reduce verbose/debug clutter Date: Sun, 11 Feb 2024 00:49:52 +0100 Message-ID: <20240210235009.2405808-23-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie currently, for verbose=3D3, these are logged for each query dyndbg: query 0: mod: <*> dyndbg: split into words: "class" "DRM_UT_CORE" "+p" dyndbg: op=3D'+' dyndbg: flags=3D0x1 dyndbg: *flagsp=3D0x1 *maskp=3D0xffffffff dyndbg: parsed: func=3D"" file=3D"" module=3D"" format=3D"" lineno=3D0-0 c= lass=3D... dyndbg: no matches for query dyndbg: no-match: func=3D"" file=3D"" module=3D"" format=3D"" lineno=3D0-0= class=3D... dyndbg: processed 1 queries, with 0 matches, 0 errs That is excessive, so this patch shrinks it to 4 lines: dyndbg: query 0: on module: <*> dyndbg: split into words: "class" "D2_CORE" "+T:foo" dyndbg: op=3D'+' flags=3D0x40 maskp=3D0xffffffff trace_dest=3D0x0 dyndbg: applied: func=3D"" file=3D"" module=3D"" format=3D"" lineno=3D0-0 = class=3D... Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index a6c6392cde3e..4954d3e5be5b 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -871,7 +871,6 @@ static int ddebug_parse_query(char *words[], int nwords, */ query->module =3D modname; =20 - vpr_info_dq(query, "parsed"); return 0; } =20 @@ -896,7 +895,6 @@ static int ddebug_parse_flags(const char *str, struct f= lag_settings *modifiers) pr_err("bad flag-op %c, at start of %s\n", *str, str); return -EINVAL; } - v3pr_info("op=3D'%c'\n", op); =20 for (; *str ; ++str) { for (i =3D ARRAY_SIZE(opt_array) - 1; i >=3D 0; i--) { @@ -916,7 +914,6 @@ static int ddebug_parse_flags(const char *str, struct f= lag_settings *modifiers) return -EINVAL; } } - v3pr_info("flags=3D0x%x, trace_dest=3D0x%x\n", modifiers->flags, modifier= s->trace_dst); =20 /* calculate final flags, mask based upon op */ switch (op) { @@ -933,8 +930,8 @@ static int ddebug_parse_flags(const char *str, struct f= lag_settings *modifiers) break; } =20 - v3pr_info("flags=3D0x%x mask=3D0x%x, trace_dest=3D0x%x\n", - modifiers->flags, modifiers->mask, modifiers->trace_dst); + v3pr_info("op=3D'%c' flags=3D0x%x mask=3D0x%x trace_dest=3D0x%x\n", + op, modifiers->flags, modifiers->mask, modifiers->trace_dst); =20 return 0; } --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1163162802 for ; Sat, 10 Feb 2024 23:51:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609071; cv=none; b=F7AZS3H3+mL4yjU0MEVf7aBG/AIVFcx9TOkVVeDRuPkUEMttIHfM1D3Q+6H/XPyDIWGQZAMGl/RZlSQ21NDklLwImiyeioN3R918T/ln3iReWqjyiEFKaKU98QOeCKXXTkBu0CLqAlX9yywVhy9DLM+uZm26h8F9kwggSUWF3Zk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609071; c=relaxed/simple; bh=jg05zPtAl9j/yTZ1g89+XrwMdlHjTcXit8rTUQ5mFfE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JtFC7tGl9NPqNd3fQyK+4LvdEW/xdmlzP5L+jE754942Ky+QONa9csTqaK8KecoTJE9mxZuHc/jD3+tFDWwHi2OUMwL57ENMLc7DZOxfXKrX9hf2l4oYzkV4IMHjNEtlusuXLqzQty/taPxZ6tQmvdg2BMNS28Ey1CRpg6oCPMM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=TKZ+M8l3; arc=none smtp.client-ip=209.85.167.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="TKZ+M8l3" Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-5116b2dbd16so1948428e87.1 for ; Sat, 10 Feb 2024 15:51:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609068; x=1708213868; darn=vger.kernel.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=eFBKfV90tnVCKuDzo1hfvS3bOF2HEydpBXLRzyT1NsA=; b=TKZ+M8l3jqCFmiJdbMxuoHcGsdAiwIB7s2LTSrhZIrU4tconuaVdwuGI/wpDquyq3P zBFpEJdpbWs/41vhTSIkj5TBN5sjjhrzfruSQnJqxfD+YiARueN9cHjkq1xFL4UfpCAj pzQ+qK9cZd7vPu1ETaYHLjgizlSOYYtzjw6ls= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609068; x=1708213868; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eFBKfV90tnVCKuDzo1hfvS3bOF2HEydpBXLRzyT1NsA=; b=ltSVcnUo3gaffu2LxsBqOY2sWk/zQ7TX83/mbKpB/LcQBLl0k8cWVSsCupvkx8pfY2 K/p1FxNbnGH0HNXzorKxovOz3NDnoYJrNP7wFqjOlI4qV7pRoxf8Up5BwCeMPywJZ6O0 U/E+x9q0+/skOeJquwxxg5chaNjm5mAN05r3SBAK5MPRZ5/uHZ5WEXpHMEpFCSxVWLJ1 zq3T+oKZxQ0Pq8jxU5/2Dxb+e0OZcoH/pbQpJJojNGSjw1+RxrcI/dCft0GZQtAY4KF6 IDNQfl7uoJercBJfLiJGAw1/3N9aWULNlkKUeHv2KDx0JfcFq3IGrKb53xlhDHSithSs ZQNA== X-Gm-Message-State: AOJu0YytFRi69k8Oj7egFI3yQah43S77T1W7wLWnwNqh+9OJh5hp14Hz QYIgt7Dr5YkPKUbCpZNUCJs95+vCaf2geS1u3JlMnxgbb4tJWhDw31eptHqT X-Google-Smtp-Source: AGHT+IGbybOhszlFxiUz0sUlIz9IYqotDM+OaWMZQkllevNo/5BweLOIqCbwhXu2TnfT01LgkZVJAQ== X-Received: by 2002:a05:6512:282a:b0:511:7b35:9ba2 with SMTP id cf42-20020a056512282a00b005117b359ba2mr1214823lfb.0.1707609068114; Sat, 10 Feb 2024 15:51:08 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCU4rfk+26klrsWpzhO0rtSX88PTmmTRwQgnnwezWXQ1kVKVHZL4WhA9+WoWu8qabtVcLE7eaa9eti/qXsWKJV300T6z8WTYnEB4CQH0ic2kl/DbndJ5RAuLDn+3QhlQx6Vix2J6LMWqRljM7ZHI3vLvQzi+bzKg6MwwP4Lc9ANt2t13jEUkwq2doCRCM0NdBckpeK2MC7sc7S9lgRFdY0a2pyxBWVSE0YOr3KJzaFNj8kWeWRNPAElz3q/FaQAYVbOmwN/PmnUExx56gLMaySxBD8pduS61FWQ4oSZimX6hnlNSEn9e9L73RxyHTOM8b1mQ8ZWgy1AcGlJxYJql8PrL2eqEdepClkTRblys83EW4zKmDFL6YiCzrFQdPwMKpuwOuqhl6cvwEGhSN9Lna1P1PGUURvne/pFzCGNTsyKKAnXMyHUVppdJedMChac5jbMepkc2lggiRs1oaxBLpMJEdMg4UqatV9vM4xMJuzo3O/rtVeWaqu5QINhBq0HDUlfVKN2mq8OFFxCD78J717o/8EzhsHZGJTvsdZEQzgPlg1OfWZGwnbNLw9msgz4YpU5GhtDQGi2TLM+pv2rVBjZ8/zBtgHsyxDaSDF5c70AvxKjXIw== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.51.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:51:07 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 23/39] dyndbg: display the bad flag-val in parse-flags err msg Date: Sun, 11 Feb 2024 00:49:53 +0100 Message-ID: <20240210235009.2405808-24-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie If ddebug_parse_flags() rejects user input, identify that input value in the error message. Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 4954d3e5be5b..089765afc972 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -973,7 +973,7 @@ static int ddebug_exec_query(char *query_string, const = char *modname) =20 /* check flags 1st (last arg) so query is pairs of spec,val */ if (ddebug_parse_flags(words[nwords-1], &modifiers)) { - pr_err("flags parse failed\n"); + pr_err("flags parse failed on word-%d: %s\n", nwords-1, words[nwords-1]); goto err; } =20 --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 62D5B6281C for ; Sat, 10 Feb 2024 23:51:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609073; cv=none; b=dlbOfd5Up4x2euhqQoCbkoGEus3OUp2Gg+LRNqyNLzG1s8ZCYqLyP9IxAVhGj6DH/sQ5LroyNNxcPzVbdJtVa+0aOvM0m9wec/EeR3/Rqlwdalms5/NJB2gfm0TjwJmyJWljc0B6fX7P8LmrOTQsSRvyYROvlAXwe9aAW/d8DnA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609073; c=relaxed/simple; bh=Id7179WCdgrN+FSm22opqsAgq898l20m29SsJvJcSX8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WFQz7aDbJJdJQdLa6OtfzNZfoUqwXiedJIqg1o38YwqxNhp55tA77Cf49aZ9cUAt5zg9cDCu3YIZr21nhH6YToGqXK+oP/fokqoX55VXMNG032sZxOTheXapyit+xzVeFg2KsSWm7xUHgwnxtcsQBsW1Xt3+Hs15FFJ8Crvl+UE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=DH9efwl5; arc=none smtp.client-ip=209.85.167.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="DH9efwl5" Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-51182ece518so659242e87.3 for ; Sat, 10 Feb 2024 15:51:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609069; x=1708213869; darn=vger.kernel.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=WZ+n5vQl9SXL8QPoIUHsB3HUrPVSipwhNEZ+uqM/u1A=; b=DH9efwl58sNiWSlsa7aQtkipzrw+KI6G/A2+z5DY0t+KDmGhvIaz1sMzbqLOJ+Hpoh zu6qSzVyXjJBT5ExOIuzZN3NKPCudrpSO1m5mSGuqVdLZi4sMwrLMFQT58QsbFe/xxTu TWbDu8yPqYztIqcdrk9Jzky8l1pAg9GhScmCg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609069; x=1708213869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WZ+n5vQl9SXL8QPoIUHsB3HUrPVSipwhNEZ+uqM/u1A=; b=E2umSh/Y+dVH1/d7V6Q/0pc6Y/L9YKQPdt7obkjcVWgoB9g7xNWtGrkydfc5Op12ZJ ckhCV3x9493D1/h4eLfd5IShBcJ3IuIDbeuFg2jXjJVUUyAEWP5G1Fsc1kT1VagPiTN7 BUy1L1P1IQzphDmNUPG0WuhaSG96uOs1o/anAydbuH/XM+a0wldUn065zi9z5FzllD+z iLS75ObENK2e/2JcZpaKOREUsyXR1Qz5SS9YtkSJGZ5j4fXeXBchir0Ppq6O8T3PwtNX ESrbqpWw6Yuzru63V+kL0wHYy8UgEQGAcAAMWX6jRuoT+g5zOU+GV8cC5b35w4XJMSyW CtpQ== X-Gm-Message-State: AOJu0YxVwyuscdIxzm5H9v4FzHUZQ8IaZ20aQtaVwLgLjLtElCJVQ1W0 gSku+Tc7nIzGhGaVaTbvsifywfe79p1q1VajIjBdQ5UfjZ6y7xIXARzcRaFt X-Google-Smtp-Source: AGHT+IH/qcS7sqCO3QyY6vKvWW/RPjYH/FMXLroY5OmuMCaUyphACiXQdTgCsWo4Ff94Eb8A9bKTAQ== X-Received: by 2002:a05:6512:400c:b0:511:5eec:9b9a with SMTP id br12-20020a056512400c00b005115eec9b9amr2585367lfb.52.1707609069628; Sat, 10 Feb 2024 15:51:09 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCU84YU62Gbc/sEoczwbwEueJdzT/vpIAqq0rJ3WslSyzSBLDrnvQfM974LIVoraHFAOYB951XUfArwYNDnheW1sLxBt30Yk+lwPwom7izbVUaBQgeArK3qBTTP24bfn4RkvSKhSkLlg4fs25h2yP5G3hbBpWsmiYbhn1CVT8yEiR5kSrMRulJ5aSjSeStP8wgD7a9qcS5uEl2MQECGvwTg4qKqWPidfZJhGAJ6JsuJzQDBApAT6g8udBuwPZ4VMVOpP1TBwdrdSxmZW4ms/nyIQGb2yDpw6StIFbVbXTfqKp4QFcpvqFBUNqul9WKAfVN6b94gs28nhxltPSykpKMnWZ80k9lID2elJXPE3Y2o4rDskSow0m/2P0BazOHBNNDv9JAFXT3sMblBvhXyJiTft6QaOzMDzxp/pKok8fHkcm6ZJAu8VktI7hMOm/9241kY/75+13IAS/1Q5Qw7fcvZdtSZGRpRPylrHZmiY/XYnFEGi/LfAHrQOV9YeBse+nPi566IsDXwe2oJMHmIurBHwxFZYUQDorGAzaoYSm9ObUUEk6sFLljVub/QpLtoQOvxRqAYzhy6z6ehuzxtHnWNuuXSsQDTZ4lDqXOvF3OxhVnEKKQ== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.51.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:51:09 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 24/39] dyndbg: report err in ddebug_parse_flags when read_args fails Date: Sun, 11 Feb 2024 00:49:54 +0100 Message-ID: <20240210235009.2405808-25-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie read_args() fails on '_' (the last opt-char), and returns null. report this against the opt-char. Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 089765afc972..3d0c6b5faa31 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -903,8 +903,11 @@ static int ddebug_parse_flags(const char *str, struct = flag_settings *modifiers) read_args =3D opt_array[i].read_args; if (read_args) { str =3D read_args(str, modifiers); - if (!str) + if (!str) { + pr_err("err on '%c'\n", + opt_array[i].opt_char); return -EINVAL; + } } break; } --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0DEAF629FE for ; Sat, 10 Feb 2024 23:51:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609074; cv=none; b=lKYeTybRPl8uPV3tkgKJagWo2q9Bh7PcNqRa/GQLlnVXXPfmU7lS2ZkreULrYk6y0SQz2ZczGVEdDn/+Dws+2RaZXRyv+lA0HqS01VmZJAa2WkqDOLUCSVGJbYyrvpLmYg2QausLHhXKmHLB2NPDPw+vncx8Wj5X4uXKZwCiO3g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609074; c=relaxed/simple; bh=32mpD1IVHOqTValUWgcEdGTVskgsJqtMGFjqMVc4u/8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=otLgBgS/7AM0XZS/sQeeRFtwKnhzhuyljk6s/JwCEZXXP48sx9VVsJPmD25IROTTGJhz5OOlPk+WxiJpn21YblvZFLZMKq+iXs8nzuzuskkrFo3x1hjlpfE7seyC01dh6y2AzfuwratnO8JOV570ZfX2qUZcgFWVPXSWzhDCUUw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=oQ8n6kz2; arc=none smtp.client-ip=209.85.167.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="oQ8n6kz2" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-5116b017503so2861773e87.1 for ; Sat, 10 Feb 2024 15:51:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609071; x=1708213871; darn=vger.kernel.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=zmhUVgCdk+qI3t9KK3oQMBouh6tU/rMtsVjdtdgFFTw=; b=oQ8n6kz2hTq9NAxDYpVXRBqEkqp4V4B4wkx7uxBqJOpyG7sgp+0+iDmCeejgUKwPQT OpRtM0D1V5qZlUGQDE+gZHrNazE8EpILKn7m+Idg39GJVGm/Atz7VGdduVGnaIgpPQyp QTlEw3jS1R+hcC9pf+Kn594lGqwio/amWW1pQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609071; x=1708213871; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zmhUVgCdk+qI3t9KK3oQMBouh6tU/rMtsVjdtdgFFTw=; b=ZGwvbPPrb69FiNc4xgoqfpAzfrpqxFmG6yTeXLSpMM7Emam4dJZogUM1TiiBNN23D5 1EfqLfLsWaTVa/OFccNfzJXiqjwO4vj5Tf3OkzZFXGAGMoCHCcbSH4ErxnFxb67pwfjS FTYXKOhESWnIV/svBbMDBqzb87eem9t1quV0HPqfh5uO3XtbzqbLQywtwByHBK9UQEss Gbth3I+Rs7ZZBcO+5pu3koqLIu3D/Z5UA69BV5zINwZVe2NTVcNTklXUfHattrXxVmEe e0xUNwa8uA7nOT0oT/Y34KjMCIzlyoHX43Bkw1dUFI4GVnaFSN3fnWYA/SiN+PHzrFAa a+wA== X-Gm-Message-State: AOJu0YxoIrPCQ0a9fSinVIind8mTJy+/CiYOAJwmeleiAB6VOS7yU2mY m/9KVlq4J2XVJ8mVB0qLgAEeaC1WvWAlRXmycz4DoFBnYfEMcq3Mm3ZnHSY2 X-Google-Smtp-Source: AGHT+IFfGsK469pNloItUpLlNufIHL3CU7AZi3WunjJCeX7uNh0/b57qgGAG3Xb36wnXuRyAYbMoEA== X-Received: by 2002:a19:e002:0:b0:511:5a9c:c9c9 with SMTP id x2-20020a19e002000000b005115a9cc9c9mr1917171lfg.16.1707609071329; Sat, 10 Feb 2024 15:51:11 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUFk5okXDi1WEVQdBUJMHlW02yUykfeDQpGNrpbCjqT8LDj1fDrB3RNq76mvm7/DbhbCY1KYUPMD6sXwodtifxb4LEHnndRSiV9Mn1iEZKPuc+RWiOBA6ioX9zBjQJgdrAZ73EuzuEiw4G1Wps9nSIiLmTdrExBGNxaPGPyhF/+slIe4VHb6kgnGIH863+82tiPGvi9ZNuV8b90kv4aMdrIMlQ6joe86hzIJr+Y9bXI2KC564pm7+kXOS906CsDcp/j8b8mIl6Dd9Fvjv1xhp2gpDOg7C1wIDnnyg6c03RRwjAMm3U9zHMvt3rudq3FuSSboWDe/hEme0Z5IXKDawdEFQvvaN1j/rRQKpfCqdWtCOW/Cumzk0uWXLJAUY3xutTfmLod+GIqDd8HSfFb94+vUIretMnLXDLSyS7G9i7bGuhliBRCdi1qFvLa/bn5cMjtLiqDCDnjRjB6zHvuzliqsKEHOxm8V07uUExQO29F2UUVkQOccrSzdDL3xWXpnd1qVsCCk1yt9O31HQmUixw0LLB+W8daokmECaMc3sUsyZsJo6eA0ss5Pfh81/4Ax0ZMwpJueD1RazBtaVPBDMugkJOvIVEVpnzbCrPOb4Ub85Iucw== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.51.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:51:11 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 25/39] dyndbg: don't process queries when trace cmd fails Date: Sun, 11 Feb 2024 00:49:55 +0100 Message-ID: <20240210235009.2405808-26-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable When trace open or close command fails then stop processing next queries in multiquery string. The rationale behing this behavior is to stop processing queries which might be dependent on success of open/close trace commands. Signed-off-by: =C5=81ukasz Bartosik --- lib/dynamic_debug.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 3d0c6b5faa31..d8cd40faeb4d 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -939,7 +939,8 @@ static int ddebug_parse_flags(const char *str, struct f= lag_settings *modifiers) return 0; } =20 -static int ddebug_exec_query(char *query_string, const char *modname) +static int ddebug_exec_query(char *query_string, const char *modname, + bool *is_trace_cmd) { struct flag_settings modifiers =3D { .trace_dst =3D DST_NOT_SET }; struct ddebug_query query =3D {}; @@ -954,7 +955,8 @@ static int ddebug_exec_query(char *query_string, const = char *modname) } =20 /* check for open, close commands */ - if (is_dd_trace_cmd(words[0])) + *is_trace_cmd =3D is_dd_trace_cmd(words[0]); + if (*is_trace_cmd) return ddebug_parse_cmd(words, nwords-1); =20 if (ddebug_parse_query(words, nwords-1, &query, modname)) { @@ -991,16 +993,19 @@ static int ddebug_exec_query(char *query_string, cons= t char *modname) return -EINVAL; } =20 -/* handle multiple queries in query string, continue on error, return - last error or number of matching callsites. Module name is either - in param (for boot arg) or perhaps in query string. -*/ +/* handle multiple queries in query string, continue on error with + * exception of open and close commands, return last error or number + * of matching callsites. Module name is either in param (for boot arg) + * or perhaps in query string. + */ static int ddebug_exec_queries(char *query, const char *modname) { char *split; int i, errs =3D 0, exitcode =3D 0, rc, nfound =3D 0; =20 for (i =3D 0; query; query =3D split) { + bool is_trace_cmd =3D false; + split =3D strpbrk(query, "%;\n"); if (split) *split++ =3D '\0'; @@ -1011,10 +1016,16 @@ static int ddebug_exec_queries(char *query, const c= har *modname) =20 vpr_info("query %d: \"%s\" mod:%s\n", i, query, modname ?: "*"); =20 - rc =3D ddebug_exec_query(query, modname); + rc =3D ddebug_exec_query(query, modname, &is_trace_cmd); if (rc < 0) { errs++; exitcode =3D rc; + /* + * if open or close command failed then + * do not continue with next queries + */ + if (is_trace_cmd) + break; } else { nfound +=3D rc; } --=20 2.43.0.687.g38aa6559b0-goog From nobody Tue Dec 16 12:20:33 2025 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A079C63101 for ; Sat, 10 Feb 2024 23:51:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609076; cv=none; b=FXi7MAehCdyZ24ds2CWicRH5GSXe8WWWSDkHBALdoffbJzUHU2oDKAe2HCUGbCGx/N0Ini323cPd/CbPXKSqqAFZobOTJdJmOJzvdK+0YYDZXEubhAqsqa/9jEcrvbyLYndZGvCsrip6LnXLDp85Z1T2RB5yBreew40WOBMngMU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707609076; c=relaxed/simple; bh=Q9a02DWXVcGFESvWK0VJZsN0BHwc8jj3rMZ5PtMrKP0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sD5qSLEMfvVUDv4RWmhjZLFymAtTrV3x6YlRwfuz0TuZB3neiltDzfVlEz8YBisdXd/uBnF3m8Ir8YCx3iRsDsAj/nqh1kafJBo27TWKkjJ14wg9+9bmI9Rgd1KwuddRAEf2vKpNLckSih5HVsJGi5dJAUDzBklC8pYpr3FR3EQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=MtyjvORI; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="MtyjvORI" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-51178bbb5d9so1840857e87.2 for ; Sat, 10 Feb 2024 15:51:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1707609073; x=1708213873; darn=vger.kernel.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=SmuP22pE2p+4QTMWxcu2yqFJ4oYEpoJdJHaC6boMHYo=; b=MtyjvORIqM841/h/dJwlHtto/2wJkB/UbXh+voayItWdH2zaDzjRlBaE5Ia1EMYmUf oLLVewGMVOpw2ZI1N5IHl9zCAk7PJnpLetVJfco6t+nQVzXKQrLcZNPe+4cXtckcfagv Mzd7BTfl1qTUEaacv0E1ryjV9Bbcylc+ohlTU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707609073; x=1708213873; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SmuP22pE2p+4QTMWxcu2yqFJ4oYEpoJdJHaC6boMHYo=; b=t/LwbYRKTz7R9+3zxeOR7WEcQBvzN/YAcMoWVwEDf18btlBGbG09IFAhbXTBgU7P/w uGHlDQ8kKhd8uJCdedqnJjBGOykVJJODu+E7NgZsVk6Ux8Sax/ohtHVQvpVEq6+zOufU kP+Pe4gUnS1RWqgI4RLEyMxe15Njj9W7qvNnXXrnC5udv4wL/KjWw0v6Yh1KKGx7wK3n I7SrXteZD+HTPiICkil4zdTVRYOTHWnbrCHMzaAsCRS35eI2IL2tONGkOGzDv62jlVGs EvAGTxvYqqoLRMLUjZ4BfhKuYZGZ0fyUaO2JMUCfhqArHjGEq1ywdwEpcU/5jIT/8HXh 70Mg== X-Forwarded-Encrypted: i=1; AJvYcCWT37yv7Xgn4LE1Cgcx9K/LCxwUDIdzaYULZLR7dm9hI+PHg39G8Nx51IkHGVVcNBjPy8w6AS5j5Fciq+tKb1vXF8bt/21G7eUf8OVM X-Gm-Message-State: AOJu0YxKgo8o5CmNMuxd4FBkm14+jN8fGhjY3dGO3Srx4vxgXmmAMcrb XHueah2UdlKZYN6FADWNkQFCbv1EKDlYHBM1/sL9Rw5P1E/hiEc6PWcBBGdf X-Google-Smtp-Source: AGHT+IEKmYOtY5vVlW28e/0N48Z/ssNsaeGAzFn3UKtGDCW365SqNgxuHBcFDh1N3+n3xzfO/wvl7w== X-Received: by 2002:a19:ee0d:0:b0:511:6158:498c with SMTP id g13-20020a19ee0d000000b005116158498cmr1743792lfb.64.1707609072918; Sat, 10 Feb 2024 15:51:12 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCVdcCf9GIrQOCWCgWqiXFAhcblouycJxj7aTC07HVzNWnvPjVO6yFPsJdSQtUxtjl++i798B5luFdzW6wqNB2ajAOmv8v4ltPx+Nm1y4jLq5preWH49bk+Kw5I1klfo0l7DXmyT2FnncIFwxOdPWrcWNYM25xKsxg1pbYWqJ8KkLEn/EhSkiwxnJwimHdjQymqPeUqpH3hPWyRlBa3JSBAfdg75P9pdhL3E/kvuE8h3QCf4QjmlJJg6gmxof357Rs2H7THPGH5OoWDq6HnZcLPwMOfa6wCRUSfDpVgvSzlDHVP/8/816fP848mLPNoodIQcFeisvHsbG6B9gi7wJwopBIAlmRvu1+i3XHQIzse4YlnuioUxCIque7IvXxorIyIgd0jc+rV3Q1ZQJS5nhwE+R12XhNgC87f/rml7yB2rDdSc2hX8Z/aqMa/shegt6tGRJi54A3NZGq++ScvZZq+qrT2ngGajMmLuD+1x6YrHlYwN7EnM0a/q1zsomTLJv3mBWNqGyVf3qZj1AbFQ3fssjIdpD7n2wAsQhou64AS8JkTWx4CXK2dz1lk2+VLEM3IPIL7Q55MOzhxv7/5YB8FA7u4Yed7CFZt0ap6RQD9Gtua0Bw== Received: from ukaszb-l.roam.corp.google.com (alfa56.extreme-net.one.pl. [213.77.89.56]) by smtp.gmail.com with ESMTPSA id o27-20020a056512051b00b0051179ae1846sm365561lfb.280.2024.02.10.15.51.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Feb 2024 15:51:12 -0800 (PST) From: =?UTF-8?q?=C5=81ukasz=20Bartosik?= To: Jason Baron , Jim Cromie , Greg Kroah-Hartman , Andrew Morton , Kees Cook , Douglas Anderson Cc: Guenter Roeck , Yaniv Tzoreff , Benson Leung , Steven Rostedt , Vincent Whitchurch , Pekka Paalanen , Sean Paul , Daniel Vetter , Simon Ser , John Ogness , Petr Mladek , Sergey Senozhatsky , linux-kernel@vger.kernel.org, upstream@semihalf.com Subject: [PATCH v4 26/39] dyndbg: warn if no flags are given Date: Sun, 11 Feb 2024 00:49:56 +0100 Message-ID: <20240210235009.2405808-27-ukaszb@chromium.org> X-Mailer: git-send-email 2.43.0.687.g38aa6559b0-goog In-Reply-To: <20240210235009.2405808-1-ukaszb@chromium.org> References: <20240210235009.2405808-1-ukaszb@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Jim Cromie Since [1,2], ``cat control`` has displayed callsites without flags as ``=3D_``, to positively assert that no flags are set. It also took that as input, and the docs also tried to encourage its use, allowing users to expressly assert that all flags are unset by this operation: alias ddcmd=3D'echo $* > /proc/dynamic_debug/control' ddcmd =3D_ # assert no-flags ddcmd =3D # allowed, grandfathered Now, warn on the latter. This allows to disambiguate the meaning of the :