From patchwork Thu Oct 12 19:48:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419737 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A6855CDB482 for ; Thu, 12 Oct 2023 19:48:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1AA898D0148; Thu, 12 Oct 2023 15:48:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0E50A8D0002; Thu, 12 Oct 2023 15:48:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EC7AA8D0148; Thu, 12 Oct 2023 15:48:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id D8EF58D0002 for ; Thu, 12 Oct 2023 15:48:40 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id BF14BB5612 for ; Thu, 12 Oct 2023 19:48:40 +0000 (UTC) X-FDA: 81337846800.28.D37BD22 Received: from mail-io1-f52.google.com (mail-io1-f52.google.com [209.85.166.52]) by imf27.hostedemail.com (Postfix) with ESMTP id 0134B40012 for ; Thu, 12 Oct 2023 19:48:38 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Pz+D4A3i; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf27.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.52 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140119; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ZM5rYwdrlUHJ3qGgxecEnebBAR86FDciuES39cltGkM=; b=zPRLz23ozmBFbiLNpWFSYx9Xyl34hAEe0mjcA076gy3ROxY8YhSUeT20qvZWLSMV1ENgeV uLYrLO1gfCA2bN/bYUH4vxMhWuY8yXE2eckKjZKn5VFmVVURHpWHCMrMADszL2EBH5wgSb 3xBspaBzqhmQW7OLPxvOFiGNor3k+Ec= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Pz+D4A3i; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf27.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.52 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140119; a=rsa-sha256; cv=none; b=11VrOe0P0TlAqs4XBEIt10Qr7+OHoxw4KweP0gA2FY+BHcJggfUqFqked4ADMZOwEF6SzF fqXNCMaiYfisbClhVODsBi5eY/r64OkZMwvxpm2AEn4eDerE2delLKVO4Y0r00l6hoBRQH ETEvKevoIFE7MW1X6vSblhJn3ZFw3Q8= Received: by mail-io1-f52.google.com with SMTP id ca18e2360f4ac-79fe612beabso55172539f.3 for ; Thu, 12 Oct 2023 12:48:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140118; x=1697744918; darn=kvack.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=ZM5rYwdrlUHJ3qGgxecEnebBAR86FDciuES39cltGkM=; b=Pz+D4A3ihGdcCVsaUhjcQ0Mj1uGA+uYNuAqEcdW3eiWhds2zOo0qtAOZUYRA0/Q8BR EiS6FWv8S4p30wfogE3+Z7WfN9pSEAZY3BEIbvCbUU8AQ1EKtOGhCdTWRXs8Ri8rbtT3 WN4cjeH2i82r7OCTQnzJNo2BVYSqlyzj05d0y7VmseCqFp+588r2qwOxdBPajNlB8xOf 1//roPtWBpWfto2HYkABI7a4LTSZmUzsBWBSPkxtiEEuGy8qeRnX44KvKKZYUJ8BTRVS IBNhp4AuC6tH22JeLVVUcalB4wMjhplGJx2aNJ0SuXQMS4FCRM314gMGJVgpUiNXxJXf H2Ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140118; x=1697744918; 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=ZM5rYwdrlUHJ3qGgxecEnebBAR86FDciuES39cltGkM=; b=PbnCtW9sZ+y8AIbAb5lG8Ti5cyEK5cwva23F05zLE3fzMYHEmzQOWG3jeu2uGY2L5e 96FxxeKpZ/4sF2a3IVZCbdskbhrydrHbaRDGu5+oHH95dHUYhFscGbEhJzyfBqExQiVP h/i5McQpkbhAIOgJ0i7wQiKBwug9KEkw8Tp2prbMUxzZh6mgUTh7wY5DFCbbbY1Sdtc+ Yhs3yMJ75XPSI8rdV8E1po7FmHmLGtTM6udZQaUrkOMifhp2nd+HQ5LrDVS3cVFazQnO 15UVZCzam1Og8SlkJFHctsfUXUldWDbHrm2Gv9jWeUW9nFV4+Y4464UC9WqrUJ6+L5FU 5Uwg== X-Gm-Message-State: AOJu0YyRDs1FL1yRKWHsFcgTEhGvKCnEbs4/9jltvEGT+vzt0L1K1WCx yMeUdt+XM1DeufaNGLQhHE4= X-Google-Smtp-Source: AGHT+IHJQgyemV60d0TtSM5gRZcC8BOKY9QEWfAWdNthxj5Xm9QnZob6Y9eoYwqr1EmvKzVb/INxVg== X-Received: by 2002:a05:6602:211a:b0:792:43b4:dc2 with SMTP id x26-20020a056602211a00b0079243b40dc2mr28000700iox.3.1697140118215; Thu, 12 Oct 2023 12:48:38 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:37 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH 01/10] dyndbg: prep to isolate 3 repetetive fields Date: Thu, 12 Oct 2023 13:48:25 -0600 Message-ID: <20231012194834.3288085-2-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194834.3288085-1-jim.cromie@gmail.com> References: <20231012194834.3288085-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: uzayni93n37e4fftnrm3cy8ppy7q69p5 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 0134B40012 X-HE-Tag: 1697140118-549177 X-HE-Meta: U2FsdGVkX19BkX3evXIcRWpLPoVOnyb3xSF/dQgngiL0ZEVBKqTVrMXgdnYxdPOB/LddD+SSLKpC2Sq3xX1rSJKk01syFoOZz4v8ZoWqhZm9dppbzNVBnoHspd0TnbBpoR58Xz+B13zbKFtcc8LNhkyR9u3mFiYek0ieo7/SKbvtZK/NV8xcaPrSSsx0T77zCHjiiqyJQFB6YAnYJOirQr88NEgyVfSJd2bWmEmEYMutN1sNVPqIiBGmMYnKcQRzmJqLWe3/MZ5TCI9bLCPuT2pJvlK2JZlO0YoTXmdJafayEj9gIcPe/2hasbPAsQrtCc8faek1/IyRFwjGapE6X9idU0GzXFu1Age9G6oFlSRBgRtdmUwOY9j6moyQppQ7pu5t0bhPms2t+1hJdzzDcBGGKz//mZvE56bEq4MlaDsER06Ffj0Vb4+EzD3dtMMOdXVvMaWl8kuuWMJUsI8pGMJRGntv2mAi8NDL2WPdchG5M+TaLeFi4pdnsglI5Ut4yGb7Z+eGW6DxpjfEYIXu50I9XK6Uo5uHFgCdioZ5nLcCUdtdi1ooSVEdKsWaW0oPm7PQQnwvNg9ghOfQJC3f39lIVkQxkWQwyK5KvxpngxvzexY/aOCMmmQU/9Jh9Y+kGprYGBi3tk6X4YliS4K0/np9bQN4t7Ch79L1lQiH5utOH7tYPpPphy22slSe849zsxIJ1Q8rvB+yxLH5ztW+Q6JXaxhkcAFWJfMHk5vJLMFektuade8Ubm/LW+7Xy96tYzIVTgw7Z5e10mKuYolYy62Ja6IeeKyoPD3VSVlfrGpM9W/P7fKkxXHf0dRKRa/8C+1e1ZFTIa1XHIkCiPxcSLoQ8VCa/+jLAPXempVk4o1EXV8ymLo5wWsAtTPVuve7NGD1v/UcKOucSXn9yFS0IVdRjBGXGB+2YzAAKL8EHRjvZ0j5U01B9P7fwYOlYUhwcRnh32K4UQ0C6Lh7P78 CMRWVmvb DQW9OPBCxJ4/Cf7PXF52nT/Wqiuz1innidWAgBIS9Egz5gM4qIND2vAn1JZV1vp8tmBXaElUWZl3J65JkcORZjzj8AG+Tvlxluoyyj/coH2jjRRJY4IA01l58Kq2Ato4lU85uGKaK4bLv9Kd50flLZjrXjll94gb4Pw+HPEEfThb6gld6ov/jsYqJLRTkOt/k7V2nrklu8OoWMfpiHRIALj/edC6owamEv7C725Lc1pgj4riHCTKdYVmwusWFLt7GH/zjU/KRfHREV8Rs98uWrdYU3J24Q+ze736LUrxVfSYbeHa71TJ/i+84xaMYcK0prZE+tbdj3YJQ4pNPnX2QH3SyOdPekR/mx4CB7Pc4EyK/J0RWzB9UD9ZgljTjmFoUy3+XWdp8jDwsZg7khlAYJZwh2bv3YqBmsSY7zq7rIMVxB6CZCeb48OQ130AfQstsohPcJ6bilN0qYZuhxLK4IAJHSXbRgqhFDbmRP6xhvJDAcq4HGV5/QDiyha6zSr3TU7ZvWgMkVg8uTzDx+CQKGHf2Ixr02spsRQT9vSBusHaJ6hE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Move 3 fields: modname, filename, function into an anonymous struct, and rename with '_' prefix to catch stale uses. Add 3 desc_*() macros to abstract the field refs. Add DYNAMIC_DEBUG_SITE_INIT() to initialize the fields. no functional change. Signed-off-by: Jim Cromie --- include/linux/dynamic_debug.h | 22 ++++++++++++++++------ lib/dynamic_debug.c | 28 ++++++++++++++-------------- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index 2237d454bc19..aacfafc466c0 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -13,14 +13,17 @@ * ELF section at every dynamic debug callsite. At runtime, * the special section is treated as an array of these. */ + struct _ddebug { /* * These fields are used to drive the user interface * for selecting and displaying debug callsites. */ - const char *modname; - const char *function; - const char *filename; + struct /* _ddebug_site */ { + const char *_modname; + const char *_function; + const char *_filename; + }; const char *format; unsigned int lineno:18; #define CLS_BITS 6 @@ -61,6 +64,10 @@ struct _ddebug { #endif } __attribute__((aligned(8))); +#define desc_modname(d) (d)->modname +#define desc_filename(d) (d)->filename +#define desc_function(d) (d)->function + enum ddebug_class_map_type { DD_CLASS_TYPE_DISJOINT_BITS, /** @@ -213,12 +220,15 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, const struct ib_device *ibdev, const char *fmt, ...); +#define DYNAMIC_DEBUG_SITE_INIT() \ + ._modname = KBUILD_MODNAME, \ + ._function = __func__, \ + ._filename = __FILE__ + #define DEFINE_DYNAMIC_DEBUG_METADATA_CLS(name, cls, fmt) \ static struct _ddebug __aligned(8) \ __section("__dyndbg") name = { \ - .modname = KBUILD_MODNAME, \ - .function = __func__, \ - .filename = __FILE__, \ + DYNAMIC_DEBUG_SITE_INIT(), \ .format = (fmt), \ .lineno = __LINE__, \ .flags = _DPRINTK_FLAGS_DEFAULT, \ diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 3dc512fb1d66..c0e595483cb9 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -235,16 +235,16 @@ static int ddebug_change(const struct ddebug_query *query, /* match against the source filename */ if (query->filename && - !match_wildcard(query->filename, dp->filename) && + !match_wildcard(query->filename, desc_filename(dp)) && !match_wildcard(query->filename, - kbasename(dp->filename)) && + kbasename(desc_filename(dp))) && !match_wildcard(query->filename, - trim_prefix(dp->filename))) + trim_prefix(desc_filename(dp)))) continue; /* match against the function */ if (query->function && - !match_wildcard(query->function, dp->function)) + !match_wildcard(query->function, desc_function(dp))) continue; /* match against the format */ @@ -281,8 +281,8 @@ static int ddebug_change(const struct ddebug_query *query, } #endif v4pr_info("changed %s:%d [%s]%s %s => %s\n", - trim_prefix(dp->filename), dp->lineno, - dt->mod_name, dp->function, + trim_prefix(desc_filename(dp)), dp->lineno, + dt->mod_name, desc_function(dp), ddebug_describe_flags(dp->flags, &fbuf), ddebug_describe_flags(newflags, &nbuf)); dp->flags = newflags; @@ -781,13 +781,13 @@ static int __dynamic_emit_prefix(const struct _ddebug *desc, char *buf, int pos) { if (desc->flags & _DPRINTK_FLAGS_INCL_MODNAME) pos += snprintf(buf + pos, remaining(pos), "%s:", - desc->modname); + desc_modname(desc)); if (desc->flags & _DPRINTK_FLAGS_INCL_FUNCNAME) pos += snprintf(buf + pos, remaining(pos), "%s:", - desc->function); + desc_function(desc)); if (desc->flags & _DPRINTK_FLAGS_INCL_SOURCENAME) pos += snprintf(buf + pos, remaining(pos), "%s:", - trim_prefix(desc->filename)); + trim_prefix(desc_filename(desc))); return pos; } @@ -1110,8 +1110,8 @@ static int ddebug_proc_show(struct seq_file *m, void *p) } seq_printf(m, "%s:%u [%s]%s =%s \"", - trim_prefix(dp->filename), dp->lineno, - iter->table->mod_name, dp->function, + trim_prefix(desc_filename(dp)), dp->lineno, + iter->table->mod_name, desc_function(dp), ddebug_describe_flags(dp->flags, &flags)); seq_escape_str(m, dp->format, ESCAPE_SPACE, "\t\r\n\""); seq_puts(m, "\""); @@ -1528,12 +1528,12 @@ static int __init dynamic_debug_init(void) } iter = iter_mod_start = __start___dyndbg; - modname = iter->modname; + modname = desc_modname(iter); i = mod_sites = mod_ct = 0; for (; iter < __stop___dyndbg; iter++, i++, mod_sites++) { - if (strcmp(modname, iter->modname)) { + if (strcmp(modname, desc_modname(iter))) { mod_ct++; di.num_descs = mod_sites; di.descs = iter_mod_start; @@ -1542,7 +1542,7 @@ static int __init dynamic_debug_init(void) goto out_err; mod_sites = 0; - modname = iter->modname; + modname = desc_modname(iter); iter_mod_start = iter; } } From patchwork Thu Oct 12 19:48:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419738 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 58410CDB46E for ; Thu, 12 Oct 2023 19:48:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1D20E8D0149; Thu, 12 Oct 2023 15:48:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 10F648D0002; Thu, 12 Oct 2023 15:48:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E05708D0149; Thu, 12 Oct 2023 15:48:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id D08608D0002 for ; Thu, 12 Oct 2023 15:48:41 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id AED80A08D9 for ; Thu, 12 Oct 2023 19:48:41 +0000 (UTC) X-FDA: 81337846842.20.EF1BFBC Received: from mail-io1-f53.google.com (mail-io1-f53.google.com [209.85.166.53]) by imf11.hostedemail.com (Postfix) with ESMTP id E424240015 for ; Thu, 12 Oct 2023 19:48:39 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dbhDx3CS; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf11.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.53 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140119; a=rsa-sha256; cv=none; b=5agZlyd/IBdQxgqSnuTEFE6oMrEUwe/U2//wTxjjj0bFauHpYVJwBFBv/Cwp712uuQyhCW DtQwu2LBTxMuTx3oT9YXXygiHP311wSWcyTlohhmkgFbfeuom3+WwZYgL74icBB63Vr/JL 0RpAydNd88aySwH1Qs0SlarjhQqdFGU= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dbhDx3CS; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf11.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.53 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140119; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=qUViZFu6qDP+V9dlTKCnuIaJi78i9uWOlvfP3OhngjY=; b=ZFBWQXJcPSDqmkOk2zBG5l07mOupEDALorJsWVmjJUE+WzWuLSpOKyKM3Tl5YGfCJL6o49 7tRD2Ts/EGF+D8oYW9CqUOnUaS6pBhQRq587yCVmA1jfA3ftBwG8H+xu0hCpd6UHTaSEIx FGBCe4QXpBP5RkyA+ZDAv2Er5GfmQ68= Received: by mail-io1-f53.google.com with SMTP id ca18e2360f4ac-7a25040faffso57292639f.1 for ; Thu, 12 Oct 2023 12:48:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140119; x=1697744919; darn=kvack.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=qUViZFu6qDP+V9dlTKCnuIaJi78i9uWOlvfP3OhngjY=; b=dbhDx3CSukk5WuUd5yvKw5WVkRy/VjvqGMwIzPBimB8q7ZXJDlnOb0efIlq6EHRVYK jXoQZv8A9eoBIO/Igamka8bqOBXeFctvzf4ZqOzK0HCZGYKGg1t9hGaFgHV1EJBVDZTb qrJ+mcss9Zc91K2pcGrvnlBOFhOUPt7GiEYA83zNAENTym7LNjJ0yeyZ6iNpaWeUdphP MHgc07g5RI+eB0CFzemAnysBUFto9/QnNZXKwACAg7SiMI+J+BHe5620JlGNaCORG45Q 74BQtwu4WldSUEJZg62Vi3rkv0ACEFRr8MlN7sbZ3IjMh27VeCVa1XFmaxPI4E6GrZTB d+Iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140119; x=1697744919; 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=qUViZFu6qDP+V9dlTKCnuIaJi78i9uWOlvfP3OhngjY=; b=ZLcAhHSj98+9zBRowb9fGlGZA+hlhdGSkPbF1l5D1pJf1ZOTrcThlgAzYloQcAR69/ x8J0ZCJj5tKgx4LcEQn4HSvkN7eX9BYBkPB2pxdiJgQnQA69EbPmWqqnFI/Rv55XQZyD L/hox5qUMh0KlNb0KmPx7lNidiF/vQmiHXnv/R49gKEaQBbsDmkaoDxFYoeFD8Cs0rCX zoMwtHnaVPcXTWPklUaYVtD3udrsMrKmR6bXNLVo5QnP3q6Zi+gHHpDLK5iVPIXe9aJl 4UVlLW8HIbV9poIKfo0R8X8fYdnib9MCwYS2ZVVNK1hlG7Zjzm2ZbEwYP/SQW6OSAkAk BPjw== X-Gm-Message-State: AOJu0YxEhVppR8yxjEjbkomEtmWIdNoUmcJ+ffIdJHPa0hW/ilvBrgJw EkHjkN2IJiXMyvoOmX95028= X-Google-Smtp-Source: AGHT+IEIAuL545uphGsUTelNzl/EYkM+08iRqpJX2+URkY+jsN1KrPbPfSqrYVohS7AgKwAvd/zf1w== X-Received: by 2002:a6b:fd01:0:b0:790:c3d0:8f87 with SMTP id c1-20020a6bfd01000000b00790c3d08f87mr26613731ioi.19.1697140119145; Thu, 12 Oct 2023 12:48:39 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:38 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH 02/10] dyndbg: split __dyndbg_sites section out from __dyndbg Date: Thu, 12 Oct 2023 13:48:26 -0600 Message-ID: <20231012194834.3288085-3-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194834.3288085-1-jim.cromie@gmail.com> References: <20231012194834.3288085-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: E424240015 X-Stat-Signature: uo8kjuw87cp8o953cg4zig3nzr5afp1i X-HE-Tag: 1697140119-941931 X-HE-Meta: U2FsdGVkX19oqjOpDsSuZJMFlcyc8AyE+RU/9Mbb0gdkcGQ2yHWN8RHIi6pRQwSa9TDU0XAHJGtJwmR9W4Fxd5CeHehpl0w58hjWoRFrXumkudN3qrKumTQ39tFCTEZbMJtl4stQktiELH1b/F89AwiDPQV+fLk9sScifnu9mKu31xnFdxF0l7/aT66VHUtvzD7dL89290ZEx6YlFCaNTl2lseNwD814xbsI7qFicewmMyHIHlp1nTAk+uCJNZ8haEFTgN23IIFgKVhPdaKNuq9alljJORKs3lK+7D12B6tOr/xUN4oJ41uaXrG8hwS775EEhrkYpvB//XdDqsUh/+QsW2gJzXwVLYvEV0mtWEOxwWl42kg8Ex2c694u3WqXuz5u1ZVc1A5xGnAjBlk0c2RIrpL9Ef8uYQtAI6DWOiKLHZwgGxnbS5tdggxvaNBIEDWnNsnlaPSeFDT6trGw+USU3tk4L1SbUQrONEV2aomC5Y665wdVSVi4L2nwF+f6O0acOtJWizCfrDCncOTi7Mt47yQpGKIsJc8axkst8dJ0TtiwaKA+JJSGeqF/88Zy+RnvhIsctA/CV02QcZXWiBoS9/tlQe90EJKH9IS0zcdx3R2u8xlR9BSMXxz/AIq5M5IisyImFv5WGl4NqmvsS73LEBavfdqBEUYKmleiFXrWtUu6JAeXdMftZnD8TwSexpPgSgpu9IoyV6sJM/WvwqPogzbffS/Gz44D60RRZ6cr3XUqdsuYMrhAoqkoitsnR6gA1sIA9+41QB+UDX7JGJfNYaT1y+HLN6coA85BzTQJKp/9m/AuPAJr7HrDxoin+1nunIb3iCmmFfXPzWisA0mcZrYPyRbnpXVsyWvPvJ5ETuDaZ79IGdsMu2R22liXgiuRFnW6pGe/ZZmUXCJYfIuxrIHmwNU43IDtEDGmwzq5dg2Kfd6uM7ELIo7XQc275L0JO3j7XhN6HcFNbDr qdUVT6rY eTpDm9ktpVOfKVWGBZ+PQU4qVv9a30BaNOoa7rb8D30ukNgLuJUZYD9+nPW3LJCSwLi1CadAO8zjVmd5M84WKKFnG+26sRwZeJ0bNgLkotvnRpHSbdw7dlGARcYUtyEPTyCcz8HzmafUlP8mIyAVbTAzyiCNvWknygJWtgJJqJzLU93r/MQr7JhopO6zzW36ERjOMndA6/bGqHhhLtSbInhnuqFS/FELerCnNB5ZMVY6dJvDTVi3i9W2x5GJLRNWsFXj5nda7+BBiBJnaSawnQyA/Is8ZXjOMakBJ+H/VXGu+bCKiWhYQz06A4eExycWk5WzWJ1Sc1Ln/NimKqr1jDnMK/JVrswU9IJScduc44UXwBDgrqbYKoYqZnbp85yhPAtp6ok7WqVXD4sfYh6J6lUJvphMwSDM4tZq45EX3zYN57GdswwXcoPn1OPgSUuZ/9ZkEzNiWxsrS8qmK7yWRjmv0xCne78JxjY1nwcG0Ldhzr8GcIeSMpvzzQsScKDBrsu2PRwhmxf02u2x+9Phbx2bzM61xO1X8ENmx1E4dd9WU/e9DMt8RZef3f3hn6v40KHzDj/KWyd7/oBel4VKMuvHtgg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: split struct _ddebug_site out from struct _ddebug (adding a site ptr), and add new __dyndbg_sites section placement to vmlinux.lds.h This is an implementation detail to isolate the redundant columns into a separate section, so it specifically excludes lineno. This allows (later) to copy and compress the info into a better (more compact) representation thats still fast enough. Then we can just reclaim the whole __dyndbg_sites section. Signed-off-by: Jim Cromie --- include/asm-generic/vmlinux.lds.h | 1 + include/linux/dynamic_debug.h | 40 ++++++++++++++++++------------- kernel/module/main.c | 3 +++ lib/dynamic_debug.c | 6 +++++ 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 5451f926a753..1d128259e373 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -368,6 +368,7 @@ BOUNDED_SECTION_BY(__dyndbg_classes, ___dyndbg_classes) \ BOUNDED_SECTION_BY(__dyndbg_class_users, ___dyndbg_class_users) \ BOUNDED_SECTION_BY(__dyndbg, ___dyndbg) \ + BOUNDED_SECTION_BY(__dyndbg_sites, ___dyndbg_sites) \ LIKELY_PROFILE() \ BRANCH_PROFILE() \ TRACE_PRINTKS() \ diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index aacfafc466c0..5206a2cfdb37 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -9,21 +9,25 @@ #include /* - * An instance of this structure is created in a special - * ELF section at every dynamic debug callsite. At runtime, - * the special section is treated as an array of these. + * A pair of these structs are created into 2 special ELF sections for + * each pr_debug callsite. At runtime, the special sections are + * treated as arrays. */ - -struct _ddebug { +struct _ddebug; +struct _ddebug_site { /* - * These fields are used to drive the user interface - * for selecting and displaying debug callsites. + * These fields are used to: + * - display callsites in the control file + * - query/select callsites by the code's organization + * - prefix/decorate pr_debug messages per user choices */ - struct /* _ddebug_site */ { - const char *_modname; - const char *_function; - const char *_filename; - }; + const char *_modname; + const char *_function; + const char *_filename; +}; + +struct _ddebug { + struct _ddebug_site *site; const char *format; unsigned int lineno:18; #define CLS_BITS 6 @@ -64,10 +68,6 @@ struct _ddebug { #endif } __attribute__((aligned(8))); -#define desc_modname(d) (d)->modname -#define desc_filename(d) (d)->filename -#define desc_function(d) (d)->function - enum ddebug_class_map_type { DD_CLASS_TYPE_DISJOINT_BITS, /** @@ -139,9 +139,11 @@ struct ddebug_class_user { /* encapsulate linker provided built-in (or module) dyndbg data */ struct _ddebug_info { struct _ddebug *descs; + struct _ddebug_site *sites; struct ddebug_class_map *classes; struct ddebug_class_user *class_users; unsigned int num_descs; + unsigned int num_sites; unsigned int num_classes; unsigned int num_class_users; }; @@ -226,9 +228,13 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, ._filename = __FILE__ #define DEFINE_DYNAMIC_DEBUG_METADATA_CLS(name, cls, fmt) \ + static struct _ddebug_site __aligned(8) \ + __section("__dyndbg_sites") name ##_site = { \ + DYNAMIC_DEBUG_SITE_INIT(), \ + }; \ static struct _ddebug __aligned(8) \ __section("__dyndbg") name = { \ - DYNAMIC_DEBUG_SITE_INIT(), \ + .site = &(name ##_site), \ .format = (fmt), \ .lineno = __LINE__, \ .flags = _DPRINTK_FLAGS_DEFAULT, \ diff --git a/kernel/module/main.c b/kernel/module/main.c index 6b0b0d82b5ab..43458184744d 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -2211,6 +2211,9 @@ static int find_module_sections(struct module *mod, struct load_info *info) mod->dyndbg_info.descs = section_objs(info, "__dyndbg", sizeof(*mod->dyndbg_info.descs), &mod->dyndbg_info.num_descs); + mod->dyndbg_info.sites = section_objs(info, "__dyndbg_sites", + sizeof(*mod->dyndbg_info.sites), + &mod->dyndbg_info.num_sites); mod->dyndbg_info.classes = section_objs(info, "__dyndbg_classes", sizeof(*mod->dyndbg_info.classes), &mod->dyndbg_info.num_classes); diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index c0e595483cb9..0ad9f1bc00f0 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -41,6 +41,8 @@ extern struct _ddebug __start___dyndbg[]; extern struct _ddebug __stop___dyndbg[]; +extern struct _ddebug_site __start___dyndbg_sites[]; +extern struct _ddebug_site __stop___dyndbg_sites[]; extern struct ddebug_class_map __start___dyndbg_classes[]; extern struct ddebug_class_map __stop___dyndbg_classes[]; extern struct ddebug_class_user __start___dyndbg_class_users[]; @@ -191,6 +193,10 @@ static struct ddebug_class_map *ddebug_find_valid_class(struct ddebug_table cons return NULL; } +#define desc_modname(d) (d)->site->_modname +#define desc_filename(d) (d)->site->_filename +#define desc_function(d) (d)->site->_function + /* * Search the tables for _ddebug's which match the given `query' and * apply the `flags' and `mask' to them. Returns number of matching From patchwork Thu Oct 12 19:48:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419739 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2AE21CDB46E for ; Thu, 12 Oct 2023 19:48:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 110608D014A; Thu, 12 Oct 2023 15:48:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0973C8D0002; Thu, 12 Oct 2023 15:48:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E527E8D014A; Thu, 12 Oct 2023 15:48:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D0C9B8D0002 for ; Thu, 12 Oct 2023 15:48:42 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 9C18FC08F8 for ; Thu, 12 Oct 2023 19:48:42 +0000 (UTC) X-FDA: 81337846884.11.755B971 Received: from mail-io1-f54.google.com (mail-io1-f54.google.com [209.85.166.54]) by imf14.hostedemail.com (Postfix) with ESMTP id D00F0100029 for ; Thu, 12 Oct 2023 19:48:40 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="lEGA/A6V"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf14.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.54 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140120; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=071vttQwsRtHTk9tdWp1lQy+KTSRjIxShniNeq+GU3Y=; b=ZgJni1+g7aK0MpWRYslN+HgwiCkosoagw6n3kkqt5Eyfl4Z6FLUCpo55CNc7ych4mRROs0 65UYURbo1LlKSlpbBsmnQTwqyNOY+ISOn9rbpSCm2I2F7Feb1SFZL3TpxomQ9FNCk5EIli BSA4nnKH99ccc5vRRueg8njeW5cjRHc= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="lEGA/A6V"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf14.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.54 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140120; a=rsa-sha256; cv=none; b=YtSytnrc1fzRV5cpYK7IO95cRn+/hW95rS2XEFnVJTYLPpLBc/zQ1wKqPUznVcSG9ilnQI ItooIe8g/a9ssCH5JH6cznxPFOs9p3rJhbwCkO7Gu5sO8EWi2hyJ8StAMRaEl8Qpfku3dF ovnvHZF9auUZFnYXoFpB8EcdBRIjUfk= Received: by mail-io1-f54.google.com with SMTP id ca18e2360f4ac-7a26fbfcf8eso52467039f.2 for ; Thu, 12 Oct 2023 12:48:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140120; x=1697744920; darn=kvack.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=071vttQwsRtHTk9tdWp1lQy+KTSRjIxShniNeq+GU3Y=; b=lEGA/A6V7d7sxfSL58qis0yU9nM9RdFT11m5RSYlMOreeRP8intZnIxorwY8YtXOuT Vq1/I7QmfRA309cgYcL6TsDRz258DxUcZIwKXIwtuyPjRRxK4EG04m9FUjLxjoLPx+tm wmAJ46fNOjgOZYzXEGMmk66Kx4ZAWwsA6eFFv0ZQN2DFpXy+TxUEyC5P6xnqiHHc9Wyb F9FFLwC1SzitMTQm68kAEwrEgwcrMeNS5HYQ/vfYD1zwnECsKsMHkQGHpuP4jLIIfxxQ DhBdflI7FRN4ydQBqCruGgTx39GVZzauZDPXeei3UFuOsKnXg0mzl5r6XV9K2E79kyMJ cBZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140120; x=1697744920; 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=071vttQwsRtHTk9tdWp1lQy+KTSRjIxShniNeq+GU3Y=; b=CzZ/qmIkq2S6bEXKllZZ0fx6nrwhgoX0ebGjeMTitUo14RtuNLZEq6iGY1cncWiSfT wywEtwxeI9e1Ap8GMoYoEQ2yB1JI73IL4aDXV5UGmYQ1OMEkpSAlBeiYLqp6uUi8tn5K +yvbxUMEJZ0TrMbmb0kziaRokyHhb3SESL0NuAez2bLRyhDHL5tX3HgM8Qz+XM0onKFl Vi2Hur+MwuLSWcDrk+ee7arL1xX5LGv9z36JtkNyYubJNN9JTAikkyBMtxARWOHtBJHW kWYQQ6czsi75MQ8GG8doHgGqz7PTQmUk2dALA4iSswqcHSo9oFrVNVsqTSS7QugaNVZM HZUw== X-Gm-Message-State: AOJu0Yyb/G1rZyYCi13kfaOyhw/ITPquXXUn4M3Q0HNlFjMF2uJ9CMre y0gOa0V7of9QUMdRGVDO2ns= X-Google-Smtp-Source: AGHT+IECRXAFW385uWrPn0wiuesUrL7Wi11XXQJywiummqTkx/9vrEOfgiOGgMFRJ0iACAXIrGO8vw== X-Received: by 2002:a5d:990f:0:b0:794:d833:4a8a with SMTP id x15-20020a5d990f000000b00794d8334a8amr26752167iol.0.1697140120027; Thu, 12 Oct 2023 12:48:40 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:39 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH 03/10] dyndbg: add 2nd cursor pair to init-fn Date: Thu, 12 Oct 2023 13:48:27 -0600 Message-ID: <20231012194834.3288085-4-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194834.3288085-1-jim.cromie@gmail.com> References: <20231012194834.3288085-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: D00F0100029 X-Stat-Signature: o9ofxi6fk1azbtf9eru5zk7875cpj7ff X-Rspam-User: X-HE-Tag: 1697140120-403142 X-HE-Meta: U2FsdGVkX19wrQvnlSc0/PiSJHpgDWEYNmj/pAoxeYnXhGd7IwT43cmv8ZL7Iex5kSrnRhcuPXfNiCGsoL69ypiBT2LTFjl5h3Wg3/dMuwd4A/Ru1xl7iqCyMAWfczSGKPqzsyPsGSurSKw670il4/vOTFXZ5ZVSR8U1IUg8/L8Wmao5cr3PzGTnQGQNetFsA7HE3KmQ8jtJUvjRh/+cYVtFcokTQoBnbrbhIH+01JaRpfAbvA4VApXU0+s8qXTtQcB8SVJ2F01qE0qibkPJsUzMMLJ1X9y43Leai8e4ponjpugUUtBbA8kUhs8VKlQZzuokAZSaP+jrKR7vsnBZAlP06qUxGGkiIt/yjy4vxOmEO1x2w1WJiDUFQTORnww1NNbITdSNgEesf2pDdBcCrebSyVZ5FBN2vNuAqt6xggxXZ9farHqUk5OOQPkOdKdGvM2vLTO+i1fPrrwRH/Mmsuubux85XEV2pNpPPFanMRwe3sOLFBSLDOrh4V1rDwtkXfRXapq91Iriggv8WkDzChTXUPEIlsrWfA4FAuEpUl+0Fc5QB2pH6wsavbPMGQ5P+KWqhhiItBUUFtDE7xxqnf6yUr7EvupZnji1Ltky0LAQVbYHhHD2Al7ty6NI7kan7VNHISbAQjBkAurzSpXjUjpMCMookU4SaBipdOO3mMLXWFuGi3ChWw/cwZFkk4QBb+EZBOlvq4eZ0Y0VKK5naQg2rlVlcnRrSLfSjiRpEzHtsV26VhEfzTlasy+k6nuttU0opDAfiBACwUZsGflm4ERbnQXY/X1MC/7NeluEGHToPYilK0H0t5clyMfsgrbiTO4pl0A46Imhg8JqmLA3AjsCu2hH6h5uZRR56YfUQDWJRYd3AKU0Q5Nqc/DCgS8Rifw54V3Tcz/Ay+H1Zx/VlYOVnKORXr8ksKHSnsFMpY7Q8jn86bMJXQmCFKfq/BNgcANRwpnlOkuof6xXefc GJyGjup2 eOCxoq2G+rekZ63LDYZKqpZ4SYX3y0DTAX9qNngLLcFUsU5nudPg96JbgHOG4Iyv7UI0ZSqbgGFiLJcdHyS4S7GjLylU3X0dGHU3H9OhlXNkeMe4OqJ/AKycYzrzkc/RspQCxEactuZeNvlAeknXaVdCR9vAPbwzhx1l1c8ALiGJ55Omy2YojX03A10nYKPm3gI8qskwRRpvxILsWBA4hEr1foXBKDwWioqzaScv/qAAY8LEQwzIDChc9RT3OFjJMOXwAJhVVVYZNaK0S499tzxGpRByYMS4ugu5dEAQhC9u15Fx4MxdeClsfpiocaEzsle3EQbH4hnfDvmFy/jUcP+pEvdNIF9jqHxCv1sAg08hDcoNektU/wBajDfI3SqaE3PXUGkG8JFs/0scj2SfzOBCGLuLkgcNWVHFk3TcHshzjf2GDnCPT51HepsmgPrxiaWLtpbILMBHZim05aihu1+4v38B7agaZocriIfFltKbU61+cz/NcpNzvskI0Ao3x+xlIbUfg525RC2nKSEJMRJPtgIjphp895e8Vgk6OLZ+z7Ws= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: In dynamic_debug_init(), add 2nd cursor pair to walk the __dyndbg_sites section in parallel with the __dyndbg section. This avoids using the _ddebug.site pointer during initialization, which is a 1st step towards dropping the member entirely, and reducing the struct size and section footprint. no functional change Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 0ad9f1bc00f0..51af6a75ae92 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -1501,6 +1501,7 @@ static int __init dynamic_debug_init_control(void) static int __init dynamic_debug_init(void) { + struct _ddebug_site *site, *site_mod_start; struct _ddebug *iter, *iter_mod_start; int ret, i, mod_sites, mod_ct; const char *modname; @@ -1508,9 +1509,11 @@ static int __init dynamic_debug_init(void) struct _ddebug_info di = { .descs = __start___dyndbg, + .sites = __start___dyndbg_sites, .classes = __start___dyndbg_classes, .class_users = __start___dyndbg_class_users, .num_descs = __stop___dyndbg - __start___dyndbg, + .num_sites = __stop___dyndbg_sites - __start___dyndbg_sites, .num_classes = __stop___dyndbg_classes - __start___dyndbg_classes, .num_class_users = __stop___dyndbg_class_users - __start___dyndbg_class_users, }; @@ -1533,16 +1536,19 @@ static int __init dynamic_debug_init(void) return 0; } + site = site_mod_start = di.sites; iter = iter_mod_start = __start___dyndbg; modname = desc_modname(iter); i = mod_sites = mod_ct = 0; - for (; iter < __stop___dyndbg; iter++, i++, mod_sites++) { + for (; iter < __stop___dyndbg; iter++, site++, i++, mod_sites++) { if (strcmp(modname, desc_modname(iter))) { mod_ct++; di.num_descs = mod_sites; + di.num_sites = mod_sites; di.descs = iter_mod_start; + di.sites = site_mod_start; ret = ddebug_add_module(&di, modname); if (ret) goto out_err; @@ -1550,10 +1556,13 @@ static int __init dynamic_debug_init(void) mod_sites = 0; modname = desc_modname(iter); iter_mod_start = iter; + site_mod_start = site; } } di.num_descs = mod_sites; + di.num_sites = mod_sites; di.descs = iter_mod_start; + di.sites = site_mod_start; ret = ddebug_add_module(&di, modname); if (ret) goto out_err; From patchwork Thu Oct 12 19:48:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419740 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C2EBCDB46E for ; Thu, 12 Oct 2023 19:48:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 296A68D014B; Thu, 12 Oct 2023 15:48:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 245088D0002; Thu, 12 Oct 2023 15:48:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0707D8D014B; Thu, 12 Oct 2023 15:48:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E6A938D0002 for ; Thu, 12 Oct 2023 15:48:43 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A2D2F14089D for ; Thu, 12 Oct 2023 19:48:43 +0000 (UTC) X-FDA: 81337846926.02.61D9552 Received: from mail-io1-f44.google.com (mail-io1-f44.google.com [209.85.166.44]) by imf18.hostedemail.com (Postfix) with ESMTP id C04081C000D for ; Thu, 12 Oct 2023 19:48:41 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=iqcnlfzP; spf=pass (imf18.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.44 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140121; a=rsa-sha256; cv=none; b=YQtOTcwFRraBfEd3YePBLw8U8Uwi8vMoaE6aZ5OCIwRZYCbBhUbxdGIupvsE4JFaUir6R2 LrT2x6uPkR6B+71K6d4XJBbOIbSq74btvOqYNG6np1qN95Y+0GvCSpZsMSlh7eRXtLAFAZ REpK5a6mYlkJ3QiWUNIxQyTRkPVfIRo= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=iqcnlfzP; spf=pass (imf18.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.44 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140121; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=te8bxAntMAIcUysxac/XF+SiTDKrojbnDxZw68jqwCo=; b=bw1baCiMKUs41MmT6XafNNHZmzYgUGTn0tv/BUy3K9Hx9YOD+GTmsOgdW8qDGVCOUKU58J gwB80fY9C9Yet/8fr0/BQL8vv60ZKtLICDThlrn7TYwDXPwHDwtTL2k+7vDtK6BuwFT20z uIRfEKBokyOLZ3ppRtAdhcm8UY2Acuc= Received: by mail-io1-f44.google.com with SMTP id ca18e2360f4ac-7a26fbfcf8eso52467839f.2 for ; Thu, 12 Oct 2023 12:48:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140121; x=1697744921; darn=kvack.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=te8bxAntMAIcUysxac/XF+SiTDKrojbnDxZw68jqwCo=; b=iqcnlfzPpMHKVPBN2nKADIswqicz+VX0wBqpXN8Soi8SteINV2J0lK1PCG9pH/d5Rk QLyCynemYn/rj5VI11eMARvB0o9UxU2c4j4xkTVULuQOlv5d75hAjh7IuQrsxOo8H1iZ JNg8y3r9PPlY1gYIDtk9lIFjS2VtBq0QdInBHCQZYGmUX/i+hB/84+0JrUtedWdhALDC pBaR83nHZqhnfQkdICXcB7Cd4mF40T0qqd2L8gDksJ3roteLmzjbEQBShZRq+8TviYml yUEYzuCvILg2+tHhvcqMQgkO1C9nz/rOoKKbMXvV+Zo6s9YGZTl1FAwLwyj2CR2U0JTu Zm9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140121; x=1697744921; 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=te8bxAntMAIcUysxac/XF+SiTDKrojbnDxZw68jqwCo=; b=t6+FLKFRvSH+FOwBFNjkcqK1gC8qEBrORIT1DEmOtreMrmLlZbPg0qfiK1plSuUJ14 kYXFrRpyZkRxp/68LRR+ZwaTQyl3Ftmd2mhtyG5IB8x0emI/hUm7ylcArWVmSfqx1ORW hQIvFQkOH2QoLKMV0TQ3qX84mDhe1Iq8WS+r3D3Zi7vjqNkd7w26e58VEEavScXKptF/ GwQ3EFNYqA32w7gkjpDvr/nsiiW8zRXBnY1jRWk/ooO11QTkO5lQ0UQViHy8vSE6ALAr FYCUUuVPNz5Vxxtk6wDWBAalVU+Ok90BlVBXyea4Lx9cAnohdSn1h6bam0mRNGyAu1/a rFLg== X-Gm-Message-State: AOJu0YyHRGupI2SWlO3SW5H/euFR7VmoEe9nIIZKCtwI5l+gTQjFF2OR D5FLPdMf7cEky/Xc7FgLCmY= X-Google-Smtp-Source: AGHT+IH7Q0tZJDS4rnV1h1A7dfwtAKU66e0auNCbZdhdzYU7yxzCJw57bGNtF534Ne+eXLim0uw81A== X-Received: by 2002:a6b:7e05:0:b0:79f:cb49:f476 with SMTP id i5-20020a6b7e05000000b0079fcb49f476mr26160758iom.21.1697140120888; Thu, 12 Oct 2023 12:48:40 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:40 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie , Matthew Wilcox Subject: [RFC PATCH 04/10] dyndbg: save _ddebug_site mod,file,func fields into maple-trees Date: Thu, 12 Oct 2023 13:48:28 -0600 Message-ID: <20231012194834.3288085-5-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194834.3288085-1-jim.cromie@gmail.com> References: <20231012194834.3288085-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: C04081C000D X-Stat-Signature: 5on1nociaiyyyb65trk3ckos3b3u73f1 X-Rspam-User: X-HE-Tag: 1697140121-738011 X-HE-Meta: U2FsdGVkX1+hv558MEr0nXodR0I0sxwFAlsmY0K4JLGf0MYc+lebYavvbDXxCmNdqgxYtNdUK6miWqEUkbMzHPEi3K6Su+auLHTGkrRo2P1DA4giUj93gG73+Rl6tRCIcaEK993hFPM2v69p0WxSeTn7GugJ7B5lnyFCtMjf/8kuTg+gXd3P3cNFWOyZktgvDuCfE9dD0E0gyyMXtxwgDwFKMbD91HoAftaulvTLOQi0CD15CdZFRmQrPoBGVbgBLRM+dsDfYnw0Mc6YkASATTV788bq8CcKKXrvrH/IFt8sqSukQCrIA8rr2a2TGi4z7651iHGM9NiNQGCStJs8+qdAG1S97vkivojizoMOCxDco4kvMjP2tTqB2+ajCRk19HacecauwZBigYbzPmOcgjfmTenes9qnvbLWFopx4HrLM66UBcgngExJDSMJiCVjj0wlsc236MWuSRcx6W+sbQ7Z3ko7ZQfD6CnCZues73NK3lGXoYhk/JrYJLvY4AfVxxqHg7SD8ClO25h7S+hSFdF36TMlo3D1NbE+n8BnyEidtM1VLRIw4BpHWFDvxGRNCwAdxSFsvoNUxqMZTqF5IO6EAHCwQofr+qsdoz4OO6kPdFcThvXvi1hymq20xXMF9NTzAGPQU2zif0U9uTEb6rrssCpynQJmBPp6pIvY1aOo5TrQc8XI9Weypdl3RojhKWY3uSX+jUUij6UMK5twrgpucKkMUJAMl5zCBwbJ9UwyZh+aZYzcSYj1x+V9sU5FC991mtbmS1hPTLz89Oe40sFJIy8NcHZmzLat6RFXtukJ0SmDhxh06lZKqb9Hn8+t89iFD3atJrgKfd0Y0av269FCw4zvbkREY3/mYmLW7umsNnFBE/fzFezFSGe8XVManYHdrM9fhYTq+QLikTdY+O6hzDl0EWUpM/tIHtc+QKraUg2n8PhhXG8MJ+XQDsOXIZctz91m4IRWP6nPmrK NMubTZvm bN0K13v6hROaEQnGpd7zL5Zbn19w02ckSDPlzBba6+qnblVdkQ75D+a1AaO+205X/9Eo2G2Yz1FkG4VH9fwNIMAxQADTwSJOM98Sqec1aNlBSN+Oh6JTGOqFwrpVYmLKFgi9Jo9Wupuu3+ZyeTGZPbWKb5Ry++80dmYvBqogYR1QYvSiyLrCoXUX2Z9WQ0/ScusWfhkmZONGf4LTbomgeK3Qn7xhXPSzPVIgKQbq7OUiHyS2bvRI7t1gEznOhGYRqMwnGvZNhjoEYl6OZ3GQRJNXNQU0IH3Kz5UdE5X5ICrcp5gG7fylOw2gPJm+cgY0hMwY/0ihCwHvqfpnZiMfMcfo7CLyVdO0W30+OEzt/pmlImHotO8sD47wW8KIzmEUadiRbfBDx3CUsVl1VKapahFQz5MKKdTe8aQaJ1kzpca1CVd9sklli+lGXINKR/NQ08y3lKDeo35LNXPJVChOORPOfnqUayH5ETiP/+c7HorI8dCDikZcAr7D9jZMN95Ua2KGiLggcti93euOdYSFF4zFZpsHHq9q/bpaaJO2mrSqJytVUko3BnoxegHRMjMDCO53AoQsOhkLySr+jlIjrAWV0mwaNdB7giD1i9kMkmdBhwTku5Qy38lZ9uyfoxj7YqOqqRpo85nLkCt55lw9tInsEgI2Wjsd6H/29dQ3D0k6AvqBmEHwrx/Dmp5R0UyJpXhFtqo0HvXiS/uKOoJmiB47pUKcd3x0QxKiDHdkCIyApC2gTaJ8IU72SleH5rOBe9unPOGwuD/vJk6M/5wxafR0DfphzZQmGAG23Bny4OOHjs00= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: The __dyndbg_sites section contains the "code organization" hierarchical callsite info used to select & alter pr_debugs. The table's 3 columns: modname, filename, function have substantial repetition; this can be efficiently represented with intervals/ranges. So this add 3 private maple trees, and ddebug_add_module() now calls new ddebug_condense_sites() to scan the module's ddebug_sites, find the 3 intervals, and call dd_store_range() to save them into their respective trees. dd_mt_scan() iterates thru these 3 trees and prints to syslog, it is exposed via /sys/module/dynamic_debug/parameters/do_scan to give some observability/testability. 3 accessors are coded, but unused atm. Some Invariants (not all are relevant): the pr_debugs are strictly "sorted" by linkage order; that is by module, filename, function, line. The 1st 3 are pointers into some string table(s)? somewhere. repeating column values are identical pointers, not just strcmp equal. the descriptors (for builtin modules' or a loadable module) are all in narrow/high memory ranges. They wont conflict with maple-tree's 0-4096 value constraints. the string table also has a knowable limited address range, or there could be 3 tables, one for each column. The table(s) contents may also be sorted by linkage order. Again, this might be useful. the lineno is not repeating, except for some rare nested macro expansions (amdgpu iirc, its not important). NOTES: I tried, but didnt succeed, to combine all 3 nested intervals into one tree. This is what I thought: ISTM (1/2 baked WAG): - the 3 columns could be compactly rep'd with run-length-encoding. - the repeating blocks are intervals. - the linker guarantees full ordering. - maple-tree is good at these kind of intervals. - using &descriptor (align-8) as insertion index provides gaps. - inserting markers at those gaps allows "nesting" intervals. The nested intervals of the columns' repetitions could be carefully packed into a maple-tree, and efficiently retrieved. So this tries: adds a maple-tree field: _ddebug_info.sites_mt, to hold a compressed copy of the .sites table. ddebug_add_module() calls new ddebug_condense_sites(*_ddebug_info), which scans the descriptors, finds the spans for each function, and stores it as a range into the maple-tree, with 1st descriptor as index. Some of those intervals also start larger filename and module intervals, we mark these by inserting the file/module value just "before" the function-range just stored. This depends upon the align(8) of all descriptor pointers to afford the -1 and -2 offsets for the modname and filename en [ 2.340903] dyndbg: add-module: i2c_designware_core 10 sites 0.0 classes.refs [ 2.341161] dyndbg: mod name: i2c_designware_core ffffffff8311a43d [ 2.342045] dyndbg: file name: drivers/i2c/busses/i2c-designware-common.c ffffffff8311a43e [ 2.342155] dyndbg: function: i2c_dw_handle_tx_abort, 1 debugs ffffffff8311a440-ffffffff8311a468 [ 2.343151] dyndbg: function: i2c_dw_set_sda_hold, 1 debugs ffffffff8311a468-ffffffff8311a490 [ 2.344155] dyndbg: file name: drivers/i2c/busses/i2c-designware-master.c ffffffff8311a48e [ 2.345150] dyndbg: function: i2c_dw_init_recovery_info, 1 debugs ffffffff8311a490-ffffffff8311a4b8 [ 2.346151] dyndbg: function: i2c_dw_isr, 1 debugs ffffffff8311a4b8-ffffffff8311a4e0 [ 2.347151] dyndbg: function: i2c_dw_xfer, 1 debugs ffffffff8311a4e0-ffffffff8311a508 [ 2.348151] dyndbg: function: i2c_dw_set_timings_master, 4 debugs ffffffff8311a508-ffffffff8311a5a8 [ 2.349165] dyndbg: file name: drivers/i2c/busses/i2c-designware-slave.c ffffffff8311a5a6 [ 2.350152] dyndbg: function: i2c_dw_isr_slave, 1 debugs ffffffff8311a5a8-ffffffff8311a5d0 [ 2.351154] dyndbg: 10 debug prints in module i2c_designware_core intervals of those called by a , to scan the .sites table, and do mtree_insert() to save each new module, filename, or function found. The insert index is offset by -N=3,2,1 for the respective columns. TODO: use mtree_store_range(), with 0 offset, for function blocks. This does a few things: - it encodes the kind of interval (function, filename, modname). - it yields a pre-order, top-down traversal: modname, filename, function this is ddebug_condense_sites() in action: [ 1.506878] dyndbg: add-module: kobject 10 sites 0.0 [ 1.507383] dyndbg: modname: kobject [ 1.507763] dyndbg: filename: lib/kobject.c [ 1.507877] dyndbg: function: kset_release [ 1.508305] dyndbg: function: dynamic_kobj_release [ 1.508803] dyndbg: function: kobject_cleanup [ 1.508880] dyndbg: function: __kobject_del [ 1.509313] dyndbg: function: kobject_add_internal [ 1.509817] dyndbg: function: fill_kobj_path [ 1.509882] dyndbg: 10 debug prints in module kobject [ 1.529907] dyndbg: 3424 prdebugs in 307 modules, 19 KiB .... And heres the tail of the test-mod's do_print traversal of the tree. kobject is the last builtin, i2c-piix4 is 1st loaded module. 2864 is #intervals, deduplicated from 3424 * 3 fields. Looks like a 62% shrink, if you squint. [ 142.226760] test_dd: 2854: kobject [ 142.227013] test_dd: 2855: lib/kobject.c [ 142.227285] test_dd: 2856: kset_release [ 142.227568] test_dd: 2857: dynamic_kobj_release [ 142.227885] test_dd: 2858: kobject_cleanup [ 142.228180] test_dd: 2859: __kobject_del [ 142.228456] test_dd: 2860: kobject_add_internal [ 142.228780] test_dd: 2861: fill_kobj_path [ 142.229069] test_dd: 2862: kobject_uevent [ 142.229356] test_dd: 2863: lib/kobject_uevent.c [ 142.229687] test_dd: 2864: kobject_uevent_env [ 142.229998] test_dd: 2865: i2c_piix4 [ 142.230253] test_dd: 2866: drivers/i2c/busses/i2c-piix4.c [ 142.230632] test_dd: 2867: piix4_transaction [ 142.230936] test_dd: 2868: piix4_setup_aux [ 142.231227] test_dd: 2869: piix4_setup_sb800 [ 142.231527] test_dd: 2870: piix4_setup [ 142.231806] test_dd: 2871: serio_raw [ 142.232066] test_dd: 2872: drivers/input/serio/serio_raw.c [ 142.232447] test_dd: 2873: serio_raw_reconnect [ 142.232769] test_dd: 2874: serio_raw_connect [ 142.233079] test_dd: 2875: intel_rapl_common [ 142.233375] test_dd: 2876: drivers/powercap/intel_rapl_common.c [ 142.233788] test_dd: 2877: rapl_remove_package [ 142.234107] test_dd: 2878: rapl_detect_domains [ 142.234417] test_dd: 2879: rapl_package_register_powercap [ 142.234798] test_dd: 2880: rapl_update_domain_data [ 142.235145] test_dd: 2881: rapl_check_unit_tpmi [ 142.235469] test_dd: 2882: rapl_check_unit_atom [ 142.235804] test_dd: 2883: rapl_check_unit_core [ 142.236131] test_dd: 2884: rapl_read_data_raw [ 142.236445] test_dd: 2885: contraint_to_pl [ 142.236756] test_dd: 2886: intel_rapl_msr [ 142.237053] test_dd: 2887: drivers/powercap/intel_rapl_msr.c [ 142.237446] test_dd: 2888: rapl_msr_probe [ 142.237742] test_dd: 2889: rapl_msr_read_raw [ 142.238048] test_dd: 2890: test_dynamic_debug [ 142.238355] test_dd: 2891: lib/test_dynamic_debug.c [ 142.238720] test_dd: 2892: test_dynamic_debug_exit [ 142.239058] test_dd: 2893: test_dynamic_debug_init [ 142.239395] test_dd: 2894: do_prints [ 142.239660] test_dd: 2895: do_levels [ 142.239924] test_dd: 2896: do_cats [ 142.240168] test_dd: 2897: test_dynamic_debug_submod [ 142.240521] test_dd: 2898: lib/test_dynamic_debug.c [ 142.240871] test_dd: 2899: test_dynamic_debug_exit [ 142.241183] test_dd: 2900: test_dynamic_debug_init [ 142.241484] test_dd: 2901: do_prints [ 142.241725] test_dd: 2902: do_levels [ 142.241962] test_dd: 2903: do_cats If this proves practical for accessors to traverse well (seems likely), it will be simple to: - move the 3 columns to _debug_site, linked from _ddebug - scan them at boot, copy to the tree - reclaim the whole memory block, which is all ptrs into a (one, or more/segmented) string.symbol table - store the &tree into struct _ddebug_info, for both builtins and modules Its slightly inconvenient that the fn-ptr is a string, with align(1), but the "encoding" done in ddebug_condense_sites() could force the insertion of an end-of-function-array token (marked by N, in &desc - N). With N=4, we'd get a marker ahead of module, yielding a proper "framing". The tree would be basically read-only for its respective lifetime, its presumed virtue for this app is primarily size, speed is bonus. (I probably need to look at advanced api...) I added the MT_FLAGS_ALLOC_RANGE flag to the tree, thinking maybe I could stuff the nested interval starters (each distinct function, filename, modname) into the internal RANGE containing nodes. Thats probably nonsense, but it helped me figure out the N option. (this needs further thinking) Then magically, an augmented _find would return a vector of modname, filename, function when needed. Or maybe a sequence of calls to mtree_find_upper_range() could collect the internal node values of the nested intervals {module, filename, function} a descriptor is part of. And thats about where the souffle collapses. Any suggestions ? And how to get the maple-tree size ? cc: Liam R. Howlett cc: Matthew Wilcox (Oracle) cc: linux-mm@kvack.org Cc: jbaron@akamai.com Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 142 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 51af6a75ae92..3dc17922a1d1 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -25,6 +25,9 @@ #include #include #include + +#include + #include #include #include @@ -83,6 +86,32 @@ module_param(verbose, int, 0644); MODULE_PARM_DESC(verbose, " dynamic_debug/control processing " "( 0 = off (default), 1 = module add/rm, 2 = >control summary, 3 = parsing, 4 = per-site changes)"); +/* fill from __dyndbg_sites */ +static DEFINE_MTREE(mt_funcs); +static DEFINE_MTREE(mt_files); +static DEFINE_MTREE(mt_mods); + +static void dd_mt_scan(struct maple_tree *mt, const char *kind); +static int param_set_do_scan(const char *instr, const struct kernel_param *kp) +{ + dd_mt_scan(&mt_funcs, "funcs"); + dd_mt_scan(&mt_files, "files"); + dd_mt_scan(&mt_mods, "mods"); + return 0; +} +static int param_get_do_scan(char *buffer, const struct kernel_param *kp) +{ + dd_mt_scan(&mt_funcs, "funcs"); + dd_mt_scan(&mt_files, "files"); + dd_mt_scan(&mt_mods, "mods"); + return scnprintf(buffer, PAGE_SIZE, "did do_prints\n"); +} +static const struct kernel_param_ops param_ops_do_scan = { + .set = param_set_do_scan, + .get = param_get_do_scan, +}; +module_param_cb(do_scan, ¶m_ops_do_scan, NULL, 0600); + /* Return the path relative to source root */ static inline const char *trim_prefix(const char *path) { @@ -132,6 +161,7 @@ do { \ #define v2pr_info(fmt, ...) vnpr_info(2, fmt, ##__VA_ARGS__) #define v3pr_info(fmt, ...) vnpr_info(3, fmt, ##__VA_ARGS__) #define v4pr_info(fmt, ...) vnpr_info(4, fmt, ##__VA_ARGS__) +#define v5pr_info(fmt, ...) vnpr_info(5, fmt, ##__VA_ARGS__) static void vpr_info_dq(const struct ddebug_query *query, const char *msg) { @@ -196,6 +226,48 @@ static struct ddebug_class_map *ddebug_find_valid_class(struct ddebug_table cons #define desc_modname(d) (d)->site->_modname #define desc_filename(d) (d)->site->_filename #define desc_function(d) (d)->site->_function +/* + * tmp accessors, they cheat and seek a match in builtins. Obviously + * this wont work for loaded modules, but doesnt work at all yet. + */ +static const char * __desc_function(struct _ddebug const *dp) +{ + struct maple_tree *mt = &mt_funcs; + + void *ret = mtree_load(mt, (unsigned long)dp); + + if (ret != desc_function(dp)) + pr_err("mt-load func %lx got %s want %s\n", + (unsigned long)dp, (char*)ret, desc_function(dp)); + + return ret; +} + +static const char * __desc_filename(struct _ddebug const *dp) +{ + struct maple_tree *mt = &mt_files; + + void *ret = mtree_load(mt, (unsigned long)dp); + + if (ret != desc_filename(dp)) + pr_err("mt-load file %lx got %s want %s\n", + (unsigned long)dp, (char*)ret, desc_filename(dp)); + + return ret; +} + +static const char * __desc_modname(struct _ddebug const *dp) +{ + struct maple_tree *mt = &mt_mods; + + void *ret = mtree_load(mt, (unsigned long)dp); + + if (ret != desc_modname(dp)) + pr_err("mt-load mod %lx got %s want %s\n", + (unsigned long)dp, (char*)ret, desc_modname(dp)); + + return ret; +} /* * Search the tables for _ddebug's which match the given `query' and @@ -1314,6 +1386,74 @@ static void ddebug_attach_user_module_classes(struct ddebug_table *dt, vpr_dt_info(dt, "attach-client-module: "); } +/* + * use a maple-tree to hold the intervals in all 3 columns of the + * __dyndbg_sites section (struct _ddebug_sites table[]) + */ + +static void dd_mt_scan(struct maple_tree *mt, const char *kind) +{ + long unsigned int idx = 0; + void * ent; + int ct = 0; + + mt_for_each(mt, ent, idx, ULONG_MAX) { + v3pr_info(" %d: %lx %s\n", ct, idx, (char*)ent); + ct++; + } + v2pr_info("mt-%s has %d entries\n", kind, ct); +} + +static void dd_store_range(struct maple_tree *mt, const struct _ddebug *start, + const struct _ddebug *next, const char *kind, const char *name) +{ + unsigned long first = (unsigned long)start; + unsigned long last = (unsigned long)(next - 1); /* cast after decrement */ + int rc, reps = next - start; + char *val; + + v3pr_info(" %s: %s,\t%d debugs %lx-%lx\n", kind, name, reps, first, last); + rc = mtree_insert_range(mt, first, last, (void*)name, GFP_KERNEL); + if (rc) + pr_err("%s:%s range store failed: %d\n", kind, name, rc); + else + v4pr_info(" OK %s: %s, %d debugs %lx-%lx\n", kind, name, reps, first, last); + + val = (char*) mtree_load(mt, first); + if (!val) + pr_err("%s:%s find on range store failed\n", kind, name); + else + v4pr_info(" ok %s at %lx\n", val, first); +} + +static void ddebug_condense_sites(struct _ddebug_info *di) +{ + struct _ddebug *cur, *funcp, *filep, *modp; + int i; + + funcp = filep = modp = di->descs; + for_each_boxed_vector(di, descs, num_descs, i, cur) { + + if (!strcmp(desc_function(cur), desc_function(funcp))) + continue; + dd_store_range(&mt_funcs, funcp, cur, "func", desc_function(funcp)); + funcp = cur; + + if (!strcmp(desc_filename(cur), desc_filename(filep))) + continue; + dd_store_range(&mt_files, filep, cur, "file", desc_filename(filep)); + filep = cur; + + if (!strcmp(desc_modname(cur), desc_modname(modp))) + continue; + dd_store_range(&mt_mods, modp, cur, "mod", desc_modname(modp)); + modp = cur; + } + dd_store_range(&mt_funcs, funcp, cur, "func:", desc_function(funcp)); + dd_store_range(&mt_files, filep, cur, "file:", desc_filename(filep)); + dd_store_range(&mt_mods, modp, cur, "mod:", desc_modname(modp)); +} + /* * Allocate a new ddebug_table for the given module * and add it to the global list. @@ -1346,6 +1486,8 @@ static int ddebug_add_module(struct _ddebug_info *di, const char *modname) INIT_LIST_HEAD(&dt->link); + ddebug_condense_sites(di); + for_each_boxed_vector(di, descs, num_descs, i, iter) if (iter->class_id != _DPRINTK_CLASS_DFLT) class_ct++; From patchwork Thu Oct 12 19:48:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419741 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6C601CDB47E for ; Thu, 12 Oct 2023 19:48:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EA3858D014C; Thu, 12 Oct 2023 15:48:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E56AA8D0002; Thu, 12 Oct 2023 15:48:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CA6A88D014C; Thu, 12 Oct 2023 15:48:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id B786F8D0002 for ; Thu, 12 Oct 2023 15:48:44 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 960E9408E3 for ; Thu, 12 Oct 2023 19:48:44 +0000 (UTC) X-FDA: 81337846968.26.944F321 Received: from mail-io1-f43.google.com (mail-io1-f43.google.com [209.85.166.43]) by imf25.hostedemail.com (Postfix) with ESMTP id A50FAA0006 for ; Thu, 12 Oct 2023 19:48:42 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=mSEfOtTh; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.43 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140122; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=EdFWb7R/lDvUnWmGrNZ1doFLmbR1Cvf7k7ETF/HiAfA=; b=ERYUgFLaK/gtwSRJ650IUtscoTF9Q1zTCS6alRkWkBJDbnh21MdS0tgtE1Psfp961a72aY q0sbllloGAl5skAo5Fez4v7OzQo3W0ar5jgM1FElsb+4M419R5EXFwJoOhiogxh9vpUlI3 jur71R950Doy55rr07xYqb4qmKPtLUI= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=mSEfOtTh; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf25.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.43 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140122; a=rsa-sha256; cv=none; b=fKZGQTJQqhRAYT13ezLqASzH31XNESn8CeEMvOtT/ee3vHz5YItnItkN3x3RZ1ZJxj+MmV Qfomd/7afBu03GoSXntC6LPkEXQVIj84bamWL2wOU9rrlxITky+1A+TyexqBwxlvw6uTUw g6nN532/Ixl6aCYtFKV65DkJKIMhpJg= Received: by mail-io1-f43.google.com with SMTP id ca18e2360f4ac-79f909071c3so55465539f.0 for ; Thu, 12 Oct 2023 12:48:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140122; x=1697744922; darn=kvack.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=EdFWb7R/lDvUnWmGrNZ1doFLmbR1Cvf7k7ETF/HiAfA=; b=mSEfOtThQAo8zGYeXN4CncN68ui70BhDVzWvb24Mg5CAbi88nQdDKXxCKGt7u8QAxm pcL0XCAmdKpZx3mFyOUd3I2jiKzCo94yNUieocOeZvN4L/Gh18PsH4cVH5MoPY+590i1 1UT+Wp5d8QhQczME1AF4DwDQO+htlU6D4wfSz1p8gqRFHUMJ2xSVw2wYIXJrEBG/CzcJ l0srcsEJZmfnbdmbhm+XBXY4KXyYASAAZxH72p0S+iuTeIVNzaLwDcTMMX8mRLBb9USX g/oDAKvGcC7QrhXBAQcyd9To/2VX2Rmq5VKomVj82sdkZNsH7Fn2xvOg/znSalL7zDaP 5Tug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140122; x=1697744922; 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=EdFWb7R/lDvUnWmGrNZ1doFLmbR1Cvf7k7ETF/HiAfA=; b=ot7p+gc5J9IWLRy87AXFQR1uU9Oz95pcOADatg84lZddAhv50kkrW2y9XFalh9kisb ng26gv43wtWq9Cu3rA4XjQWX4mLdSuwFME0KfRy5Q5jxg2s/lbp0tsODVfjO8t9SF3or iVCY8y0XY+2fJ2am0roYDsFk9QpCMfS4syVRIn9SRixsmvYu/cqMaLGk5/qlz5yrVzFk QReyalVI0Vhl1Ki22bS/ErkrWvJVe1e2MXf43jfGr0Y/pobyboK5MibFhF4akkrQDew8 zmdbR8OSz71D7W+AQjc9ulyGNwkn6AMJh56rGt5/NNXMFhTmPchIEZx5nQdLtdXu3TFn HYlQ== X-Gm-Message-State: AOJu0YxJwdw8SrP1DsMWdEQPc0ok8weAXJjSO/7z6hwts40XRCJiQP6a GWEOHjnY91weafvjd4vw0ac= X-Google-Smtp-Source: AGHT+IHB8Dgmlza+u38qD643ri3DiUTOqK9L6CK0JVBufkfHlFy0t26xGOhQZRYBrjCa8x/2Wi/a0g== X-Received: by 2002:a5d:9cd5:0:b0:79f:d4e6:5175 with SMTP id w21-20020a5d9cd5000000b0079fd4e65175mr28324749iow.16.1697140121898; Thu, 12 Oct 2023 12:48:41 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:41 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH 05/10] dyndbg: avoid _ddebug.site in ddebug_condense_sites Date: Thu, 12 Oct 2023 13:48:29 -0600 Message-ID: <20231012194834.3288085-6-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194834.3288085-1-jim.cromie@gmail.com> References: <20231012194834.3288085-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: A50FAA0006 X-Stat-Signature: p7d175thce8x9h77gaycedcwqznwhgkw X-HE-Tag: 1697140122-863254 X-HE-Meta: U2FsdGVkX19pgvkULbIZVLNZd4st3ZqkCkn1gYwdAIO1SHcs0hP4vyj78bcPhuqdJi7OlNglLw8S+/pwC7cZMs9PsgcqZQWaTYJPZLiEcVGlEX/DVqSKKX/FP8B4dW9z/zm1Y2uEMpgCtohTQMAyPRVGTV6nbsYhs+ayO/hofcrUWnBaGtkkYN1F1n78gxCaif1Q5mqsQJHjr7Ssnyq7e9wVQ2b2W3wH3WTpIACtDbr+EcmriFcMeNL3uy7+3WCVzz8CjZT7LCyHftGOVbGz4qeRTAi2sCVR8hrzTjkDmxwmm7RHDmlrygy1KgMi+2kWbVF6MiwNq2r0IC0t4vfAF4jCH7VnUaOrMAf7MwWx5UeRrLCgMI4gFKqC/0R4jjwxTloTHQPbicfV9xkW34OIGvuLlRjztdOZ9n6mco10JAq1v7YuuIai2FVg2tIrW8jEBLIIQFRwO1lIniNHJ9Ub63ppVBYeNM4yHgxzEOOXB+tho/0lXD/r57rpczjDoN8uq5mxY1LWEgnMAwFRNlXpZBGPMF2wnSaRAX2MjrLcO4zx8ebj6y+BGR9GZ8JJI0MxrKnwNe/AG24SL3zMSRCaxHCxn20rD7BNd45UyBHtj1kYXndhiM7/f4MgQDZgTFSaF2coKu+vWdcju7JvzcPNL/q0f0OjO/IDECaBAxn9oTM6/ZhFXXUd2LO99YhGGaMnieDlyKushiATP+mOA2GgjZbq/ViasGbWd2YkjXTMiOUfIneO71qdv3DlGiuzetf52339zX0LP8MLfa+YP2LxMXphW8OFv9Wqwvfr8HqE6ByAWcY/EJ1Vwg28ci9VISNfzJqwFHZqfGid3oBibnwP6pALhKLqFfGAHezcFxs7T6gKG1BFeD0mJchLMtiCpJfcrsKI8JLdHQbMQlVXPAxllpmV4frcXz/c3LQBXIvWcdlJrCMwgFjnn1TJxiaByi3azFsx6eIzvk1wLJI1/AN i7rG/Pnf xFOBi0xzzhY8xjAVK+BJCsg87ku9AIKE6I2Z9Shh8gG/azyBB2k1BO4mI15G2OECMFFKYLwr4Q4Z7q1lcw+7CEqjxnXxGH48HtjSfEX3ImwkkLTdwfPdrFbo3vTy2/HxuyX2hYbIwpRWB6K1Z3A5sVCKOtTY3MUVJtoRn5LcFGpvo3+q0+6VLpMQla850byd2EOyPkAeo7/2OkEkHBr6Lj+M4XD1hCHNYHDWRVnr83fgy1LJxGbnpdYdU2MaPdLiVqFlhdxC45wqmJgiv5EgyEyOec+LPHSttHYs6XuRtFFf2m/OVYp9UGPdaRaRD+D+kyOYIcvF+aNQt3zl+yXVixV2ZiUJ4nifYwccbI61Jt15TSV1utIzGPo4iq1PwCanFXzxSak6zaZBfxQ9NjyJHP9DbiDCawR6L8YKm8zyejfgyaCsMw/wPXcoUCw6H3U0/VBCwGevwOJ3II7jJTkI0GxKMjCaovkVuA8CXBWXSamXM7yvu52nmqyShYs1BSFgm84uW3qVRr0De9CbjfihDXDJSaefGHlTMIgwPjoYtfuRxqCx+d7/0My/fzT4jBzl2uIFnT1rAmo/M/yJ61e8HCgogTA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Modify the for-loop in ddebug_condense_sites() to walk thru both vectors: descs, sites in parallel. This requires a 2nd set of cursor variables (*_ds) that mark the start-of-range in the sites vector for the intervals to be dd_store_range()d. So also rename the old cursors (*_dd) for better consistency and readability. This is a partial step. It still uses the desc_*() macros to provide the values, and the macros use the site pointer. Next, we replace the macros with site_*(), passing the *_ds vars. Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 3dc17922a1d1..563d373224ba 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -1426,32 +1426,41 @@ static void dd_store_range(struct maple_tree *mt, const struct _ddebug *start, v4pr_info(" ok %s at %lx\n", val, first); } + static void ddebug_condense_sites(struct _ddebug_info *di) { - struct _ddebug *cur, *funcp, *filep, *modp; + struct _ddebug_site *cur_ds, *func_ds, *file_ds, *mod_ds; + struct _ddebug *cur_dd, *func_dd, *file_dd, *mod_dd; int i; - funcp = filep = modp = di->descs; - for_each_boxed_vector(di, descs, num_descs, i, cur) { + cur_dd = func_dd = file_dd = mod_dd = di->descs; + cur_ds = func_ds = file_ds = mod_ds = di->sites; + i = 0; + for (; i < di->num_descs; i++, cur_dd++, cur_ds++) { + + BUG_ON(site_function(cur_ds) != desc_function(cur_dd)); - if (!strcmp(desc_function(cur), desc_function(funcp))) + if (!strcmp(desc_function(cur_dd), desc_function(func_dd))) continue; - dd_store_range(&mt_funcs, funcp, cur, "func", desc_function(funcp)); - funcp = cur; + dd_store_range(&mt_funcs, func_dd, cur_dd, "func", desc_function(func_dd)); + func_dd = cur_dd; + func_ds = cur_ds; - if (!strcmp(desc_filename(cur), desc_filename(filep))) + if (!strcmp(desc_filename(cur_dd), desc_filename(file_dd))) continue; - dd_store_range(&mt_files, filep, cur, "file", desc_filename(filep)); - filep = cur; + dd_store_range(&mt_files, file_dd, cur_dd, "file", desc_filename(file_dd)); + file_dd = cur_dd; + file_ds = cur_ds; - if (!strcmp(desc_modname(cur), desc_modname(modp))) + if (!strcmp(desc_modname(cur_dd), desc_modname(mod_dd))) continue; - dd_store_range(&mt_mods, modp, cur, "mod", desc_modname(modp)); - modp = cur; + dd_store_range(&mt_mods, mod_dd, cur_dd, "mod", desc_modname(mod_dd)); + mod_dd = cur_dd; + mod_ds = cur_ds; } - dd_store_range(&mt_funcs, funcp, cur, "func:", desc_function(funcp)); - dd_store_range(&mt_files, filep, cur, "file:", desc_filename(filep)); - dd_store_range(&mt_mods, modp, cur, "mod:", desc_modname(modp)); + dd_store_range(&mt_funcs, func_dd, cur_dd, "func:", desc_function(func_dd)); + dd_store_range(&mt_files, file_dd, cur_dd, "file:", desc_filename(file_dd)); + dd_store_range(&mt_mods, mod_dd, cur_dd, "mod:", desc_modname(mod_dd)); } /* From patchwork Thu Oct 12 19:48:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419742 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53DFFCDB46E for ; Thu, 12 Oct 2023 19:48:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A5ED38D014D; Thu, 12 Oct 2023 15:48:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 970B98D0002; Thu, 12 Oct 2023 15:48:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8110F8D014D; Thu, 12 Oct 2023 15:48:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 702908D0002 for ; Thu, 12 Oct 2023 15:48:45 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 3D685B5628 for ; Thu, 12 Oct 2023 19:48:45 +0000 (UTC) X-FDA: 81337847010.14.92A1514 Received: from mail-io1-f48.google.com (mail-io1-f48.google.com [209.85.166.48]) by imf09.hostedemail.com (Postfix) with ESMTP id 78C1E140038 for ; Thu, 12 Oct 2023 19:48:43 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=DVFVylqN; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf09.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.48 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140123; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=aeZlT3fWkSsRBBC0KH8nwdyunCgP5eGN9Bq/f3gwBO4=; b=Z5QAA59B59IqBk/LRh6IQKXW059YfJeXnlELNgzCRR6unBWUOWnR40y5ekqC3gMKnLUmS6 16WgzZDeoxKYbzwYBaS6icJJ2Eum6CHpEVSDQ3IFvwSxQ8uewdslEQFLpu90+uWqPTpObM +50hH8PGV2eDSG+u9t3Pzjjq5xAVvTc= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=DVFVylqN; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf09.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.48 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140123; a=rsa-sha256; cv=none; b=M+E8NAxgpAaa19cV1Gi7EpxPrjMzxYaVPGcD+is/zlMEu6HJIME3JF+izUzzwjjEUz/4Gr s2SFqIXKLIwyIjAzDBBzZF7aYzTKoUloS8Hm+lFCPvR3v84NWtbyL2HzLmVhrhDqQdenHO joR+AiC6ljwfgizUQkqCtyD7EdEUkHQ= Received: by mail-io1-f48.google.com with SMTP id ca18e2360f4ac-7a5d26511f7so41961839f.2 for ; Thu, 12 Oct 2023 12:48:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140122; x=1697744922; darn=kvack.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=aeZlT3fWkSsRBBC0KH8nwdyunCgP5eGN9Bq/f3gwBO4=; b=DVFVylqN2RSlEM3vyNulmiLE5NNo5OVJfRJQnhzk4D8WlcmWalvCV9OpC6oh9cAX+8 rKrfIhSgHacze3fmUkBOtVUIHMgUQctdI0hvxiOwtTAjllGqy7QHpbsW5syQOVb4AHIl nBnNMio129o270QCNNolAdYQ2CR8Rhdx9m3Tbeb4TErnDQluyW5J52lP3IOyJqaacA6l MEWIBTA1GiWOAhFVENfz+EXDLZPTcbt5s5lK9jPTReAKV4w/ibdLWmxCYNsnoCHeBLjP 5x4hEbmWEpvEApRKJbUV8Ks3mKFv1G1m3A6yD/BK3o3Z7KXPNiCn9iYGJkQKjCWiZlx9 AJMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140122; x=1697744922; 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=aeZlT3fWkSsRBBC0KH8nwdyunCgP5eGN9Bq/f3gwBO4=; b=DJiYIbKipgGjK1b2fidFPQ7L0lWHstpLIhLZPyLkGRpD0UiISlF2sbe3T5D56SrUkI 5ZLO8tbCgmOb8ykYs8x+bbrydk4tTGWHTldzn7MbaAUUm0IP9g0Tp28cBf+hPPPhSJoq zFX3BRIapWhQUMmmHeC5ujGawQoPueu2kEXUZwhAxW4aH1nYDHtNAIs0pWKQpCvtPX+D kGIKe0O3dx8GTg99CHq/wRK8qdbezCnwrZJBiU5j/ZsvJtVDwwAKaYp56VzuOBa3E8Fe ygSiuSDyDxsnC9uBDKrYnA19eo5rk/28mcbQDY2jtl0QSiyFsxryEEBQlJho1xS9GcA3 l7zQ== X-Gm-Message-State: AOJu0YwhBh7vbzjjdLIl3GPNXH4aoDd+v7vyRCREJBJ/lzGSQvlEH2yW hWmquK7qBi2ob/FknCB4JZE= X-Google-Smtp-Source: AGHT+IFFhJf/S6gN8jP4a20rhHTQC/HvlBHfDKD0Jy1c5AB7c08SdgSogYnGLzu7Mmjg+FissnHXPA== X-Received: by 2002:a5e:8c0c:0:b0:794:efb0:83d6 with SMTP id n12-20020a5e8c0c000000b00794efb083d6mr30403278ioj.12.1697140122710; Thu, 12 Oct 2023 12:48:42 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:42 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH 06/10] dyndbg: add site_*() macros to avoid using _ddebug.site Date: Thu, 12 Oct 2023 13:48:30 -0600 Message-ID: <20231012194834.3288085-7-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194834.3288085-1-jim.cromie@gmail.com> References: <20231012194834.3288085-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 78C1E140038 X-Stat-Signature: 8mo3iftacgmizrsxpeyc1ihfwrn4qpdk X-HE-Tag: 1697140123-280686 X-HE-Meta: U2FsdGVkX193KdYwNAenM7cBWfw575k8NfFGldjwBozF1BQBKgwcdAdt/HlAvRPD0Y88zrNrZtX1KdlPyXiLU8znggESCQcfQtLNckdss54eBMDQtnMyznhKujHgBku+BWhnyCc8aZHQyqLW55eDEzTD0DjkkeQ6LbnHjbVsJqmVQVMOSNldnuPzoQDyHBz4peHneQnux7jEcVG2SkRqIqwIaHd17ALp56xQii8aWIOh95wtmHNJcGm28vVYh+iUrT4dwcF+CkwQ6Ht7+m3Q2OK9sHndxEbyMqbihpUl+uTEYV9m5PtD7pM17JlRLZoa3g7KajdVPvFrDCXaDz8jYpkgmUmEngZBBN62n8rzkPhEl6jbRNmFtgkW9yyMCDSFklXRMtEP6PAGIJcCGKjC5n9YY8zy+0wdM1sTBYKgq2YPb5Y/rhdeKBbKqysu8oksi4AfZTjZjnUJWSbO/xPQ/gJelOH2B7B3ijPZgXw/B7q+APgRGB6Wmp7te7FjbUyouZttf1NX9Yn9Mwu+QNkKwOELq+oWnuNBttrC+Hqy+GgXu6h5jXhxfsf6+tS1wNBxswXbi+AvrLfwJhQTotLZyJ9IoUFtbTy0MuG2e+su6Xi/EDlx9vEL375/2Cf7UFHHmdCGNFY1RWk3AxYL7zQIa0Wjl1CDd7bsXLpztTJjyZjqgHXhQEMtl0F2kq0h+fgXCuayxOlD/hbEEgl3hQr5BwbjlgSrF7ZPu7aLAqZvyuQgKmpNaVRbZKA1uawoJ93amvRJ/T6PmerWFpv+NiCHo/P7vjZf48dxCVHp0PzBRWmGy0xNVc6IsLhp/kprfFTtLsg2KsASIRbdGaAoY7K+jmGTKay+Tbih4Pr+wXMkR6UHLnLv+D9V1r1STQ/E8MwAE59djNC8oIg5UILrhYn5te3IiLauthey1ArdxqMwZsz4rp4gLgPZ63/74LOmFYm/+GgD2MTU3Ta2/0SEq6X m9wwM4ce yseml+nlTD65r6pp+cV1ufoDnHT7stHyV8pnOtLPQ3pkw+WDzA6qZUglmRacQerjvkLdN+NIGW/EcJock/QW87yXB46ivSCMJMUPRMVutjLtBYNY0Cawvd6zY0ruiT28Q4VpMTSXnWQ8LABmdSZWxc4iCwwF1LFI676rvL4dj05pAHGx8ZT/xxnNoCbkRPxnjQBhphrXR3xR1kKn/47aUpV8GHMEF58thSIqvUF0dXbUiKsqXBDCM/CYIlSet0kC2RMBX6RRxt9rZ6GdRbmWjhAVbhdbLpEAs7TB5acXpNcRvyJt++cM9aua8IOyj1I0l7EfhddoJ6xQ+i6K7uqRXfBhyfTkSNXZKG5ubl6Cisetsvcxxk689cT39UbMq8fPr57SGHB+jHdshhhu8wGwTx4LRIrGXJN9FZuTIDFDRcaMvY4CRXvOlujpMa9gI6GUIrtRYVi60Va9PEggfxTngeZT0lal5ffjFMlkmVCoqMFF3mGzPalXNLQu9MeXR76N4jB8esFj69ADXaNQrMvXmoGP9LJhxqcpKspu6TCIaAPS3Zbs3fhOoqaMsb3COb+IYombSqJUpGO4/oE6X0INyXjFyTg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: adjust ddebug_condense_sites() and dynamic_debug_init() to replace desc_*() uses with new site_*() macros which avoid the _ddebug.site pointers by relying upon site* cursors instead. Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 563d373224ba..48564625a37e 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -1426,6 +1426,9 @@ static void dd_store_range(struct maple_tree *mt, const struct _ddebug *start, v4pr_info(" ok %s at %lx\n", val, first); } +#define site_function(s) (s)->_function +#define site_filename(s) (s)->_filename +#define site_modname(s) (s)->_modname static void ddebug_condense_sites(struct _ddebug_info *di) { @@ -1440,27 +1443,27 @@ static void ddebug_condense_sites(struct _ddebug_info *di) BUG_ON(site_function(cur_ds) != desc_function(cur_dd)); - if (!strcmp(desc_function(cur_dd), desc_function(func_dd))) + if (!strcmp(site_function(cur_ds), site_function(func_ds))) continue; - dd_store_range(&mt_funcs, func_dd, cur_dd, "func", desc_function(func_dd)); + dd_store_range(&mt_funcs, func_dd, cur_dd, "func", site_function(func_ds)); func_dd = cur_dd; func_ds = cur_ds; - if (!strcmp(desc_filename(cur_dd), desc_filename(file_dd))) + if (!strcmp(site_filename(cur_ds), site_filename(file_ds))) continue; - dd_store_range(&mt_files, file_dd, cur_dd, "file", desc_filename(file_dd)); + dd_store_range(&mt_files, file_dd, cur_dd, "file", site_filename(file_ds)); file_dd = cur_dd; file_ds = cur_ds; - if (!strcmp(desc_modname(cur_dd), desc_modname(mod_dd))) + if (!strcmp(site_modname(cur_ds), site_modname(mod_ds))) continue; - dd_store_range(&mt_mods, mod_dd, cur_dd, "mod", desc_modname(mod_dd)); + dd_store_range(&mt_mods, mod_dd, cur_dd, "mod", site_modname(mod_ds)); mod_dd = cur_dd; mod_ds = cur_ds; } - dd_store_range(&mt_funcs, func_dd, cur_dd, "func:", desc_function(func_dd)); - dd_store_range(&mt_files, file_dd, cur_dd, "file:", desc_filename(file_dd)); - dd_store_range(&mt_mods, mod_dd, cur_dd, "mod:", desc_modname(mod_dd)); + dd_store_range(&mt_funcs, func_dd, cur_dd, "func:", site_function(func_ds)); + dd_store_range(&mt_files, file_dd, cur_dd, "file:", site_filename(file_ds)); + dd_store_range(&mt_mods, mod_dd, cur_dd, "mod:", site_modname(mod_ds)); } /* @@ -1688,13 +1691,13 @@ static int __init dynamic_debug_init(void) } site = site_mod_start = di.sites; - iter = iter_mod_start = __start___dyndbg; - modname = desc_modname(iter); + iter = iter_mod_start = di.descs; + modname = site_modname(site); i = mod_sites = mod_ct = 0; for (; iter < __stop___dyndbg; iter++, site++, i++, mod_sites++) { - if (strcmp(modname, desc_modname(iter))) { + if (strcmp(modname, site_modname(site))) { mod_ct++; di.num_descs = mod_sites; di.num_sites = mod_sites; @@ -1705,7 +1708,7 @@ static int __init dynamic_debug_init(void) goto out_err; mod_sites = 0; - modname = desc_modname(iter); + modname = site_modname(site); iter_mod_start = iter; site_mod_start = site; } From patchwork Thu Oct 12 19:48:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419743 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4E9F8CDB46E for ; Thu, 12 Oct 2023 19:48:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9E9228D014E; Thu, 12 Oct 2023 15:48:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 997A98D0002; Thu, 12 Oct 2023 15:48:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 811A78D014E; Thu, 12 Oct 2023 15:48:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 69C6D8D0002 for ; Thu, 12 Oct 2023 15:48:46 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 2CF491CB15C for ; Thu, 12 Oct 2023 19:48:46 +0000 (UTC) X-FDA: 81337847052.10.A95D2C4 Received: from mail-io1-f42.google.com (mail-io1-f42.google.com [209.85.166.42]) by imf21.hostedemail.com (Postfix) with ESMTP id 6666A1C0020 for ; Thu, 12 Oct 2023 19:48:44 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ngspxoQI; spf=pass (imf21.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.42 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140124; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mIhMRd3PEDx8wYJmsgE6KV38zHdcvoV+qxdam6F9QaA=; b=UpqcIIcdSxMgX8G11rd+Jh9dcLYCkuVJCA/ZvN5rTZsZ8ealhXLNECaCuUT1lwywJcg5nY aC1OLeWwm2xO24T9u0/CN1m52XDjHKeit1IFh0DxgoNPj67lS1keuRWx1E/CCYHxyr7+4C /wcksdIQxitC/CSlobyUhinzpPPzITM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140124; a=rsa-sha256; cv=none; b=ZTMU5iKOLNTXO0FWK22GQATmS61bbH6CdHcRmzhKKncr8Nc5tHoJjKU/WWsK6Fcu458c5s k8KDSEyDZAudYLfwcleVNrEPkpETiqwSlC6yQ2VsR+68MR8AX22JnnF09HLjuF0DIRoOeh PB8eoDFXWMql5U+dUjN5FTO2xXWTPU8= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ngspxoQI; spf=pass (imf21.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.42 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-io1-f42.google.com with SMTP id ca18e2360f4ac-7a5a746e355so34118639f.0 for ; Thu, 12 Oct 2023 12:48:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140123; x=1697744923; darn=kvack.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=mIhMRd3PEDx8wYJmsgE6KV38zHdcvoV+qxdam6F9QaA=; b=ngspxoQIzI2tx9TmzyeKMszUzFiCyu8Eox0+hbIBIOTm+buRmcLzgJqTcvXCeOGvCW 2QF3U5ZpmuSnjV2xX9OO2kARp/sMyJ8/qwjCiNFObCkCIYFIE0lYBrxsIdwgo/3de9cN SukjRN1oqBdvF1Sr/UF+9wbrxTX4ZwK0KdUwkrRpEfxYF1djkC8w0mHaDlqlP2EM1+2B 1ywVmQtiQW+XZl/ShLoR0RslXUWjdMbwi221yaz8WdtA+MR48tiR77q7IdyLVwnqWhNc G/eABrlVdqNFRdvU0an9j7IDlMfW0ijqbxdatufNtQY+njxLuQ2u6hU1MnE1EG82J/PK rGQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140123; x=1697744923; 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=mIhMRd3PEDx8wYJmsgE6KV38zHdcvoV+qxdam6F9QaA=; b=TlKh5rvzlEt5WaC/9kav4I7mWlW/5oS1gZMLz9lhMzKGySS7pSu8aR4k3TapEsthf/ InXZW/mt5VBCva2PfuV1ya2Aq36x+OHhRLWgLJrCkP+HJ9qaHVbWA1J3Qh27iRm481RV EeToJZrbZOwE/9PN0EyNgFQC3KQHsz3s55Egq+CnWzdfoNcYfOlxG7gIB9zNMlwD48Bu ktySdOcXsoYh4kS9Kqs90Gwtbv+6abVZlC6MOFn0eBugpHKLxaEPuHFtJeK9DDaJ1/KA 6P8bvxFbDeo/sJL40isom3GPzIk9NhjJqDs6tLF6gg9yhbcGfC9p1TedbexUVL7up4jO 0T0Q== X-Gm-Message-State: AOJu0Yw/GPP8k3b41kaXkjAdq7PITPVtegwrKLM43ipSLfavVJIQTmVh ia7+87SVPxOG5bxUyz8yVIg= X-Google-Smtp-Source: AGHT+IHqH6cUbDs8xrXZJT4gDhu6yQsXMA72pQaQVz1Yklqvjqho03n48wy4VfixJtREREl3H41tPA== X-Received: by 2002:a05:6602:2014:b0:791:8f62:31ef with SMTP id y20-20020a056602201400b007918f6231efmr17972840iod.5.1697140123589; Thu, 12 Oct 2023 12:48:43 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:43 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH 07/10] dyndbg: wire in __desc_*() functions Date: Thu, 12 Oct 2023 13:48:31 -0600 Message-ID: <20231012194834.3288085-8-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194834.3288085-1-jim.cromie@gmail.com> References: <20231012194834.3288085-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Stat-Signature: tk7t1xkmc1bo9qfyfyft1r5coathfizz X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 6666A1C0020 X-Rspam-User: X-HE-Tag: 1697140124-77680 X-HE-Meta: U2FsdGVkX18yRLNaJGiiEK6JDSWvW+b1p68dsKNEJKPtbvpZIjSPG8Nfgx8Z+Q/yyBnjm4RC4C0j1wOjLoen5WNlixkTDGxkQ6FL3dv4/OZQkxHSyfSKi0YoOoomhshg7b/b4bEjL+/dp4G6lArh+zyviA0Lub1jydc4Ercrfs0qTUi1P6IDZhFV4KeYogPiZ4PUXMxglIK6lKB1f2q/aVt+fc44IIem5V6d2QsTVnWz7LPQxAvJn2VemIwiKwH/eUQTDaTcCfvaq3ffXmGKBdb+IDtoGcCaMeg2Qz8XAcMq7xkj6e0o8TRuTQTdgyjVDcXhSSomPaIvdoFlbff4FkXdagKJ7iyMnYVdXcf/kNPCmIyROD3Lp9CdW8yyF/a2g5RUBtZC7BWa4VSPt91y5tx5oRLEc4LLEgDyWM7MU9ou2UCyck3LwZ9HXeUNukxuMyZGDboB/Sed0uwfkoKKtY3krJWfOc0osVMBSVkQk/lpMCRdogkG5txS1tnIqR2vKKQHJ9ppfRVwNoust/v/NWZZzFhFffHfchRuMJz0ffthZOcbgE2d7drnguAr+mXB0R/DdGUNoyYnwU3agC5IAYgiQMqgJV7rbckdLnZzOindSjS1SNcUPyAYpHVtJwPRtZdpKsNjyzMRE3pglLxpMGlP+RJIotqmGNw99iue0NBnABYAIU44rj3k0iYRjWnTZvIS+99BQ9O5E+FUmIuEKVhNs4WY1qIPpBOxm2suP7XakakyK93oaMPQ6AwqsEZaWBrHaU864J00DXBAUil+/X3HLVMNyD/74B8i8vc3ABI13Ssg8/mK8lI72vFrUE9x67TFKCwCQfcN8J5SazwNwX+tRM2MTYMpKNfIQ0eVcM5IoJdm1+bG2d6IIiN0EvlA33G6LEILky6O9L1yaOGo6Ibm2olznPUJdnxNA1aBuprY5o5ZiwnIA/ZPAEzjsjwSHahpFoW/TE+e/dhVXzI 7zJKedx2 YO6OzHaQAof/Cnxmgn7iR5uFdrFhKWGseY1Gejmlxf/9uZgVIOxaCSPrQtaWlfIUTIdyDRdOHXClO9WVeFwNTGwP9zht2kArNpL7vV9okEd13Ot4Stna4OO/y3bJe5Ss4tAkkGSIOFDAUKq7wNbMpRkCXl+78ZqDDuORb3tT0F5tF0EKk3e6tqwgHe/3chOoMUmpDggiBw3Y+2ezg+DkH39D3YcAsWItEGGKIDp5xxkUsC9V5/XbjRwplQZQADPk/csrE6stBvkJyQF9AxpJ8/b3XPZsbjCgq+6ezkU3mWqQl+h7m1v4KlXsTh7md0//KQi8R39UDT8H0mft8nUs1sReQe4fun/5SuZpOYbPN3wFkzZgagorF0HhRRkJpQ4XjZGAW7i23E5W3vwxHeDUnO+Yyf33Hehjo+Kep0BPSeuq4X7MoG+VH+zSzisF8U1114P3nKIyJYFQDtokakNTog9K/TTp8G+rJcYibxCIhQ2Jvko5vePuCIBRZZBLtI7M+2evCMyyDwdngsx0Cfu8+V99onhyAVZacp435M9BU6NRjcYDfgrie4jjndCx8kMprGx9gNzDaRjjVpaT1SI2iS1+Z8A== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: change desc_*() macros to call __desc_*() functions, and #if 0 the comparisons to the site->_* ref. This makes the _ddebug.site pointer unneccesary. Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 48564625a37e..fb72a7b05b01 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -223,9 +223,9 @@ static struct ddebug_class_map *ddebug_find_valid_class(struct ddebug_table cons return NULL; } -#define desc_modname(d) (d)->site->_modname -#define desc_filename(d) (d)->site->_filename -#define desc_function(d) (d)->site->_function +#define desc_modname(d) __desc_modname(d) +#define desc_filename(d) __desc_filename(d) +#define desc_function(d) __desc_function(d) /* * tmp accessors, they cheat and seek a match in builtins. Obviously * this wont work for loaded modules, but doesnt work at all yet. @@ -235,11 +235,11 @@ static const char * __desc_function(struct _ddebug const *dp) struct maple_tree *mt = &mt_funcs; void *ret = mtree_load(mt, (unsigned long)dp); - +#if 0 if (ret != desc_function(dp)) pr_err("mt-load func %lx got %s want %s\n", (unsigned long)dp, (char*)ret, desc_function(dp)); - +#endif return ret; } @@ -248,11 +248,11 @@ static const char * __desc_filename(struct _ddebug const *dp) struct maple_tree *mt = &mt_files; void *ret = mtree_load(mt, (unsigned long)dp); - +#if 0 if (ret != desc_filename(dp)) pr_err("mt-load file %lx got %s want %s\n", (unsigned long)dp, (char*)ret, desc_filename(dp)); - +#endif return ret; } @@ -261,11 +261,11 @@ static const char * __desc_modname(struct _ddebug const *dp) struct maple_tree *mt = &mt_mods; void *ret = mtree_load(mt, (unsigned long)dp); - +#if 0 if (ret != desc_modname(dp)) pr_err("mt-load mod %lx got %s want %s\n", (unsigned long)dp, (char*)ret, desc_modname(dp)); - +#endif return ret; } @@ -1441,7 +1441,7 @@ static void ddebug_condense_sites(struct _ddebug_info *di) i = 0; for (; i < di->num_descs; i++, cur_dd++, cur_ds++) { - BUG_ON(site_function(cur_ds) != desc_function(cur_dd)); + //BUG_ON(site_function(cur_ds) != desc_function(cur_dd)); if (!strcmp(site_function(cur_ds), site_function(func_ds))) continue; From patchwork Thu Oct 12 19:48:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419744 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 21E8ECDB46E for ; Thu, 12 Oct 2023 19:49:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 94DCD8D014F; Thu, 12 Oct 2023 15:48:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 838E48D0002; Thu, 12 Oct 2023 15:48:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6B4D48D014F; Thu, 12 Oct 2023 15:48:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 586BE8D0002 for ; Thu, 12 Oct 2023 15:48:47 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 3B7FDB5625 for ; Thu, 12 Oct 2023 19:48:47 +0000 (UTC) X-FDA: 81337847094.27.B964D30 Received: from mail-io1-f46.google.com (mail-io1-f46.google.com [209.85.166.46]) by imf15.hostedemail.com (Postfix) with ESMTP id 660F1A0019 for ; Thu, 12 Oct 2023 19:48:45 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=DQzZEQu+; spf=pass (imf15.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.46 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140125; a=rsa-sha256; cv=none; b=gxivTo3jo5xBmTYg73y9SyIa/NB66Z1lgTyih+ci4e8BxTbRSaXs3+awYaygXbT7pXET36 BcPlmucqWhW5/tN+7+a1Zf2Lp3gzpxJdFyXRN5hpuH3e9bmLzrLkDu1b88PAtVUkuiCqiW 43SFtXw4nmyT3i+AOseQUHGXD7tAIAA= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=DQzZEQu+; spf=pass (imf15.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.46 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140125; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Iuwbt1McOcGdkIO7L8zjw1pQxOK6ynndpanb3dr/E5o=; b=bZ77nw3svQKYBD4h3XgviCOLTOZQUKUmUZeSRjEzkPVD/WrPsvhtUguxG7LYWZ0y/ExCTz FIIo8e1sxd7JZfjbGkzqKGZYk7t8n2sK3kcsd4LLqrrFHaqbWpNMcFFMuhdJ+SRffrFPoZ qkf5+f7EQf869uzzknxbcKCpQ955Ijs= Received: by mail-io1-f46.google.com with SMTP id ca18e2360f4ac-79fa5d9f3a2so54899439f.3 for ; Thu, 12 Oct 2023 12:48:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140124; x=1697744924; darn=kvack.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=Iuwbt1McOcGdkIO7L8zjw1pQxOK6ynndpanb3dr/E5o=; b=DQzZEQu+/Uf0pAlzV0+NsnId98qxWyxOre0BgHGkX/aYY/t2MCRFmvgkg4Tal6N06b vttFkVos2t+HqCAPqkUfz2OXNrfzAt7PHZR8XKVCMSOi7Mbc2Vm1dYgzY9df6xiaz8jn ediTyi0ZfT5AEpMtZbfnPl/yBcZlCHlT5+zSWvwNAyLRmo+u3Bprhnn+IqY70HTnkbY7 2Y5shjzI+PUSFJo852A6qvah9c72pI71Sethd4+pjDr8NuleT9AU8aw0LaI1kPPxEZo2 GMpVFMRX9DibSMkJqSmCFtkFTNIhtj5m9e+dN+2yUd40bUq/P8Ww0CHSd8tEmXh9tGPb jnUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140124; x=1697744924; 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=Iuwbt1McOcGdkIO7L8zjw1pQxOK6ynndpanb3dr/E5o=; b=pIBsl5pE8MGgc0IlPG6wfelXDqiUzIsWU7LBUJuyXrzaLszNuw5OOju1L5CMPa/axe 1RVapVDmTz4wTCkQRMaHQ5pixT9+fW3Jq+SP4aUl82rAeuEcXuGT0BsQhIZ9ewwpkeC4 6935Fan5189MtUQ115A5WAsOf8CM6f1Rjag5apziRJwTdG6MKsJ9zpl+NxFnUAhzJyzI J4H/WyYbNXqZQ9YPydoUxBoRJyh2ADGx6iD04esTjkvooN829bgcyZ7IFnkMUQrnj48n hcPqoH1vWBYiI2OwUIYsekonb8+1yoiZKT/Kx9KrD+hO8002Xv9RAAoNZQyp0xVwzFLC jR5g== X-Gm-Message-State: AOJu0YwnFyqXeIVnOLGhn6jzjceFllWVOpTskcncmezvSj+0kLRc9izN SZFVXt51ikcG3zIA1QKCWlRKZ1p82N9VwQ== X-Google-Smtp-Source: AGHT+IHlxTW+J6rW7Zd2Pq9sVXFhxqom9NxXG/NPLrr0aum2XInHvnhwAk/EyR/uZTaVq9k5JHvdXg== X-Received: by 2002:a6b:d81a:0:b0:792:82f8:749d with SMTP id y26-20020a6bd81a000000b0079282f8749dmr30579249iob.10.1697140124637; Thu, 12 Oct 2023 12:48:44 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:44 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH 08/10] dyndbg: drop _ddebug.site member Date: Thu, 12 Oct 2023 13:48:32 -0600 Message-ID: <20231012194834.3288085-9-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194834.3288085-1-jim.cromie@gmail.com> References: <20231012194834.3288085-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 660F1A0019 X-Stat-Signature: 93mq6hyko8fa6aad8zcon4i746szn37k X-Rspam-User: X-HE-Tag: 1697140125-370632 X-HE-Meta: U2FsdGVkX1+NcRZ/OdHl0sb1Ms2x049+ObGrkIxpNc75ihyeoAJ+9CHfqX+bruiUMeE3FbZH4wEIsDBIuEs93uFvr+1Nk8EdIQkCjnA//47qzD+Q20MYTZDTOr1xFY9N7lHOLgNirr7KzH0WKzqFqQy1iC3tg7TtzCTANFCtc9LxbgtSBbPZ23S7+SEw859S6TAlmLRNh81VIwEFlt2a4TaQpL2iXem1uXaPgb6WbV5aK+Oo374ZHnE3hMcC0bdCc8qCTiNGyIFHQP1MMCV239/Qv290mbpjnQNQGinB3WqkEirMLrggN7ycS2IvmCQ5udUlGLVLsMX8iBvvXG7C8XxEq9NFCIWWNM67NnrjJz1vLQcUl8Oe1d4enb0xu8/VzN0GvGv1qCW4uhWqDN078t/tiDoCV47X73fAqxVlFfYDgZOoyed4wR+NPb22QOf/KeIFrz8oBM4dsug+jSz2SNBSH3OM+UR19U3/P5yJOr/F1LdWB8zVjUQDoKqup40JtnBkGPan+vZjyMB1Md1L2CSsXsBUSoaY3gKQOLxvMk1fwLkxvp+zAnKzCQGCbBFIPAAXsN7KdG/pVwQpby5Ise6UiRz1bhqpTxzzo3cHlhXq3KHM8Qoj8WE/kCagnJ8IBkj5d3e0JAhniNoObI0BtwVMxUGv6VzQSTR5un4OlHhn4h80DGCa6B5ByyWW/WLD9e8gCuYMdt7bCt2N3G0zdcvh6y6swFkyqyCXrG0uY5+OrCwPqzOJfJpS1yEwJBPvyL9+hzwR+6ddzQ4Lf0mZw0CQAVyenTwRnn3iuYFPVB/3uMM+p7DM+7ZP5i2X6fU39qbiEFdT2UAYjhn3b2HogpCsq7qOpJi26VxrPzGIcEqihhlA7tTFeDic/wzULQfcZz4/ZdW6HvNAW/NqrWVeMU/brado6o4JEP+bhKAZo8QbyS0aK3IFWykFT7fIlsb8KKkY5dk6xuJ/9NkjdWs US46B8Kw 1ivF+xGt3N5GVnFRoRbBLCP2Yrc0kEy0kV3R7fBbZN0xIY8PokqauaBMIAsycMha0F2LGFH/0zwK0m8xQZcqJ9n+b8u2vyzELMPUnqYl3hUeX0dsXNRUi8GWRz67Uc4UvAaK5qy77r03Sq9P6FDY3KKYSxmehc+NPH/v7E3Sz8iyht8YhUx8W8S/RHQHAwA9vOjdRVbdqvRDHdQ7UWV4E+F7uyZm1TtoKcH03KkpZEDUkRBBokCkfh5c7nzZlLrw4rjUh/HxDIfjewy21ySXwjQjVn4Z4WMAodrnCXaDzfCF3C26mYdKPjPM7RnSXx/8NUbiyTd8BhPfBC0M6YkQJ2uus9DIxNBu9aFyN0WyR1GlS97v0SZhkHRDATxMllFZ/rRAhCm8NcSRjcVhKm3yebCFth/7mbJJAhdrGdfim/MxL9W9ZN1P80SON4gqJ7iYtaS4ilxlhY3faTrWiPTcWcUnG0vGHcH4v/u2WvIGm8q9ZA2IbT6ffcggPqNIX48ETy6FbsCSRPHzbHYXux1mmA66xGOcVG3UmBwJdgCdVFIrOj9k+o0V2zUpFApK8SDQGoS2HbCAi28Qn3S6iefdVckxx5w== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: drop site ptr, and rely upon the maple-tree intervals loaded by ddebug_condense_sites(). In DEFINE_DYNAMIC_DEBUG_METADATA_CLS(), which creates a pair of _ddebug & _ddebug_site structs, add '__used' to the latter, because it is no longer linked from the former, and then also to the former, so they both have the same number of entries. Replace the BUG_ON with a pr_warn that shows the size of the mismatch. TODO: sort out where the extra records are coming from. Signed-off-by: Jim Cromie --- include/linux/dynamic_debug.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index 5206a2cfdb37..406b30d8eb98 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -27,7 +27,6 @@ struct _ddebug_site { }; struct _ddebug { - struct _ddebug_site *site; const char *format; unsigned int lineno:18; #define CLS_BITS 6 @@ -228,13 +227,12 @@ void __dynamic_ibdev_dbg(struct _ddebug *descriptor, ._filename = __FILE__ #define DEFINE_DYNAMIC_DEBUG_METADATA_CLS(name, cls, fmt) \ - static struct _ddebug_site __aligned(8) \ + static struct _ddebug_site __used __aligned(8) \ __section("__dyndbg_sites") name ##_site = { \ DYNAMIC_DEBUG_SITE_INIT(), \ }; \ - static struct _ddebug __aligned(8) \ + static struct _ddebug __used __aligned(8) \ __section("__dyndbg") name = { \ - .site = &(name ##_site), \ .format = (fmt), \ .lineno = __LINE__, \ .flags = _DPRINTK_FLAGS_DEFAULT, \ From patchwork Thu Oct 12 19:48:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419745 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B523CDB46E for ; Thu, 12 Oct 2023 19:49:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AAC8D8D0150; Thu, 12 Oct 2023 15:48:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A5A6F8D0002; Thu, 12 Oct 2023 15:48:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8D5928D0150; Thu, 12 Oct 2023 15:48:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 734178D0002 for ; Thu, 12 Oct 2023 15:48:48 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 48385404F4 for ; Thu, 12 Oct 2023 19:48:48 +0000 (UTC) X-FDA: 81337847136.16.E0DEAA1 Received: from mail-io1-f53.google.com (mail-io1-f53.google.com [209.85.166.53]) by imf05.hostedemail.com (Postfix) with ESMTP id 69386100010 for ; Thu, 12 Oct 2023 19:48:46 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=GdXi+GfS; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf05.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.53 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140126; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Jr8tQe/cDXue74QN3U0cEdutzIhNedVe/s3FJQcenu4=; b=xETNo15tXaIHndQvti+vLiy51/Vmyjl3HJk0utfDPZ+nLUsbX/b7VykYYfyo/RpKqnBIYS bByfLAOoBTBoI8WR/+SLr5SEDQJak2rd6nwH8CrzAWIIOFsS+ybad8ECeKdydlC7YdN+CY 0ngbysmjQNiezybJxoZ1VukZs/7hFXo= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=GdXi+GfS; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf05.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.53 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140126; a=rsa-sha256; cv=none; b=ePlj5i3iqvRco+A4WUaWH2P0wHjs1lrgFhPnYzxecbbdaex0APqk3LAYXEaeMVjXbcID3Q 1Ac2RTTsYFtsvxII0mHZaZR+L2j1geZTgkPSM1RU3HzFiEGSZvnkIjk1+ycen21EF0eF20 1VN50dG067m6iZpOdVV0RGePpOKszWY= Received: by mail-io1-f53.google.com with SMTP id ca18e2360f4ac-7a25040faffso57296039f.1 for ; Thu, 12 Oct 2023 12:48:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140125; x=1697744925; darn=kvack.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=Jr8tQe/cDXue74QN3U0cEdutzIhNedVe/s3FJQcenu4=; b=GdXi+GfSY7ngdbxK46Ch2YC+yB37BLMn/UOIaGkIifHmx5bzZsO+0g3VENWi/jKvlu m03/WBeSgnDepH5d5gAvLFmiMwimK/XIfdrZLjuPzpJFDjzbDpwdAIRaDw13iOrTFNwi 8u78YdR8g4D62buYnoDFNUYySp81DN84/SlogMv8wClZyKHhOCrOdJcW+k0cll8EAZVy ePJYvSyBpcK0WOK1SVGmGNMDdm2kRGQQY9sMVl8TNq7t3ZME1DAxEt7p/1KCajg5ljOE e7/OpJMMXMC4G7Uy0+D8+e4pSsnEJXGLofmG1Oj7tIRHQCXnTeCHw+cyaviHKuLiI8CG pK3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140125; x=1697744925; 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=Jr8tQe/cDXue74QN3U0cEdutzIhNedVe/s3FJQcenu4=; b=B2uiIwNRTt370DiUN1U6WSUSWopPU4ITWuHW4QylLdl6S5/IZmrHqG7sFXl/O9Nwot VFIeGQ+otYiT2Xt5HMhK+g75mGsExmpen3Qseu4XneetLqIQ/sFuLHKoBXeg6UtRKYU7 K+uIDJNtpcEc3lMBjWQkR+qT3zmLmgC6HqY0YK/zIy0rXegiZsECpzdrhekuQ35FJ8xq 1+amkiTSwZxL+Ezr+6/k7mQP+VBT89nNQeDG09ZuJD01mrBxCM9tZ81jsM7OJKb/Pu1T UC0VllKwIRbRXYjl75npfsQOH22HVHzhSvlXWxtYwvKRMkk5TaaWrU27DiQZPzndCTlq KgZQ== X-Gm-Message-State: AOJu0YztK9uCGglzKF1UGTU9XvoC6tfzMDVgPg9xFN+SwaZQHqm5jXkG 5g+skav+5k2G5VxhlpuVNPM= X-Google-Smtp-Source: AGHT+IHSgCsSwzNOOD//3NxBGQTn9DS6okKVdysyhOSJ8KPygFQuinuZSyiQbCPBvDKULEXLusF2+g== X-Received: by 2002:a5d:9ac4:0:b0:79f:d195:5384 with SMTP id x4-20020a5d9ac4000000b0079fd1955384mr27521944ion.17.1697140125638; Thu, 12 Oct 2023 12:48:45 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:45 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH 09/10] dyndbg: add dd_clear_range to prune mtrees Date: Thu, 12 Oct 2023 13:48:33 -0600 Message-ID: <20231012194834.3288085-10-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194834.3288085-1-jim.cromie@gmail.com> References: <20231012194834.3288085-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 69386100010 X-Stat-Signature: bcmx5bsks8geur8x9zq3mot6q7ssp45h X-HE-Tag: 1697140126-329811 X-HE-Meta: U2FsdGVkX18JPTC4l9fcPHREJ2kyGOSJPHbLD35wtFWoB5LVt5ygiBsQsC+f3JcrBnRKKgkbaFS/OIR6v2zcAuuHuX8VxXn/g6D1Vv9O/0loDMoHVr3YZ2UuAdvPyjc2K+IpZHTSLqnC84Gt3XGpSZ0YrqZc459CusV8PeskYaWNvzMl0Man6DFY0PrJN+VtEDH+XQaYLFaaZjA7axHWbIJl4X1bM7J1KcfO3JISpz41Twl2rfnQ0QIdyWQv7iX9kioXRVXXZ571Lt8sFhi8+x28jBG9qdkESZG3soacXULjfw+AcZU0Di+DOsOtjyrRO0SeevkU05NSn5bDiZPQlIryMZELg65yrkNSPYWup+jvpLUhqCMH6q3H5LM8qrzkmR43YG8gdzMTQVOhqBccz9qE7aZfyRJ3eIkLIjbNnFCvwi+9xT7QOOi0STVmjlQr4eQBjkKtYvRKefTKQ8+VNYf/8m+/tSwhmwNTEkwEgbt16eTrfsPlyQDRO5IgKFTtJNfNAPK/221YMFxKNGrdyuOn03HMjTciWxnJx3gHA2iojApUKrkqvmBEbltuB/KbdhdwUzSEwf37kt9eFRrT18EhNlax8alWK6IrnUNUjZB7T27PhxXroO32+1uHrLLw6PvK2LYiY9PqvAnnV5JSgXOIwvyML8EqUo4HTYj6FMSEgTdqdG10hfj5AFFjJVisc77HlBYfQ0SvFgNYuUSb6Ghm4dq36NYX99TiwG+iB5Jlw3rZ+2jCVV2qHguVMr5ciAtwfQa22jLPpINbBjWBxmkFYxhxZmDxqtULmry+CYX1+NCtSzgs5JSQ7qEl88uqsfS/+cU4kOnSuHp8AdjEjCsMWyPE51olRGzBvsfsyhDz2JbsQO5BRVryF7rF9fXG6vtt8HYvrZP6U0eglRa7c6myp+KS68J77fCXHHguy0/9lO2f3/f9l3sPP7gesNNXWSG/52bKDmNOeab5zTO ItSNpZJR 9z7wA1dd6KCn+IfN+LMjX6qgHyLVV6B9lDnWZiZaK0zvbAFnESmG3WOs47gG3inkGJiAT+EpubDUzeua1TJFBhmkhHPbyzHORWvdeOxTV5WCEPTWI7hXE0goxSoqNMfXmXUi5Ed7zJNQzVcaShItu45sHETbrjwwGbVCSz3aXCtTIC6m3teF8lwBPOk/itHpIhr2XCrUbEvpN9W+a4jbphjfsoF+Vw97rrGxS1Be1apWCE45cam+VKkPJ8UDLLA2aEMdvE0EI7mIF9dtUl2Y+/qxaX9iQOfgceFac/PImwuZSJdGA81nT778Xd+Vlo7DQ004+EEcbxK73aPWFAXXIiPl4NOIHeq6IObYYnP/PoL7HVmDKwK4HP2P27GzcKePjxhFGXUkOHtF3zTr0wXF218S677IJ97KqSOTAJ8MlzzwDKnBMOrXS1K3b2FbP2VI3Gv4/0MjdQOe129PejvjgcVdWbmnpMueJzeDCg22lwq3K6dPgnTc0uqImHbPQeiNFvuc8OBOuEpeX5sisj6RTnwgoAzZy4lO3425D76IrcEgeL22SacBZSl7kLXsqu7TvfmCIqds+Y5FTvDj1xrHhIDY+/RYr37PcPlGVXQnsuDEzhn70uRbLP7Fo+gFE+JMr7HGTMUQC/ORIHKhGQqrxAh5gb87rZLeneN43EaHSUItx3T4= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Call new dd_clear_range() from ddebug_remove_module(). It calls mtree_erase() on the trees storing the function, filename, modname intervals, and passing the 1st descriptor of the interval (ie the index used on the insert). dd_clear_range() should properly undo the 3 mtree_insert_ranges done by dd_store_range. RFC: it doesnt work as I expected. What am I missing ? The following log shows that 'rmmod amdgpu' only removes 1 entry from each maple-tree, not the whole interval. My index is the 1st descriptor in each interval. ISTM (naive reader) this contradicts the documented behavior. void *mtree_erase(struct maple_tree *mt, unsigned long index) Find an index and erase the entire range. what is my "entire range" ? bash-5.2# modprobe amdgpu .... [ 74.256006] dyndbg: attach-client-module: module:amdgpu nd:4652 nc:0 nu:1 [ 74.256968] dyndbg: 4652 debug prints in module amdgpu bash-5.2# echo 2 > /sys/module/dynamic_debug/parameters/do_scan [ 81.370509] dyndbg: cache: funcs has 3741 entries [ 81.371233] dyndbg: cache: files has 911 entries [ 81.371819] dyndbg: cache: mods has 323 entries bash-5.2# rmmod amdgpu [ 102.325851] dyndbg: removed module "amdgpu" bash-5.2# echo 2 > /sys/module/dynamic_debug/parameters/do_scan [ 105.277439] dyndbg: cache: funcs has 3740 entries [ 105.278163] dyndbg: cache: files has 910 entries [ 105.278756] dyndbg: cache: mods has 322 entries cc: Liam R. Howlett cc: linux-mm@kvack.org Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index fb72a7b05b01..92ffd70a07de 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -1426,6 +1426,14 @@ static void dd_store_range(struct maple_tree *mt, const struct _ddebug *start, v4pr_info(" ok %s at %lx\n", val, first); } +static void dd_clear_range(const struct _ddebug *start) +{ + v3pr_info("clearing %px\n", start); + mtree_erase(&mt_funcs, (unsigned long)start); + mtree_erase(&mt_files, (unsigned long)start); + mtree_erase(&mt_mods, (unsigned long)start); +} + #define site_function(s) (s)->_function #define site_filename(s) (s)->_filename #define site_modname(s) (s)->_modname @@ -1578,6 +1586,8 @@ static int ddebug_remove_module(const char *mod_name) mutex_lock(&ddebug_lock); list_for_each_entry_safe(dt, nextdt, &ddebug_tables, link) { if (dt->mod_name == mod_name) { + /* free mtree entries on descs */ + dd_clear_range(dt->ddebugs); ddebug_table_free(dt); ret = 0; break; From patchwork Thu Oct 12 19:48:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419746 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A93D1CDB46E for ; Thu, 12 Oct 2023 19:49:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 704418D0151; Thu, 12 Oct 2023 15:48:50 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6B4FE8D0002; Thu, 12 Oct 2023 15:48:50 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4DE938D0151; Thu, 12 Oct 2023 15:48:50 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 3645E8D0002 for ; Thu, 12 Oct 2023 15:48:50 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 8CC0C1CACD1 for ; Thu, 12 Oct 2023 19:48:49 +0000 (UTC) X-FDA: 81337847178.07.345757E Received: from mail-io1-f52.google.com (mail-io1-f52.google.com [209.85.166.52]) by imf18.hostedemail.com (Postfix) with ESMTP id CE5181C0026 for ; Thu, 12 Oct 2023 19:48:47 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=XamHmArt; spf=pass (imf18.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.52 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697140127; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Q6n2IA/eHEf6LdvM5ZmMrOftNFYznxmP1Ujq1nl5xlM=; b=RibouzMx2TWvC22NadjtE37ROU8vYLmYk1o+YBs9lFuKv7FL+vZXVYpOfHvJfa7y9LEahe rdnZggpHLRvEZdth3xBJBDRPgHsgE1ZT3SKzFUm1VgSet0YtjyZ8mZDxbTGEW5S1ZEw8Vs A4N5iSaiOKEqr4GWVi6iMT8YSjNFwwk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140127; a=rsa-sha256; cv=none; b=cXuU/ewfmm2vFaAOYwqpSQkNIVNTUMsMgQsOiumtBVyHCXP0hTF/tojM/ODNNJIpijbiI/ bIVV2x3Yil2qypCCB18s6SjSveIYymD+PqOYUpgmj0dJsUEv/hcd+o9LBWETP7I/Wpoi8l QWetTi2QFHijfJMcXdWaxAUCdguZEw8= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=XamHmArt; spf=pass (imf18.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.52 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-io1-f52.google.com with SMTP id ca18e2360f4ac-79fa425855cso55059939f.2 for ; Thu, 12 Oct 2023 12:48:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140127; x=1697744927; darn=kvack.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=Q6n2IA/eHEf6LdvM5ZmMrOftNFYznxmP1Ujq1nl5xlM=; b=XamHmArtyWCHbFmBFO0sSD4Jn/laXcbTN+mLkbiG0b/LdrosOf+6qavR86zpEv5D+Z HPnai5giUxbpMA4vRtp3JoVF4Td145GnXhQusEeuUvtGoeZKlZLV2QsRcIGk2KFAO/Sk YTtzh39fC/x63UFPYZRdO9CD4O9Jaq52n5YQmC4IHJm2kPStOf36jiozqK1JRNrMYdZ0 izD+jQzZZc7R4VXwXLxXHhbjzpsSWwMf73whcJskMsH9nZdR9MidipICdQIcIhGXoMMY 91jxfBVK4yYPO8ncKB86w/doKkFMwIbObM+sOGT5UerR+HmOTCulYWPIoxhHESUNZyf2 YMPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140127; x=1697744927; 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=Q6n2IA/eHEf6LdvM5ZmMrOftNFYznxmP1Ujq1nl5xlM=; b=DlObK5S49KVWh8nk26gRraCdFliEPp6/bqCt0ghSLZOYHwkoP+2MI0FgMTQeXmMOl6 4Lb7/ItiHRPtfXja5046cYvm6iEgTNpobn26pTx1akeCbSdbV3IgjhFdNU5bKpCZDngz k+SPMRffrILEpnUCTDKS2OB9c5C8G9Ra2NhvsDsG45LY4lrDTHICEyJDxpO4VAEM+im2 H+wD53mgQoh3Fs6SiiV1BpFKArAPoip5C5BO4e5Egx7d1etvVcEq6FalOjmM79zhTV7A dIoyEEoamZ/f3zKajNkJDuv8jinCoA2J2MWhEv1NmO8GEMMtMNwOQU24ykOXGXJ9Bwln mVhQ== X-Gm-Message-State: AOJu0Ywy/ek67NfSwD6WRJ7JDBgWAjiKUpac2oAeQKI3ie6KTtNCzYcq 3SIYwrkeO1E34Zh0xGzPOGg= X-Google-Smtp-Source: AGHT+IEnq0smZ7G8P5z5vC02OT8MB+EcSRtbm1qklN4D/7Ye4KzZyrfDlCDnug/mqix5MN36Nab6Uw== X-Received: by 2002:a05:6602:29a3:b0:785:d4f5:2225 with SMTP id u3-20020a05660229a300b00785d4f52225mr28824779ios.19.1697140127022; Thu, 12 Oct 2023 12:48:47 -0700 (PDT) Received: from frodo.. (c-73-78-62-130.hsd1.co.comcast.net. [73.78.62.130]) by smtp.googlemail.com with ESMTPSA id h6-20020a5d9e06000000b007a25540c49bsm4307891ioh.27.2023.10.12.12.48.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:48:46 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, jbaron@akamai.com, gregkh@linuxfoundation.org Cc: david@redhat.com, lb@semihalf.com, linux@rasmusvillemoes.dk, joe@perches.com, mcgrof@kernel.org, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH 10/10] dyndbg: cache the dynamically generated prefixes per callsite Date: Thu, 12 Oct 2023 13:48:34 -0600 Message-ID: <20231012194834.3288085-11-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194834.3288085-1-jim.cromie@gmail.com> References: <20231012194834.3288085-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Stat-Signature: 3ntokpmr7c1a8o36uoieu34htqsrdqh4 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: CE5181C0026 X-Rspam-User: X-HE-Tag: 1697140127-697294 X-HE-Meta: U2FsdGVkX1/9IEuCQGO2BEaR6EZC9ec5i3F61/JUnfTzNSQjnUzm2EYsy5KF/E8lQyfB/zOyed9eEvtI7axK2Db5L6tH2ATdVD0E7J8iPmVwWp2xmjAsw8hRa+la2Gixw7obtR6cntmRsZwdwZOFD7nJ/BKm3cdJX+o+HKbs0sO6b/Omy/cWZ0Z95OJIXFmj3PSGYtE0hU8VITuiIA7q/WQZ9gUssTN7C6QdjmTO314ATngfeM76wMh36klvcLeAVfwiEXJ3/75XKii5F2Z17ilGHyiKaoXwvQjfkqcTNC/A9PfQHd6N0vkj6ZixEaKKKEtUuHVf1MhNkG0r+A3ja/x/B4AOu+HFKOd2hiKsJb7A4LeMsDJQwO2M8CoMX80hgkZXvvXH2j1nmTl0LClLZQJTHK8Oh2ZHG02/iIGkxY+yl8neuBkPn4WVvqzBc2JKyJg1CiwaLhhgwW8O+CgXblTMsMhsEIpJuNwxjb6AxmxXebv/tYJf2iLM2HwC2iM/UN7gACDD8yWu+69J77MmKMaeQg2WiAHmPtdLswMq6Z0QGtAOmAOAqvgzpJjU+qpi/v0LsJviNuw2bfiv23vPv9QP7T7NXPyY45UpcQJ1W/S+pnURPUWUQBq48tzfC13dCsVVW6XhETPsmYAz4/Q3b4J9+ZQmR26nidjZ/3XB1e0L4xA6PDtHYrAFyjjfoEuQ/ZDSvNOL9oCU40GEFrRhplw8KnO7v+CYX/hnPHOKsb8Gdfy9ForJyfusD2+j3niRmkuETR5Vybkq261RL7xzY02jDtImd6ZqGfOfEeV51tTCzbmTFmRxVDoNidnVGDyEy0YDw6Zg8ePq9ZnjY4aH6q7Si/skp6oe+FSF8+hS07Q0w74y1QpBADLK5JksXcIWibytFwSXz3cB5sRuxiz8nJ1ijbVKPZoqOHCTi/8XHCfiX17/PxO1cl3o1Hipd61Q7/OnBve5/0LV+VzwwtZ 3ezxSToK i2cwFe+DU4nw2pIHjjaKho5o8TGX/G2LVGYYQRMpXWR4tlCsH1Ttsjn/xIrKSmIgGlTygBeYNz1P9IaJQct72s0i86KOBgAEkQBAEAY8Wjkbssivqq7batncMoE0Yf4YEEz0jiIvikqgNV2qvM/jN0SLGsqrLSStaibKD7tkCIruom72I1670+Ucapb4ukVcUXLTsUYEUGRHZsG1WEn/KewIBHc1e5ocxh5LXtsa0SJxk8IlxP58vdUFAtNZKvZ7ueFegobDdmKmGMeE8hRpSz53+CKOBwDHp1zcHwQdvpq9Udxwz/37YUHzsCG49b/ixSuWTwUPfr3CT3YQkdZaWp0888GbEawMRRQ+bFl9bifBlqvForOv2pwKt4PudF5Tg8bzjz8D4CwY5WlIzESucVC0XNfJRq91kPJOMNpM787BslwP60ouvLo26WvA5FY0G0r9/zMJucvrkg3J3RA3xwn3C9Zid51g4mwYdgoH5Ybbw6K4q8SxoBpBm8nX2DuVqt6fh0tPXJB1ODG3FVbpvjEfxalcx1N8GAcvvtpizxsOK4/k= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Add a private maple-tree to cache any prefix strings required (and then generated) for any enabled pr_debug callsites. And delete any cache entries if any flags are changed afterwards. This cache is strictly per-callsite, so if a function has 20 pr_debugs, all enabled with the same flags: echo function foo +pmfs > /proc/dynamic_debug/control there will be 20 separate, identical cache items created. Maybe this can be trivially improved later. Or lineno could be folded in too, so the %d is rendered once. NB: +tl flags are added outside the cache; the thread-id doesnt belong in the cache, the lineno could be added, esp if the 20:1 sharing isnt trivial enough. NBB: lineno:18 is enormously "sparse". At this point its not so far to pack it into something else. Signed-off-by: Jim Cromie --- lib/dynamic_debug.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index 92ffd70a07de..02df61ab6403 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -90,6 +90,8 @@ MODULE_PARM_DESC(verbose, " dynamic_debug/control processing " static DEFINE_MTREE(mt_funcs); static DEFINE_MTREE(mt_files); static DEFINE_MTREE(mt_mods); +/* cache of composed prefixes for enabled pr_debugs */ +static DEFINE_MTREE(pr_prefixes); static void dd_mt_scan(struct maple_tree *mt, const char *kind); static int param_set_do_scan(const char *instr, const struct kernel_param *kp) @@ -112,6 +114,11 @@ static const struct kernel_param_ops param_ops_do_scan = { }; module_param_cb(do_scan, ¶m_ops_do_scan, NULL, 0600); +void ddebug_clear_prefix_cache(const struct _ddebug *dp) +{ + mtree_erase(&pr_prefixes, (unsigned long)dp); +} + /* Return the path relative to source root */ static inline const char *trim_prefix(const char *path) { @@ -350,6 +357,7 @@ static int ddebug_change(const struct ddebug_query *query, newflags = (dp->flags & modifiers->mask) | modifiers->flags; if (newflags == dp->flags) continue; + ddebug_clear_prefix_cache(dp); #ifdef CONFIG_JUMP_LABEL if (dp->flags & _DPRINTK_FLAGS_PRINT) { if (!(newflags & _DPRINTK_FLAGS_PRINT)) @@ -855,8 +863,18 @@ static int remaining(int wrote) return 0; } -static int __dynamic_emit_prefix(const struct _ddebug *desc, char *buf, int pos) +static int __dynamic_emit_prefix(struct _ddebug *desc, char *buf, int pos) { + char *prefix, *cpy; + + if (desc->flags & _DPRINTK_FLAGS_PREFIX_CACHED) { + prefix = (char*) mtree_load(&pr_prefixes, (unsigned long)desc); + if (prefix) { + pos += snprintf(buf + pos, remaining(pos), "%s", prefix); + v4pr_info("using prefix cache:%px %s", buf, buf + pos); + return pos; + } + } if (desc->flags & _DPRINTK_FLAGS_INCL_MODNAME) pos += snprintf(buf + pos, remaining(pos), "%s:", desc_modname(desc)); @@ -866,6 +884,13 @@ static int __dynamic_emit_prefix(const struct _ddebug *desc, char *buf, int pos) if (desc->flags & _DPRINTK_FLAGS_INCL_SOURCENAME) pos += snprintf(buf + pos, remaining(pos), "%s:", trim_prefix(desc_filename(desc))); + + /* save dup of buf to cache */ + cpy = kstrdup(buf + pos, GFP_KERNEL); + mtree_store(&pr_prefixes, (unsigned long)desc, (void*)cpy, GFP_KERNEL); + desc->flags |= _DPRINTK_FLAGS_PREFIX_CACHED; + v3pr_info("filling prefix cache:%px %s", desc, cpy); + return pos; }