Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp680383pxb; Wed, 27 Oct 2021 10:15:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyLIK5IwEln7zTMcxzpIF1QtogMcXghnuK/yQe4udo44tg82fXsO5KLYscScW9dBo40CjSO X-Received: by 2002:a63:af4b:: with SMTP id s11mr25096413pgo.185.1635354925906; Wed, 27 Oct 2021 10:15:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635354925; cv=none; d=google.com; s=arc-20160816; b=CyMtVtpGPQRm24fGEc0mu612CkGQzSw/xYqYOswdPQOMQV8af+5IHzFhEny8eQNaOE Q9ayqvm8/GHgtRO84aGEY9SIzLVZgd/IOYD+yQ7ttrh6zsBGCVJI0fiYXsjHOy1g3xcP EaLNrPWhUaitrLYNJtjFZSI9GrE+4SGT1UC/SocUVvVKzH+vUlpk+aa9jkuEgwO78fEW WiBXjAZATtzK+Aj+evw6mmJEJKDwjJK+vcxP10xWVK7cQ2WzK8eIoH4xwlj/9SUGi0Zi ljcvyOwOKQmTeVkFhNkuXe2fFCkx14DlUZyw94abYS8K2N/7d91bFZPxkSGe0n+SU+cy Xwwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=hUXw1OWc0bijNWeKRWwMm43lU8lNKntPX+8f8UwNPzs=; b=hRWfJlxZ9yCQ4q5aAKXzuNAnrKGQHk/zmcz6mDP3Xjv7wRiXgGUn2eixX+NSH1Lfj/ mEM7GMrzvnnr7x3nrpk7Spnf9iLTNcuBT2J6RR/d3dXCdeZUatDTpwNjlaJCI3lCNLVS XBfXTqKeALHHsx9QB6xao9F1/nAGZ6duWGWW9J1IUJQLvZrR+BTlneb/SnmvZSTJL/7k GBI+rMfv1aNyn+umvqDsBYpSxPpNZaTSnZE8jbnx1Gq7IlKRaECs5co6I/T+0UDtXOhy n5SKxCfxBjN30MAzbyQFBDuMpXOeEzDTCQlTGIJ0CunvzWexzhAkBWxLhA+HD81aNWMF Bb/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=FUKXeYqx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k6si595495plk.220.2021.10.27.10.15.12; Wed, 27 Oct 2021 10:15:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=FUKXeYqx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239525AbhJ0EkH (ORCPT + 99 others); Wed, 27 Oct 2021 00:40:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50096 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237990AbhJ0Ejv (ORCPT ); Wed, 27 Oct 2021 00:39:51 -0400 Received: from mail-io1-xd31.google.com (mail-io1-xd31.google.com [IPv6:2607:f8b0:4864:20::d31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1CBFC061243 for ; Tue, 26 Oct 2021 21:37:26 -0700 (PDT) Received: by mail-io1-xd31.google.com with SMTP id h196so2140416iof.2 for ; Tue, 26 Oct 2021 21:37:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hUXw1OWc0bijNWeKRWwMm43lU8lNKntPX+8f8UwNPzs=; b=FUKXeYqxji29MCHeOLS1XcPak25DdjiAJQrrVp7Z1xiIyzrGUGSWc9DRHRC4DNLVH3 M0ZD9wPlj8W36lJfQxAm6DpGANFbqKUD/9F4LhVQ2SnlxKnEECOChi3vbjG/uy+DiWyy AqchRPyAlFUgaMUf3lTMfOfh6dMXfTIdbZ2yW1m+wmHgmQ3+IxCXgKfQbjsWAUP1YDP1 6R15jEXiNBfRq1a+xf62CpOaKDvFeNrGmN4kf4lfRQFRlgoMli3JsxU0JobVIfxAih49 g/PGQ0FPCLPtA1RLiJ+5YceVQiH5R8kvjFi1utYo+fAP6GTn7D/FT7cDqD/0G07wBXiX GRHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hUXw1OWc0bijNWeKRWwMm43lU8lNKntPX+8f8UwNPzs=; b=fdRu7GY40nQES/ucbtLiROzMKGLJhp8djxnbvsfubO1bKZ+iZduJJtpbryBdj164os Z8lNuDIDhhCwHERbntNY10JUDYAX9yFJrbzxnfcgLB8iBhLaP1fI1WfzyPT7FA9t7j4F HyffxTGxoPtGogQ/hggdfN2CPWiGu2kLz1X9AZCQTfTpF6XHL2rwxfCJiWRf824gvf+7 cYGu5L5lT1S+zwrywpHyeVnuHu/fQKM54Y8V3DVFPF9E4lTerjah6abItODyqjfgODuF MJj3K6TK0ABTZpxjR7uX7Qp8XIkBDLkO6s8yrctwrMSXOta/pceEk67qsui9/j+j+bOQ XOzg== X-Gm-Message-State: AOAM5301BB5CmhPzHHiQ3FMsxE/v8NzSGx9NWGye4t5RF1qkj+wNS3Y4 5tZHAEsWFiXzA9+eqdzlMJc= X-Received: by 2002:a05:6602:2ac8:: with SMTP id m8mr18820933iov.112.1635309446157; Tue, 26 Oct 2021 21:37:26 -0700 (PDT) Received: from samwise.. (c-24-9-77-57.hsd1.co.comcast.net. [24.9.77.57]) by smtp.googlemail.com with ESMTPSA id a15sm2030404ilj.81.2021.10.26.21.37.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Oct 2021 21:37:25 -0700 (PDT) From: Jim Cromie To: jbaron@akamai.com, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, linux@rasmusvillemoes.dk, daniel.vetter@ffwll.ch, seanpaul@chromium.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, intel-gvt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: Jim Cromie Subject: [PATCH v9 09/10] dyndbg: create DEFINE_DYNAMIC_DEBUG_TRACE_CATEGORIES Date: Tue, 26 Oct 2021 22:36:44 -0600 Message-Id: <20211027043645.153133-10-jim.cromie@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211027043645.153133-1-jim.cromie@gmail.com> References: <20211027043645.153133-1-jim.cromie@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org clone DEFINE_DYNAMIC_DEBUG_CATEGORIES interface to enable pr_debug output to tracefs. Extend DEFINE_DYNAMIC_DEBUG_CATEGORIES to work for tracing, by renaming it (with _FLAGS suffix), adding _flags param, and using it 2x; in original and new names, with "p" and "T" flags respectively. TODO: rethink this, consider combined trace/debug declaration. good: single bitmap-spec for both trace,debug, no chance of divergence. bad: arg-type & count checks are hard, and bitmap follows too! to combine both, we need 4 args: sysfs_debug_name, __debug_var sysfs_trace_name, __trace_var // these may be NULL, IFF !CONFIG_TRACE ?? then a bitmap: [0] = { "category1" }, ...) My BUILD_BUG-fu is insufficient to protect a naive macro. Signed-off-by: Jim Cromie --- include/linux/dynamic_debug.h | 19 ++++++++++++++----- lib/dynamic_debug.c | 4 ++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index 896848f546e6..f273ba82cbb0 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -254,11 +254,20 @@ struct dyndbg_bitdesc { struct dyndbg_bitmap_param { unsigned long *bits; /* ref to shared state */ + const char *flags; struct dyndbg_bitdesc map[]; /* indexed by bitpos */ }; #if defined(CONFIG_DYNAMIC_DEBUG) || \ (defined(CONFIG_DYNAMIC_DEBUG_CORE) && defined(DYNAMIC_DEBUG_MODULE)) + +#define DEFINE_DYNAMIC_DEBUG_CATEGORIES_FLAGS(fsname, _var, _flags, desc, ...) \ + MODULE_PARM_DESC(fsname, desc); \ + static struct dyndbg_bitmap_param ddcats_##_var = \ + { .bits = &(_var), .flags = (_flags), \ + .map = { __VA_ARGS__, { .match = NULL }}}; \ + module_param_cb(fsname, ¶m_ops_dyndbg, &ddcats_##_var, 0644) + /** * DEFINE_DYNAMIC_DEBUG_CATEGORIES() - bitmap control of categorized pr_debugs * @fsname: parameter basename under /sys @@ -271,11 +280,11 @@ struct dyndbg_bitmap_param { * modules calling pr_debugs to control them in groups according to * those prefixes, and map them to bits 0-N of a sysfs control point. */ -#define DEFINE_DYNAMIC_DEBUG_CATEGORIES(fsname, _var, desc, ...) \ - MODULE_PARM_DESC(fsname, desc); \ - static struct dyndbg_bitmap_param ddcats_##_var = \ - { .bits = &(_var), .map = { __VA_ARGS__, { .match = NULL }}}; \ - module_param_cb(fsname, ¶m_ops_dyndbg, &ddcats_##_var, 0644) +#define DEFINE_DYNAMIC_DEBUG_CATEGORIES(fsname, _var, desc, ...) \ + DEFINE_DYNAMIC_DEBUG_CATEGORIES_FLAGS(fsname, _var, "p", desc, ##__VA_ARGS__) + +#define DEFINE_DYNAMIC_DEBUG_TRACE_CATEGORIES(fsname, _var, desc, ...) \ + DEFINE_DYNAMIC_DEBUG_CATEGORIES_FLAGS(fsname, _var, "T", desc, ##__VA_ARGS__) extern const struct kernel_param_ops param_ops_dyndbg; diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index f19465b114cd..b4146178780f 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -629,8 +629,8 @@ int param_set_dyndbg(const char *instr, const struct kernel_param *kp) for (i = 0; map->match && i < BITS_PER_LONG; map++, i++) { if (test_bit(i, &inbits) == test_bit(i, p->bits)) continue; - snprintf(query, FMT_QUERY_SIZE, "format '%s' %cp", map->match, - test_bit(i, &inbits) ? '+' : '-'); + snprintf(query, FMT_QUERY_SIZE, "format '%s' %c%s", map->match, + test_bit(i, &inbits) ? '+' : '-', p->flags); matches = ddebug_exec_queries(query, KP_MOD_NAME); -- 2.31.1