From patchwork Thu Oct 12 19:47:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419726 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 DB18FCDB482 for ; Thu, 12 Oct 2023 19:47:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4DF948D013D; Thu, 12 Oct 2023 15:47:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 48CDB8D0002; Thu, 12 Oct 2023 15:47:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 354FD8D013D; Thu, 12 Oct 2023 15:47:25 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 25BF38D0002 for ; Thu, 12 Oct 2023 15:47:25 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id C7069408DE for ; Thu, 12 Oct 2023 19:47:24 +0000 (UTC) X-FDA: 81337843608.06.2D7C164 Received: from mail-io1-f43.google.com (mail-io1-f43.google.com [209.85.166.43]) by imf24.hostedemail.com (Postfix) with ESMTP id 062E018002C for ; Thu, 12 Oct 2023 19:47:22 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=LKajDTxB; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.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=1697140043; 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=p/BPj5gawzfk9t1+ITswVcZMeX1VMjY+5wc9Ov9x5daFeCaLElX6+hQjy0JF37gHehVHmA zx5m3zKc9n+jC8c1vixlpxXG6/lUGWXdQPHEFY9C1HT1KHV6lLDfvCl1/LCdXPUZaXloYW e1kBQIkNa2/e4vuG4iH+bWrNMCWu+AU= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=LKajDTxB; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf24.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=1697140043; a=rsa-sha256; cv=none; b=x/dGieMbNWe9PV5dvyXPYKa17AilEK49vmLPdnvJNwq+oDfjBhTnweG+MeJnUBuUTt6l/o jJytBve8PcFlHJKll09bsDqtPSEKPgHF7Vhwnau9QUgR++BX7sdTx2jk57idpMlhyjzQtp 6jsffwDwrQm+1Rk6jqBBVvwxmAL66Gs= Received: by mail-io1-f43.google.com with SMTP id ca18e2360f4ac-79f8e4108c3so56661139f.3 for ; Thu, 12 Oct 2023 12:47:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140042; x=1697744842; 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=LKajDTxBoRhQExaHsjZ9ir7Y9INU0K/YhI2/lCHuQePoByGR2JciF5zzFinOJPunR3 yKxd2aMr/HMnZc2kQE2Wf3Rt81bQVv+eu0GcxzOtPZaNAXvhpr1KcoN2LAewATSo8Gk5 +z/phpwGLZywMoTgap/CgxhGo2EsmGww1/qMNYBMafmMgZ02rcvINfgrW0Sd4lyBn4Wx lX4fuCR7kpFP0ee3rs5IGW6Wy9KrAo+CEwS1j98lqpiTtjYVJ9SstbNpmAG0/lfglxKb icoEuHnQSH7C8QqjBFXNcwTarzqfzrqW+CuWLSbrcHC3FxxorkhOeYhzMgDTnx3AnyAq mkWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140042; x=1697744842; 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=C6dkLT7OPg9Rteb3f6ORMN1Vo8aYhWD0k5GwSQ2RwAmHaE33imOXUaCH0HlwETQQGu BJbGAdswhP9ZJ2WGd6/t9Y1QxAKH9vHwJNXBshsCXV3mgbBbp3fCY14A6UzA5nZlSWQo jTRZpwx5jli43mA7zYcRN321CFvA7jQyoTrugHQCrtkQLANyX5xK6JzyV74IAxMOFgYB GiHidlkKpaojJWWRhO1BFRAnN6rPQx7u3dNXJU8IovZeOM8W/KG0TkqorKzycsnkPeWl hi/xW5vLvvdxjXqEgSYRXAeaFHE3lxmtEzGphA20qARa7W0gntCSFk0wGa/kb5a7S1Hb DhqQ== X-Gm-Message-State: AOJu0YzHCNqhEPORuFSMZbB9Si/N6IwCyMorz7xQkkAzJBh67vfPM/MD mnx3qNr36P6wczCu/0zvpzWZFpQrJh2fJA== X-Google-Smtp-Source: AGHT+IGceM5gIpg13Xxjob+QcvLQXenti4VC6/T4P9oMFLg7p3XFso04Nihjee/j89Bz47ENyasfaw== X-Received: by 2002:a6b:fd01:0:b0:790:c3d0:8f87 with SMTP id c1-20020a6bfd01000000b00790c3d08f87mr26611201ioi.19.1697140042119; Thu, 12 Oct 2023 12:47:22 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:21 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, 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:47:02 -0600 Message-ID: <20231012194711.3288031-2-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194711.3288031-1-jim.cromie@gmail.com> References: <20231012194711.3288031-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 062E018002C X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: uzayni93n37e4fftnrm3cy8ppy7q69p5 X-HE-Tag: 1697140042-43394 X-HE-Meta: U2FsdGVkX1/7an3JTj/I9e8L0MCHbtK466BdcP6poClF3IoPPXnmi3/fWEj7Wuo49ZybaivfYL6hQNLwr+t61UvzznOvjlQGrsek8l+PNblWkPNR967jBQyWTd7GpYnaDACLAdeBohxJ2bJYk3839qP2feQGM2/T6r45cJySYtEKcgMWrOG8w6t/Hr3asPf1mlWcE4hVdba97h1wEHGT7bmGq5CA8nKIvtr6nZgHkaVKGri1PWx0+B/Tl/cKjXzLv2AyST+ANvphJwORY2CLw3pjb3RGHtqqA8Fk77C9C4pfL8IAj6DlHuwQ9vJyCCu+v2q+IbctfpZFe5SFniNA2QFY/QhVbCd8rLxcU2yM8uhfludduzo904OuJHN+y1nfOi4zWl7ELjDH2gd6Y5SqCFYuIRpdZW8OwB1X9/uf0svpIEJ/l0Xr9HtL6YEsZGVIfgXRPjm/idI6AwruYMSP+shd2x0Pj4koiiwVVHVStQGZc3GQq6HgX4fbtjC3hpiUAMmq/mpBjjVXua/c/y33AgtFHSt7/KSGfD+8DyZUpaqSrCVa2DwAwJpejQzmOyx5xbxYd3wrUnQPctH2LIOnxkU9zLx5/BfokSJsJxq9Ep4QKt3hmnDALYQHwocgQYE/YLy9dXDo5F0I8J6alUbgQPXUOhzkCm8U7pm5ITj+5F+Q0D15y736x7JggFkzxx0q33F+tayWc7+O99Dd4iU7bgYyhJdffnr44cwt1ynZmSwcaIIF9oC3suSvzjegUHDaYqMdBHAXvaxkzO62duIEMnIB24mabF67p1O5oIs+LZ+T+s8asmCpHLUwZ3jmOqPl6K2yTu1m4dt+iLbxehX/20lVTGdYl25KrOTvHfw9SC8H07Heccfsamy/NPLYI0KAipvEENrFr0Y+k5pM39Y89vwNTqn7IzQg5dTLzzYEBUoe3hTVm1Debj473ALhwBxqObv0fOLNfNdx5cNwyGA JbMqICua na+uQWFfSA3o3EaxloY3t+B0emgjh3wwq3pRSC2rMuJLanLcAtRndg+L3Kl16MTdNrDT+qTMqJPREDq84gsyrf03TJsoWv8mhxRysqSqABAi9L3WDoj/mief4aq1dC/S8oaUAAPA3gIkDGy3rbm5MTJ6zNdruNSArqvfVwegqWorzklOoGPESdCdpKj6CeZXQqCzou8ChR4fpkba16k91w+B/bbhxH+1vBQF2LEiPgxKBLy3Dg+nKgadc3wE9rpOKL7eNqP+Di/jei5Zq65+W0jh6H5X7aDYo/w2OFIu2hP+CZKLkBRJ1m0OQej/t/rK3QZRHIPAoT7ndKZEoCHo3LKSZWEDW4Bg/4oSSOpPaXOnHLQ5mSDf0XOcJxkVlUTaEJ0BtFew/3XBdCFa6R+gxdM9q0Wb/IC9oo6y5TO3aDkF4HN5+z1unWY4DUDqhpAisZGRvcHSKLyBylWAM55SMUDopHa1hpdsxJ9r5TttYWuSGIPEuFWjIZZf8UJ5YKsZuzUK7pDGE6I3fDeDXcFjQT80ooa1d3JLpF260 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:47:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419727 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 2411ECDB46E for ; Thu, 12 Oct 2023 19:47:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 357848D013E; Thu, 12 Oct 2023 15:47:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2B9618D0002; Thu, 12 Oct 2023 15:47:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1807E8D013E; Thu, 12 Oct 2023 15:47:26 -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 024538D0002 for ; Thu, 12 Oct 2023 15:47:26 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id C8D091CB277 for ; Thu, 12 Oct 2023 19:47:25 +0000 (UTC) X-FDA: 81337843650.25.495EA61 Received: from mail-io1-f46.google.com (mail-io1-f46.google.com [209.85.166.46]) by imf02.hostedemail.com (Postfix) with ESMTP id 0AE6680017 for ; Thu, 12 Oct 2023 19:47:23 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=cS6tUqxN; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.46 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=1697140044; 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=GgE7NfUyLC8nqdkQRx6/Xmgb6+MeM1RITzxc20IVihH/B/9WJACrKeYCb2knmiRdFPi9td tkSmrCNLstFymb0Ca2wublVe04sTuWHoW6I6gOLp8LKPyMyEV4M78UFmU3Iks8CvPLY53e PsfehfFEQUgcaBD8umsbc4eZhbJw9YY= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=cS6tUqxN; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.46 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140044; a=rsa-sha256; cv=none; b=3qv0sSiPz+j2UjYTQJn00f42kOiK3c1T78cBlq8d1FLeKS9vm+tyhSDbRiEv0L2FNoVvKW U0O4IqQRzljOxDtPgPywc3v6UgJX2Z67DTl9GVIhDst3msKpTqi2zQNfHPY7LB1RG0P9bR vy9BcsRGny/8HYBKcpJmq8oEJLvbJWE= Received: by mail-io1-f46.google.com with SMTP id ca18e2360f4ac-79faba5fe12so50359139f.3 for ; Thu, 12 Oct 2023 12:47:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140043; x=1697744843; 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=cS6tUqxN8mWifd87iTRFYCwjgsaLuytTmLpEGI7Su7ZR8j7fQ0c1t4UN3+sLIBO0MT oAoH+JDel9QDf5eIjw4aRYQaUWUjtvQEjv2Gc7RQpvanKDwlh/hAJF860vIvIwgN7bxb Fud/OhwD37q5tOD4T6lHYfo+P4wiQsNiSaVEDprWOUwr8DBLNoYj2uGwdqpg8J52Omjq BvVxln4vTHYkhqjHx5tKW/3JbAbJIdtklVz0FuDiQsRPc+1rf7jG55mT6TWDRZzQ33GJ a7RNE89LQHuMQTYU2ycDTGQMkJMkU5emRodmrOcQXKA7YEtbDDTPbWr2N5CzunfQ3QmU qwQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140043; x=1697744843; 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=f73SPytTcho7RusVNVm7Yc4JyQpohNpU18KFEBWzGuSTG3VphbsDbi3xxM9hxuzbAP TCSbjitjyoqj7MGYIf2zk2cGTZQrOA4lhukwewNF2IhoAXiw63Y1aDm3MHzbGa+Q2Q3C cMcGBZAUShH/YtouxqkeA2xDsEpNWAwJBbEABLyuqoB6QrjwJ+OZKEa9lQ8MM+gQhjwy uDM9VgoroIylHLnv+QEQQb+fM6fzmY1esfL7P4Grzo5NJnGXS+IkNUBKJIcwmXbHoXEb Go4MSQ53YXCE4nGabAfCBZbq78I3jztqBElX6n5JDKObgFCATV6a2fWP00a/1pEk9mqi 7uhQ== X-Gm-Message-State: AOJu0YzQ8PE0QJQ8EZwnp+4NE69DXfJhu6a/GQxeh03RaXn5dLlrpuwz 1enkNjGFo2++SV7/1v2ulqABGA8b0E+Wyg== X-Google-Smtp-Source: AGHT+IEy5LUrHNrM8PB7Uq+J/5nUEH5hYYFEbdVHzf05PX1Vsvj59Q/FEZF7mdKvVdrY8dZihBpf9g== X-Received: by 2002:a5d:9943:0:b0:79f:d194:d6e2 with SMTP id v3-20020a5d9943000000b0079fd194d6e2mr28680189ios.10.1697140043212; Thu, 12 Oct 2023 12:47:23 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:22 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, 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:47:03 -0600 Message-ID: <20231012194711.3288031-3-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194711.3288031-1-jim.cromie@gmail.com> References: <20231012194711.3288031-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 0AE6680017 X-Stat-Signature: uo8kjuw87cp8o953cg4zig3nzr5afp1i X-HE-Tag: 1697140043-472949 X-HE-Meta: U2FsdGVkX1+bQR4aD0/tuPG10FHiu0AspwkcClHF7xByVBw8nLpYsixljkTpn7Cq71dc7KpQQn4rYocP6E7ESeBPXEQk0Wuuad3VzpXz7Kf+72sFJrtaB/6eqZssshqcEd3FtCvhH1J4Cao7+YUIBujvNxUsy1QiyElMZHb1wqalZEYFO3uvD6U8CbPqJs9yV61O5zRA9yXfcEk20YkCjDXgCP6f79TnwQPj/pFRDqZyEeZqw8W+PIbahOrm/JkJ6KvBPEAhP7oww1q3X7QhOCKp6v+ycTRfmLXD50qFpIBsMJysRcLXgVZCBGaCQt1nRUNJS3jI5f+f14rCg3PwrZNmqHY+LgcBz3AhmxJXVkZU5YSPmyvriyje+g1l1nfVZimvZyn4f6oPbM1gRi2ZLusRyAWXnBpPEihZd7zrYW1bj+KYLceuiFPwB7DukLqnjh1br48xKM9oys5dsC8jWaKeSXeRSzzdhCpOUNtqpQolDiPLLCZQgHdLDXw3LChittr2VpcDufDH88yxZtLDsPmFGKyKnGQ1St0rPBwsJru9aJKqLYMXb3aALL7L6kz09oUHVVjes0LsTHv2ffqiWendkRFY2+5eKC3+Xav2dHE1dKDoFQUBTb8sttMNsSZS870YbJiMVt30liBZIRQHzRsRJeOuDnSPDPFPdrlBkAm55O7M3QzuZDVcE1ugLn2TPtzDUm2ev6OAX+EBmezu5nM9GBP79Gtzf4JjlnuiKmILFRDWQ9BcTf3JZGpbiyB/oJvcMUBWWu9e09aWHVUJSD/JP3rLCmgBWHpu7grsraYJ9rUtHdi0viQsIN3uzGPdhTEgzV9Ae8U/B9ZYhbyaZtVa6+A7g81ADPMzz8KBTJ4j2GJTiqtdEsCRJJnM3u1eRzuGw4bvUB30pAN8gcTnccQ432+X9y01zN1iPW63GljqQskrMNn/5lshIYqJJpAEnFTJJKV/gWT39xK6ue5 38acGQQZ EPtKZK33p2VK5H92DVqnP3JdTYl0tIgR3Yud8QO9ZNcOd+2NRkS4n8VNfxN5523xmzTX2nPCNZb3UYe5vxBlyu4ofWgsLtEQankUtsaSFijOFpxfifHRmr7L0Q+cXPVzQRwTzGr+Vqa9mQjxvQkX8Ce8UYulmYz4Be2gLbizdVgUKzEsIma6COb9rIoE0WRDhFUgN/7WSkQqx37yFnx4Yv0YJx+kqjnFG0uIF62vLuuy8XYdMJ9a90LGAg7JLdbWUI4ey3uI0U5f4m7o7ZswppSmcX/FakhWKVLrItcHuomLJBMFbNKaDmZ/UF2YPBzmxi3qg+Pz9ShzllvZa8Wxjda+ShFHcbbY3cgmCamCVp/yxbZpkfwqv2KvuLlm+FKuArjtnHyy74r2jc7MZxz9r2IiVYykw6YpHfw6YpUJq4AqDLc2Aicn6VMH6qs/q3rntILBUM7uA34iI46FMts0qNbVCqrQj+7wk7u5Rq7vC/gguD41KA97oeHoF8ThQl8W95AKyMleY+qik76sovbe/kHxhLSJSo+y56eLPga6++YEZeg062r7AaV6Pjt7Zt4ze5/UO5AE8Q+5DIWBSSEPDx138Tg== 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:47:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419728 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 0E680CDB482 for ; Thu, 12 Oct 2023 19:47:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 30B188D013F; Thu, 12 Oct 2023 15:47:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2B96E8D0002; Thu, 12 Oct 2023 15:47:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 133578D013F; Thu, 12 Oct 2023 15:47:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id EA9008D0002 for ; Thu, 12 Oct 2023 15:47:26 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id BA5951407E7 for ; Thu, 12 Oct 2023 19:47:26 +0000 (UTC) X-FDA: 81337843692.15.50FF5BE Received: from mail-io1-f45.google.com (mail-io1-f45.google.com [209.85.166.45]) by imf04.hostedemail.com (Postfix) with ESMTP id 039154000A for ; Thu, 12 Oct 2023 19:47:24 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=diCu6GJd; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf04.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.45 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=1697140045; 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=o6GjfYDNA0aSBMzeG7iFkANjX1xa2puRHcS0Mkbd4PjVwWNbiRxalqkMuF8ADRxWQ5jGXN /iPKGY479drBuj8ndOKQyhJ0CCa8toGdTmydmwsbPEO3V1qLUZQdDlBHbchTWoKXlLliZy +tiwP6tViR4IaZPUwCFy0a8q3Hzdz94= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=diCu6GJd; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf04.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.45 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140045; a=rsa-sha256; cv=none; b=n3BJo7gi7E7g625fXE6QwSUdeE0Ncr3C6/CcGgrgrPsiEqunjnEAxaCVui0XDPTr5eNIus XCAolS0kUq1OrYZi4dRoW9hMszwoy2n6XdCDYJ13Z3VOGAMegNUZjJspdNLmPw1DRqxxB6 miulIFdBWFm31astSOrtGJubDjim2yU= Received: by mail-io1-f45.google.com with SMTP id ca18e2360f4ac-79fe6da0095so54977339f.0 for ; Thu, 12 Oct 2023 12:47:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140044; x=1697744844; 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=diCu6GJd5UKYN5ng08A98NX9UMkFm/KpQzmXS6wDHAUt+tEjdd45VLsgzRmU8fCesD Ic/ozucWxp+70shJYWtGOp5x1MlrVgHAl/ARsF568V39uSqUZCcnulH/v+hc+8BzI6sE RJxHD57RKo4u1ICm73NwAOYcd5dx3p3oPBExrMgiSg56USqnbnXCSmKgobF4E0nf9zHp H00paZGm4JDh+Ca6kC/s6+kk4tRz3rLBPlNOnes0KqTQ79bKqFAXZRv5AsTVzOCQqt/5 sWe5XSxTG7FH6v6fpYym0MtOaT633yRm99nh2SQRgoXZjONvqe82b5exTqWsjbTGxW35 /4yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140044; x=1697744844; 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=WBwlkSvZgyJHBFbi5ZUlbG0CDNJy8K08NQypH2j8WFmrMiUeewLY642uzzmIBXsHyQ 1dE9uzMUgFTEycqSAdGfhPsKAtF/lY6b0iDSHYRG+R0U2jvKv/J9ct8iJ4hLACh5vQMa jbFvJyaN29W527C+tkguU6n+w1jUdvGX+c7Lc3B9msVr0XxvR4iaXoL1mUz00jU4R1PE 6i734pf6cdQgwanFz5QMb6QKCHSCaE0/x6fazM9GyB9eR3KZgv8vDNiM05d+sjmqBKDX 1QwwWEXqJyAppSykgr0LLzzka5HldkYX+4tbaiKV6i2wYRWQ3dz5oyWgw4e8ypmdAUx/ RNFA== X-Gm-Message-State: AOJu0YzSLHYxUeh6mHR9p1aMRQlw8ikVWdTgZVweVVKXGhhaAaO302Jy +/5BOnY0CQRDJ1OjisEj9/M= X-Google-Smtp-Source: AGHT+IHZHagMWy2HPI0YrF34ye0IkVkYy10h1jWIvdho+KQVHFHRQjT4ByRa26XBH6udfT+GuQvITg== X-Received: by 2002:a5e:8f4d:0:b0:791:2db5:c779 with SMTP id x13-20020a5e8f4d000000b007912db5c779mr31016076iop.10.1697140044235; Thu, 12 Oct 2023 12:47:24 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:23 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, 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:47:04 -0600 Message-ID: <20231012194711.3288031-4-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194711.3288031-1-jim.cromie@gmail.com> References: <20231012194711.3288031-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 039154000A X-Stat-Signature: o9ofxi6fk1azbtf9eru5zk7875cpj7ff X-Rspam-User: X-HE-Tag: 1697140044-563625 X-HE-Meta: U2FsdGVkX187xPfwbxLRK6G0K3lO88CE/MVsoAVTNcwS+deLzifmmmZNGmGuS7TWsErAd+kFAKfdFXqs0OizyN2cq0gbA0KNIQp4OFDMLqA2OlwV2tCmMYdW1UWEiXB2GQSW1gfCRZXLNgQ+BVw0f05pqv8YdPF6j5tuR0hEn6PGEH2/dgHBcaeviLmHGpvkfAy2r6XAX9RHOBYxyuPyJ96xQrat4GWWC2plMOvEJNI4yXlYVzJjLApf/MfiWZr5u2FyfDxzucoZCyaY7ytNRN92dlKYT8wJACdi+Pm4ZmQXxJ9laHBLoEQ1Q0rqTmuuJ2AQEE9XCr5rpna2ExSD31IgHH9moC0L102t5vtzuZydbh+hhpwq7/I+YpeAm2NOdQdoF1oitsuvXNU6GlY2NSArkwSS2LA7Fe+8D61C1Om6gMsAgG9o/nMlI1iLxyrlL8dwmNN2oJUxdakLXSmJ+MegNuDfABGLtazI92ra+ZpARWnYXUXGubk2iBl6VYslfZuKWvj4j5pjGQovCVU2bS0v71g8ZojzvtRUkDQjh80RrpDEpcggFGBFoLHbQhfFGnlv+mq//CZy5iMuLff+ncYgE5Jf4/Nffe5YC4zaC8wkRm/Y7l4tG9+jmJOx9ds+Y0nge8QMx7Yu3jmYHX0c7ZuZHaWjtatiyO/k34KuZhVGACSogKuaDpWTGh8Srusbmmlbo2lGzmPkf5PW8ivkoR/SpjhYULVvdIMXAlI9gQ+H0oDSjM1iaxULjELbQynOkc3ldVtg7+zsnhnGnW7SCwg44SdNuC354tcyAx0J3Pi4e/kor4ImqPrTIXcHNDqgDpF8I48GMUN483ZyrpW7ouMRXwDEKKlxdYbAm6igYKNVZ/Qgt91dRF3tg30ct324hEjmmTD8o+w5ZzmVtTTdcjCmdFwHK0PIl6TvvG6l4MnpJxns/my4gZ7dpfONWeHM2tbweW7u3ubTLtjQIO5 2BT0dw2v HxyQFB+aBCt2mBlx9JyncMcdytBWqWpv757Ui0jiB8TgDX0129wxv9P83Z0sm+kRuPBUK5/fPCHTG+jCTRalOjzGqD1n6/sg0OZsqw8/NN01eDCaOVTQ49m5ndRM8WPI1X3s5kZPqeG5RmN9VmFG9D8IrxrYnfFITzKcLQ01+WU+skVVj+CtsUwesk/QCCBeyDJwy9DjEMMSJtYWlLrDP3vN4Zrtqbd4HU6tG8r3bcZDwVK9EGlZ49eWgnzJW1CWcRnP/jiiZDZjEK1aaS0v9z8KqEbv+Lm8PtzyTrStAIllvtOudnP1c2ywJGT/MmecXM42oXCCwPa0+Gz7eAkeUuk5BefakCMoaYIPcJcyEagJKJZXnPcB0cpAPsZ8MucXjoIDnTF8tCiFNxLJDSl7CPvjPLU15McRFcbPf+4ZDKyNB82kq6QGSgR1gE9EbRO8Es5u6hRnBhX/WjC6GbRg+3T0pOh26nXlVI72zJHxn7c3A4Jp6A7iLEnl94wGphmXuXMHrKKG/5CeptlNP4FdgZX9A5ghg8uJrVAYh 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:47:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419729 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 0B20FCDB482 for ; Thu, 12 Oct 2023 19:47:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 57DF48D0140; Thu, 12 Oct 2023 15:47:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 52B108D0002; Thu, 12 Oct 2023 15:47:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3A3728D0140; Thu, 12 Oct 2023 15:47:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 2567C8D0002 for ; Thu, 12 Oct 2023 15:47:28 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 03AC01608B8 for ; Thu, 12 Oct 2023 19:47:27 +0000 (UTC) X-FDA: 81337843776.08.782C96F Received: from mail-io1-f49.google.com (mail-io1-f49.google.com [209.85.166.49]) by imf27.hostedemail.com (Postfix) with ESMTP id 33CE540012 for ; Thu, 12 Oct 2023 19:47:25 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Kt88pJvJ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf27.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.49 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140046; a=rsa-sha256; cv=none; b=xCATPVOCFh4NERL0WWV1CNtkmXn4iBgzPcgNRBfvgX745m+dUtWkYlMnbOLSrY0M/gf8W4 UaQiQ1L1KIU3+JvxaZFOXxz8EQT0dH+KsVasVgJmUEMEr8dLO8P7aHXN+L7jmnP+9oVpBl FrAEdhc9Py2O65g9wGebefoNQFTzgKQ= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Kt88pJvJ; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf27.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.49 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=1697140046; 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=rz4K5L9D9IZ9xctji8HTuO7mogud7ph4qRBP2TQcbuKRkVySTy+sjlZnHuCztEXOwqDo2A MUKwKhAnzG6rhoeVyefOKqNVZu3Kt+husNjdXhkfkMQ0OSB8TYcmq3WDIysvfx2hW+42AB 4jLCGFyVvpM5X+R/vdWyYqS6N6CAt9w= Received: by mail-io1-f49.google.com with SMTP id ca18e2360f4ac-79fa387fb96so54566639f.1 for ; Thu, 12 Oct 2023 12:47:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140045; x=1697744845; 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=Kt88pJvJ0BEk3KsfJmksQEoIDE/hCxwMqoBGyGOjV6iX9m3ZVtn2kuilvi4VlOZgpU hWGoUV7zRZYdbr6qcps6EXSqcJoY8cUxdyC+A+ANL00wjmN0/k0drjcxFfjPnZeWKJH/ dKayIrDbH2q68z9+pK/6d0kewd1F0kRaQ2cPx/eZRM4GvHuSBim9ufhK8wNSlZoPQa3f Q7NMAgDQ73fuPZboK703vX38YMjsrR+yAzIag/FowZyJqaI4pP2GZZv9ogkUt/IVYpUw twwHxXCfU6Ht9VvkeK20OW8nIjoZkIxrKjlRxN1v2XIc0eiI5374yBnV4hMHX9Eu1F7u oaog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140045; x=1697744845; 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=W1mAYxzt8ipb/yIlVICsuvNHKWf49d1v6pTmo7Fr9lcAdS1N7EYz2MsaezStccs4GO Ku8a/63CDyX6PUqHSJ9r8CJ7t4kedybK7igN1ZCtlklrsV9I5WKSYCX6LlZEYn62o3+Y PSyIJa6hC3u649+DhcFcTa8IUtR2RXfVEyXzlSjlf0esEVNYRr+Kj27wtkETJIDuTffh iuFIgIf0SpAI16iWj47ogqk11MI7FOtAx2aw3xtTM7H1V8BB+fQAvtKRmUwtypidDcj4 3xNGWStzRzFC5MmlIaI4DHdnewIIc2m/VhF41DwnghpcU0o16I0IHoW63tyKcQci8d9K ISEA== X-Gm-Message-State: AOJu0Yw5HBMtBaJ4be/eYRixmVzzaletcAaWvzCYPUA3XvUrJGEJGGFx G4IAQz6P1N8rYEDoCsWuKCM= X-Google-Smtp-Source: AGHT+IEOG5SpG4KCKE7NUisGRmS8wO+XpQ/XPVhRI6E30r3W/baXLgOOywsCK0/rxHdk7QOhpFzIIA== X-Received: by 2002:a5e:8f4d:0:b0:791:2db5:c779 with SMTP id x13-20020a5e8f4d000000b007912db5c779mr31016114iop.10.1697140045282; Thu, 12 Oct 2023 12:47:25 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:24 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, Liam.Howlett@Oracle.com, linux-mm@kvack.org, Jim Cromie , Matthew Wilcox , jbaron@akamai.com Subject: [RFC PATCH 04/10] dyndbg: save _ddebug_site mod,file,func fields into maple-trees Date: Thu, 12 Oct 2023 13:47:05 -0600 Message-ID: <20231012194711.3288031-5-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194711.3288031-1-jim.cromie@gmail.com> References: <20231012194711.3288031-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 33CE540012 X-Stat-Signature: 5on1nociaiyyyb65trk3ckos3b3u73f1 X-HE-Tag: 1697140045-598117 X-HE-Meta: U2FsdGVkX193y5ypguiFCIslYaoCJfLRQa9mkDyEpUXhsy1CvQe7vrT24kAiNO5r/AX0sY/0dRp13+B7xfJyVJFjQUwYkR2H91AHVitSuwmIeL4m+qcjvD6jvAn9Spo7xCl48bml6N6lx9z9BKiVdOQHBozlbMif+gcwkhExF+4maVjwkC9F2XFt1o38Fqbsuq9YKI7DmtWnggZs6L+HCpDBiCJ8x/dlSU1dzqFRnPO2wtae7eubkYUiTcxxhUaFKFTtMTgkPxxXA/412NY1JTJovnOCnNu9yzElqhf64V0euNCjQJ0nIK9sloJCYklgjqRviHoG+pglbd9gHn9CuV6NJOwZagxflq/e+NYs+DQSMNxDPSyNMP8xQ9+UkXh91uB+YK9Kjlziz/pGhvIkeKlgUIck1394T2uCNdgCbz5FoWe7SZAa6csbgQFxoII/MLoJOwQPAt2eJTmZXGhmdblpcvtr4e2nG8PkZZi94FvH+iUeCziyXN65ELeB2zqP2f7KIytoS1bvMQSnGKZMUQHZXDVF3qMRYiK4J26zDghOcYG0fm9t4JtJJAJBmyYwOk0A0C+/UMJ+JD0JFHVmJQjVeJciEB8Hh+iEBuS4faTOL//SwGWssWoNFp9on9G8HjorDMMhb4HkG81jCBHyptPyY7QIdxHeLZEMCwoHif5obqD7rIJM75kisXNogyiE8InvKblgy0uUE5mcXcpkFFUz3hnkoDn59u7UqY+9dT3K9Di8Ctw/Zwqq+ZW8RGJXeSgA4HTkn6uF+5oYmxnrq648aywPKPRcsLff7MEXsV5/yjspVF31bUdAOlMMsyXpWliwW2FF5XtFzbaCIPWvFMxhb/bRok48t0XzRFkxY1s/a2b52iifCScPwaDI1tcf1AA8pN5KuMPUR2lUbI9YKF0/cfnWB4pJQy7cTPGzs/M4AMJ1AwduzBftoXvXFtPrWusTSYeXn2sE+iSrl9k CLxaD5tF 4+1MbErqE5b9mTXkh2qnYrYuXxyTcTJPoF1BLkNkmo3FPT2zq2cG7MPZD1WbFTk2mKF9UUOlQZVOo+mQx83XlOSdLkUhFtS/YoArxqV2hXm1ZARtVzSd0vemNR32GHgyXqKA5Yb6C4QopX53Yj3Y0ueOw5BgLmY7qTq3tExrTcldgVbd5h32zRTKTzQgRGW07aNi32E62dIZycagc3TYP6yi2PcDaej9EqNonhiy74rye2PK5dzGeSSyfCCMpK1hNc4GU7SHctI/822lC2nVY649C4FCv7IoCpdDc5O/Rzuo0ZXxIcbM6g8g63iejsmpRdHN8JXjqTIceWqO15Ke/ZPtfvWv9Hlq5dVlHSgnyOfj2/3eBI7O2dnpMsjtDyq9+RWM0Jm4jZhA1Q6CST38lUgYIxAVBXoiHFhJjDjad4oqpWBwI80kYW1+qWr2AU4Ud2S26xYenQNp8y0nsp7T0ZBTRUPWVJ01ceymKJSbgI9ySNb0zWArQjEWzNsaA0si9GMwz54MvyDK0FPTq1J+lJ6c0VIEyd7XgNjxL+EzUggPWmzdM8bRz+/gyc4rEYbp3g2y4127l5ljGa4IIOgUVQ4iXBbDtEXQwjE4G/zR3LVZ7TmYHsCN8JPni12OjyKnMtZ20fvZX4BAMmM73AmBORsx4pUdwt9lc/arHe+nK2ChihxqkMTLSthjeswbuUiTcD48egbT3TpRSiwif2Kdsa/j/O3ak4QyUiX+Vf02VzlE7t1xUromg1ykxsnJIyhpZ60dAJitnQxwhMJCqQ9FGq11tNvLZFOBrNOlD 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:47:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419730 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 BA984CDB47E for ; Thu, 12 Oct 2023 19:47:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 68B728D0141; Thu, 12 Oct 2023 15:47:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 63BE08D0002; Thu, 12 Oct 2023 15:47:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4B50B8D0141; Thu, 12 Oct 2023 15:47:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 33E9E8D0002 for ; Thu, 12 Oct 2023 15:47:29 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 1251312087E for ; Thu, 12 Oct 2023 19:47:29 +0000 (UTC) X-FDA: 81337843818.29.14C5AA8 Received: from mail-io1-f47.google.com (mail-io1-f47.google.com [209.85.166.47]) by imf23.hostedemail.com (Postfix) with ESMTP id 3BCDA140022 for ; Thu, 12 Oct 2023 19:47:27 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=emN5PePt; spf=pass (imf23.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.47 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=1697140047; 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=wNGrCStIlJfqoUyP2jUdmRndQxOqlKd+7xaBRIv9WCae1WHdceb7KxfvardFG3zSjFisWA zOBT9VSlLVjDEyKTCjuo4MRhpwfRbZHh/1tVcVxtf73lG3yhtaW58n7j5SI3EJARJ+osvv 2bclrxIlHaXReqpxSFF6+2OZ+C3JPi4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140047; a=rsa-sha256; cv=none; b=bJz3YTk0P8UxzyoFu9IqjA53aT9agra7pVxgy01YRfzcPjWHUSFmS/18C/P7QJGAGrDrp5 lzeFxa2dfMt5E47txx3Y/YbSl/X1x6UiwJCAiauD6Kf/JFegH5euBRTDLnzxN5ygchKpUA ZcjUFwbQWdRfoWGkXSGfzN4mv7zJPXM= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=emN5PePt; spf=pass (imf23.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.47 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-io1-f47.google.com with SMTP id ca18e2360f4ac-79f8e4108c3so56664439f.3 for ; Thu, 12 Oct 2023 12:47:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140046; x=1697744846; 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=emN5PePtkI5atPaR/1coBpwy3PdizC+/Kzd6NUAX1pg1plBX0t2UTTOTTezwFFfQEC l4oIzzZhJ7O2FMOZRRG04TJe7QJLx62eEjWtH+/8gIfsyJCA3eG0I7nKZS2+3Fnc26Mk dYlyYFBDc3CVjnl+YK15VbQMXuKkz5yCNHcS74ynbzhxbCN7PTkrNeOXCAcPvjfidu8v cGmJF0DickHsZslPM2tyGHBGTOFZMY6aLByuPMib2VwM263ujS87E+2pTbRnpQJmNUcw LeTTBy6QSOUczYiR9wNeFxSc3Q6OL9HO2utNRhVbRUdYKnxxteybD2cgMTvrzgfwUGBs C1Xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140046; x=1697744846; 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=OqpoMnj2wZbwpbiYMqRq3BsIUTHnF0FCutS+QmHOHd6XLHEXIIlPD8mJzQWqb7tn+I nie/PuWPNKOMCi4nFp1+eHDPGICx+9y8+O1IY9djDKM+IcbbiyStQd9pXSL0jafSKllN +l2nEbRzOzZQ0rZWurfjGoiSa2Skiegx2Xnxu16sW5/4Q9je7r+hWRrrdyLCl+IVOdus gPj80wIggVcIb2pUyr8dgjzfqg0cIgQWxOfbMjvh2a/J3SZCKwd2o16MFkn5aqKwHLA8 RzQUqyV4q3/cMG/a5X/3Mio0UPtdk8k9+2opAFQl6nOX7Om3gLwW97B6gR3jJC0ojFtq EhHw== X-Gm-Message-State: AOJu0YwP5lF8sbl7bJu5UJIAmznEu8W25upg/4h//eBDHgQduJ/lM/4W b7kk2EIrZUhpEGBr9TIJE0Y= X-Google-Smtp-Source: AGHT+IH0UOfRQ4ikz9Hk4rM8RmqNySf3YxcTrIhFIo+68DbLkG/CP9qB7HHORAuGhOuprlMeJ8JdHQ== X-Received: by 2002:a05:6602:2012:b0:787:1568:5df7 with SMTP id y18-20020a056602201200b0078715685df7mr27961322iod.9.1697140046416; Thu, 12 Oct 2023 12:47:26 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:25 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, 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:47:06 -0600 Message-ID: <20231012194711.3288031-6-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194711.3288031-1-jim.cromie@gmail.com> References: <20231012194711.3288031-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 3BCDA140022 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: p7d175thce8x9h77gaycedcwqznwhgkw X-HE-Tag: 1697140047-503967 X-HE-Meta: U2FsdGVkX1+uaQf94rIsLlvBlxWPQDn+dEnDhGtI8sLDSi5l1fn6oaOWajB7VwRkhnwuHyH4TEoajUNKw4q50L94k3zniq7LnU6p3t62iP6e7asNZq/OmujDxgCeR6DVBGBOrtbgKc8n4Dy4TZNz6Zpy66/gNC1KJh6P//h6O6ntvvlUIO9B7QH9dU5topHbeK6PaI5YkhhNLUwHP5x1GR5Qi/x+lZ9OWCC07lAd519fTniYtJw+w5x874uxjwYLOqoGvgo+eBS+TQFOXOLU78WE1pITPqyQkTYYJPmT4ONLj/YKxP9TwvExd/Dhc99cDdBYHq9o/1wlaYQWnIT+Vo5f6YM9SfHBR8Cs7pSTJHXbXu2vNMUM/0DvnnOG3SkxJNHHb5YJ4lZKi81GbkzxMzoBZbC/0perKp8gSUN0EP/wfmZJYKCzVi3yFu29M29PCZgjiYnjyGj6/0OcZ8imdRlT5RkfKEfIUhzIEalX4isL6xAQD8uC7YPIabn9kQnE18tGFDypycoesnJ1S55a41nHoWkdCBui4QoWwB6Pw0VZIu7+dAzW+LbtHyOx6xTQNYizzZuR7vkzTvzXC/I7spZ+JZ3hR7IQ1r+MWEZwdC3j6B4x0eG1Sp9wXux6L4J/tU03p4xmeItzD6C+CqsIv5l5h6eXfE9bpXxn50/9sDTg0xgjAzkchmDQiaDc1HMN+hVpZgbnl08WB+qgHG57EQ/98BPd7FVvDkT1Jr/XOYxkqCXogMFFgL7p8sCbm30yUkZpStmQ+uo2rsLmbVE20ffWZJ34njL8zEoJ0N9ALZ5nONAVTFnR3pHvkUJLNWEXOvZ5aPWnug8QIoZmqap/jttT30/++IJTQXNWc24DPPsfKOsPuOtf0pIa1cqLFoIyi9/5yI7WR5TOYO8n1OdqXZhHz0ia7bWH175JBdCPLEctOePKKrauLBj10lDTetICmVm8xwtMvJKAVZjnWkn IuDnIW/x kZKpWt8LJrKM18q4BXpQULE77/REN2gan6X9kcsnoRE40nWTS8ggEqy4HRUV+rYqBw459Bl1EhALHiREoG8YnHLqIlSrXNr4EzIbwV4avRZsl/OD6+3Ct3oLOm27CLTc0cCXQgj4lhTbSQATckvJUCXzIrr53mYbZcLvnSuZbUPtO2buEIdEXJD1KyjEqrWnWW2RA7Jh54cznrOJFWmGRzOvJKdPlyJj9zqidXMSorVzQukl6/ChwDPPV+2UslIpglD+SYucpROqLX0dKbIlJMJl5rypMTYBsXOPbnB5NHda5ovgh4xJYyN0gKtN+jrWlkunxuKwDePe4Eq2rXhswaKL/PlnSPra7pamFKcZTrYG5ViR4QRTs+hyRMtvImKTwLhW7QsI0ZUvYyeinG/sm0r6N9ENWKjl1X0NWAUp3tGsmVQkvNaRIC6XHbebSNRMfrk9tf9+YZkv0qXlHTirqgkX+u8sFG8h/G8O+GVVkKa+uy5GpuwKF3XABo+wk3hvxxy/UfOZ3vVCTRoccnIjZhHehL0A/Zf3Zr1sAkTuB6hD3REnZVX6CEmxToO3V8Wb7y70FxA/8wWEG20NmrkuudMkT3Q== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000006, 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:47:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419731 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 CD67CCDB46E for ; Thu, 12 Oct 2023 19:47:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 860F38D0142; Thu, 12 Oct 2023 15:47:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 811288D0002; Thu, 12 Oct 2023 15:47:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6B3958D0142; Thu, 12 Oct 2023 15:47:30 -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 580AD8D0002 for ; Thu, 12 Oct 2023 15:47:30 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 30D3F1407E7 for ; Thu, 12 Oct 2023 19:47:30 +0000 (UTC) X-FDA: 81337843860.16.B780D41 Received: from mail-io1-f46.google.com (mail-io1-f46.google.com [209.85.166.46]) by imf30.hostedemail.com (Postfix) with ESMTP id 48CFB80013 for ; Thu, 12 Oct 2023 19:47:28 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CPCh8I40; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.46 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=1697140048; 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=LsLPZb88n4vQg0pUIOG8RKXDQhM3h890onzf98JeoyodzuLfyb/N+IMjxEJpMc5gRZyMuD ow8XX0HVkNj6uoiihgds3pzPP/wReF5e1efzLEcxm3jAy85aorb4x29fyzkGO49uchep3h eeJ3SezHEpZjQK6anS/HjETUzgMGmOY= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CPCh8I40; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf30.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.46 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140048; a=rsa-sha256; cv=none; b=S49EOHyIuHcIFiF7YEaaaj/drQM1KCaTrCApqLOdLmXXORDl18KeLOX8M+k1tNKPCF8bR3 wxGHf9fsT0SPC946OxGUPFCOzpeH7ztZjQ7OGy/dkYGBM/CdE1/4ZyY7HSPnmsXb78rts8 qCXyX3w5e2VVpe30mVpfNNGB+4tnx8o= Received: by mail-io1-f46.google.com with SMTP id ca18e2360f4ac-79f9acc857cso49087739f.2 for ; Thu, 12 Oct 2023 12:47:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140047; x=1697744847; 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=CPCh8I40AHbU492um9XEvDM+bKx4EYQ0MvbcrG8fiOWDPKTrpVcXJWwFdLkjGuOIvf cjkcQP2D8wkFIX9HIVKFj5MRnOAeq7pjo/aGYOGxR2HDXSCRzNo56GCzAzpQP7cOf7Nz eGMI2VBmH6ga6m7opvyaKtJifOaSuho3lCSPAQ+srTGqQsQUtU/UatbTSrzXFycoMrI2 ViJ8SPVUwB+c+1OtI2HcicjNdkOEEkg+KQHqx4tW5tVpWkgqOaiprPFm6QaLCyN3zwKj 20LCAh1qsvZsfoYt0E/uQxEV/jbBULPTMA1g2uPBDvpMX4AxyQ3hW6OK2hKAr6eFhQQB ALsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140047; x=1697744847; 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=w8GsBk5Z8IFRwsDbTPJPpgipU0OKI+YR7sCeOZSNKH8i8OHdHMIuA6q2YAPzderTHP 649eZYFX7HOIBt9DcRM3f9NweIXcSXGRcI9Xx7PlAakpKqUg+UguxMFgaQxUFU0VCZST qIKM218nniQO4Ocu/2o+kGZfB0QUMSb/r7sAKm6UQRxg0XFv97klONq2+465LOWhWqi4 Ua3FFpoA8piLrX1zYeqq08hb58VdWR3YtBI4jfQpEjaRnkHd7BmAWNd0ss+Cysb6/9vO Z30bIKFerpxbI3sJyuRPrijYkMOoH2K30OvMx0q6nRkEuxB1fzpQijFFqtJDwcqmwGq0 ijKA== X-Gm-Message-State: AOJu0YwgitawW22kLtoroZ5op5MGcDvCP/3x6CgpW2RKOPHGha60D5bb yFQlAX1cY1s2RYETgGAa/pY= X-Google-Smtp-Source: AGHT+IHn7mDbO0S9A1+0b66S1qg4vsjED53qQ+O/oQTsPg5mse541WjW5llcVGB1QOru72YgI0Y3oA== X-Received: by 2002:a6b:f30b:0:b0:794:e015:585e with SMTP id m11-20020a6bf30b000000b00794e015585emr27649805ioh.21.1697140047466; Thu, 12 Oct 2023 12:47:27 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:26 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, 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:47:07 -0600 Message-ID: <20231012194711.3288031-7-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194711.3288031-1-jim.cromie@gmail.com> References: <20231012194711.3288031-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 48CFB80013 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 8mo3iftacgmizrsxpeyc1ihfwrn4qpdk X-HE-Tag: 1697140048-280666 X-HE-Meta: U2FsdGVkX1/04fuHwctpEnekDgUKeMJ1w4T0l5kbWpd0O8GQ31VyTrO7/R6QNSf7dMBOxoP5zgwWaQaFudY9XdfhbIXEtnsmPMHnfZKAK9r9WiE0UgYPdhnG9bCtZ4IOAsMtk2EqTOwUVq/GCGkmEb+Qr/uxY3WNx/QMJZ/rrfFdCekIaA0zQDnpR1nQAsBuHrJzmkRhOnwuZZDxj6HjXi9BjEc3jIeuDv1X1L+1mPZ30hwJk/TWES1Tyq3FGGSyIlaJcUecV8mZT6JeGdzIgRR5B0I4C89RXh29oeBg+QvY4dPyvpiHzG7diZp6J7HNhzC9WmzmjPHOX+Qdk4JZ+RduAHWcC3mjMmIomi2c/vbFhIocc4hwZZy5tpcqLw7YMcNUiL9dcu66KVN/VLK82bpySjAWNdzbknh21SKkSCHUMIEEoKIpYqzjICbDl0qIXCJO5V54nkH7OtcAj7aNF5VlNW3hja2xP1djzWSd0vWNTBj/35M6Y5CgapxPKW5Bvfn2Mr7jTk7BagbTVWatNNPvWqhLqbyso1/gJPpGAMonm2WnHSugLWRgkME1jAvj5lHdqu/syqtVyxWVVR6X5RHxH3DRVBHfPsAeb9Y3A1EfAld1/fCuEua0DauFF2PjR2f0akV1oQuxs4vFUOppqVBYvzBAum941M8g0R40Yheb6gJ0Yx4C2fq+ATUCE4+4kITy8+T/+HIMZWqZIIXu7RRVCLH9Ypa8bLR6RL5FXWv/2kTiADeY9AntKpj3Scp3aIbPzLVIDbCHoyKD6fk5sJD91i4GbF7CztLfjxhRH9hpiO7Uk2CpaUeekqITlMCQKNJNVapTjkRz1GTCX98IASenmkdi8n0VsKqkppNJK9LdhIJKerbz3j5dCiN6ywm6x5DF6QrqXyf+lfUk3zMB/+JLyqV3o8+6lJoaXehAw4BhDsGhVq7Bqy/+TKnBxTHFiA+PvbWu5rz8318FIg0 70WewXrq dIZNuKuMps+nSQJSLLQvx5eV2gILvtLJlQUd46ccii9GYDQqGpoTQUULpiIwSv4gWrSueo4yl29pK/356Ed0X2PdRCIaOUKX7fq7tYKUOdfkPqIS1uL5+mYx8fd62RSdgsaozo+LdJ9ZW4L/GnzYaFHvNFL6Ah8v227MfOA63Pa6Re/OY3fUjAGlS/hxrr+3Ub7EeGMyHve5TxDlKIJOCMm3Rr7V8rWH2yvbtmuzJuSNPlOn1op3bstmZsWmQFnp/SkMMyQKS9SYs8TNNLFbWalloIQoP3oJp3Ss2+5yoWRzsgYRytzcHdiDR8o1StegymxpSHnbNFYRDpb/RSh/2VLTIF/amLQYP1GZJLh5wiD8yFX2ex/tUJOT7m739oSZjMVZA4p+GZF8W/JkLA7V4txMvdiKH4jda2nkYcn/Eabq2L0SGTyOdCmPRZ1iUxuhx3m3bWkfXTS6EhQr/buSDSgUbwDYdgyrEa9zPSM1mQWpRBTPd+xnWC5L0m+OSvm5+8V36ZlB+IYfMOwgNdw+G4ZWHebH0PYXdmq/guQTE1GfkFhRMGNra3PVbFnL6SDnZZyHrOL7f5eOsc5jcWyiafi9Vdw== 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:47:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419732 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 C0C89CDB46E for ; Thu, 12 Oct 2023 19:47:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 79FA68D0143; Thu, 12 Oct 2023 15:47:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 74E4F8D0002; Thu, 12 Oct 2023 15:47:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5797A8D0143; Thu, 12 Oct 2023 15:47:31 -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 42C558D0002 for ; Thu, 12 Oct 2023 15:47:31 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 28CDA140892 for ; Thu, 12 Oct 2023 19:47:31 +0000 (UTC) X-FDA: 81337843902.11.42A25B8 Received: from mail-io1-f51.google.com (mail-io1-f51.google.com [209.85.166.51]) by imf14.hostedemail.com (Postfix) with ESMTP id 5658E100024 for ; Thu, 12 Oct 2023 19:47:29 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EvsrfG5g; spf=pass (imf14.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.51 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=1697140049; a=rsa-sha256; cv=none; b=oITqI+WYxlUKVwdUrx1Ie/NDxfJJK8c8P6L1VDqYdIz9LzsjScyH0KQewovrSAwNd8NPIm S9ZcpHDhpykzDHJ7JADnaSLB6gWD5qqHx465XXUFC6EoQf4KL1I9b1ZWlpoROPgcPubGEy arJCazVfwlpFmolIZBIoQNaZZahq7eg= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=EvsrfG5g; spf=pass (imf14.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.51 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=1697140049; 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=1GeBCu7kfpGoA5XYj2p2/wSjugtC+8oMrb96wBK8P79g/zxhoz01XW3XcGxJ1DL+NCundC 6Z/mrQL++eKBNK8JTY/cUS8RSDDdzthgY8M685VElHNjdGjKAMW0qEDzoKpSsBQo7bITTr giYXijqAYkZxvh/zpvOE8BQ4VzV/tTU= Received: by mail-io1-f51.google.com with SMTP id ca18e2360f4ac-79fa416b7ffso55132339f.2 for ; Thu, 12 Oct 2023 12:47:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140048; x=1697744848; 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=EvsrfG5gUesubdMd0dx13OFtij6WVBj1MnWTQ2sur+q0HbCu95sIFGVExOoyuF0Yu3 zRwfnTi5rF024Yaryf2d2jlnYgz5GN0wwWa8sbgfuDtX+0Aop3sMIkE7Pot12nqbqw1M vpLu3UmU2vr/6cUjaN/bnLKAJSePCA+ofqEDGKzFx5OblLT11BGdxxiS3E/EHKiC1PBO 9DGpHNHsHv4FLSZzRz+3wTTWmAgQn0J96razfd9Fcy/72YFh7dN89IpxAOESAiHc1Ji4 EvaXIkoQY6sAaEjjz4/pY31QibYUJHjkUctm1gBIrxPh2M28x0fomGWZQEOs+9aGS+Wp HHSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140048; x=1697744848; 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=OTdGFOJ8smQ9/EXHARpXAJqoNRtXMaezyIjqW/gQ46XWj6gg0JGae6zMmAPEOl3gJk rKRbM/Si7cksByz8qUjkmUZkJurc6HVq0Y0eI2GdqqCT13whJ74pP7j8cPXDQBkey0h0 osa4zlBbQ54T17Aqg4R9jdjSEswpbcHHh1hib/kGRMaBBiodNj5LZgMvYjOPSo3pFZHv +Jgu0+742eehjwkjIYtqy9yrXV/Ew/iMlNe1TJPvrJ4romOHMupXNXPaPyvW7oTXXx94 nmxQpE+8wMk/SrkX2Cbkgm0ji1GJRfGj1SI0nV/DtMsrH96qCe1rxFUvZDFleycIQx3h Thiw== X-Gm-Message-State: AOJu0YwGfvEj8Wol0JSzI9SYaj23xKCwgNxLS4z2CgRN9pHtjeuNwAMW w01wStTeJpj/BkBhjIrdqvg= X-Google-Smtp-Source: AGHT+IHwXqweWhb1lxAAh/8nmrZo53I7KZ+f3cHS+05xFDAlJj11wM8cG2c9g1NHaGlPQ1kNha+MpQ== X-Received: by 2002:a5e:de4a:0:b0:794:eb37:b0c4 with SMTP id e10-20020a5ede4a000000b00794eb37b0c4mr24029604ioq.21.1697140048511; Thu, 12 Oct 2023 12:47:28 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:27 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, 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:47:08 -0600 Message-ID: <20231012194711.3288031-8-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194711.3288031-1-jim.cromie@gmail.com> References: <20231012194711.3288031-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 5658E100024 X-Stat-Signature: tk7t1xkmc1bo9qfyfyft1r5coathfizz X-Rspam-User: X-HE-Tag: 1697140049-714675 X-HE-Meta: U2FsdGVkX1//pDnbk1X9zo+Iz2fbOEShUZ8Zf/W82KvQxg8F8+Ghtff/WdQn3IcImISTIeCA3eWxEtPyqx4xKsCizsuGL6p64UHpfW9Lh5iFkALGdB5wa2CVIUa1sGNzqTB75ekjqybQtj71KMwn3oPAaYBSbuaVJuaEfJRuounXWdyflvT3uTUfhnjTBdqLRE2PBYNg5OjQe296TO4DtXZMjovK9qeBmZqFmZJ89BVnXG1+0750o4Dus2ZbXr0DSs0GlLnakLrzuhOGXkyLiBTpH7CAuSG9fpR95W2YJzOIaW8qknOeqKwBF/oIWnRAmdFcEjnsvigj4VUUjPOeJpzPwmEFwnCMYSgasfO9++bM3oaWxiIQ7HLllaVhAK1P/sS5mRTyXk+9WE/p5ulNMpVxkJ8gzfAFMEAIe7M5JgTX7ZUIUNyIF6a5Bv5cNKZP/4hxQTSlkmuAA64s7dP/N3DVgM6vYC0xNiN8b2IewOCD72Y1IQiHIsY+XWROJHZ3Nk0OE9kioemhO6n6FBDmE2eJAwMzVFQtA0SP7cBJ0BhRHLTEG8lh/0oE5Lnv8rvE9xH6HOwQQ/vKlWwr1ZtmAngxjH3acmUAV3KxfN7Mgefdav3mLPqI2rPqbhR1byJiuogz7SmyWaB7Tnwxgefl1sHDdr6FxiUYxRCOTEhBsfa2u8CYlXps7shgMZfxxna8nnBlIqEQZM4aACOznMVnWDvoJPT+ydHH862e1hAH/o13Nb5tr6oDlij26botx/7t4rFWo8iPI87i8yQBGeGeUjc0/bZH+xornQBWTqSGRAPahM649XYepgW0UFx+y/BrysoZsTX0HmKXJ0opLrCXzcSjjzuNSq33K7pd+F8vArZ4nwGFy3iqOsZL5v2/g6tVp/fihW4WTfS1ORON6zOZf+9ITUAE0ePUiWWj48s6MFz2GSWMge3w3RHLy0q63FJ55Cx6gtn4W76Ub0jtgc/ v1KQ3fgc bJyisDIWgP0vv5YiTtn15IfNt+gxW2H8X2FDy0bQIzdRcCsvW/+x9BtO2IR8uvmnYoW1OaPiWTqVAYtWmgd/kfJ/wZpau5BcbkljlV2QOmjDbuqy0SBubB/TnFP0Uy+OmZ5PVkrC4YZ5Uvs8AfnatKRHAN+YI1zBUxLld15RuT5NBQw988TDLr6vMwfc8gbbDakVv/XIlaH5DTmc+6q0DnMySd8WND0ySOi1BX/ybwa0lb8p1tI5G4aG6Yx/9bW/tt57/AIdmzxNv3FwCQLNIMolxO8niVHZcpcamCQrbROlZZc9IFyuatVxbdunoXRN+cOVgYGEiuoMsBpCQI7S/33yrcCtuwNYGLnVkCKpnXcUpMoF97pBEfzYmB1ZanN7XEpuxDCIxOAtDr/G6ExUJrT8iRHa+KBiD5ODBqU6D5EyZS4ijRPovKeCaMs3JNB6MksbFsHSBQC5Q41dwpyE1dod0XjCDOV9PXh8y41pFfNgmbxa7Z7c1/QoZ5TuqIuy05N0rp4zJcsUCuPjNi4nyuW59IKQidXZdJq2pS6f67L0uG1MASI3bwGfojnoAK6WzZzcyedl1OwS/PihnmbbfW9ZRXQ== 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:47:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419733 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 A919ACDB46E for ; Thu, 12 Oct 2023 19:47:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 729DF8D0144; Thu, 12 Oct 2023 15:47:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 663C38D0002; Thu, 12 Oct 2023 15:47:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4DB6A8D0144; Thu, 12 Oct 2023 15:47:32 -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 377B08D0002 for ; Thu, 12 Oct 2023 15:47:32 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 11D781A08D1 for ; Thu, 12 Oct 2023 19:47:32 +0000 (UTC) X-FDA: 81337843944.03.F48D94A Received: from mail-io1-f45.google.com (mail-io1-f45.google.com [209.85.166.45]) by imf18.hostedemail.com (Postfix) with ESMTP id 4D2CD1C000D for ; Thu, 12 Oct 2023 19:47:30 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Ehm/Cadt"; spf=pass (imf18.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.45 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=1697140050; 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=U6kZU5r9ozY5m+IUq9OPlWsGPgxOTUYUJvXg/yMalmIU5b42fdgZPyAdjt/FRETooAfFVs uPiE0MhxsNMrPRjy+mrdqlLZVkwqFjas0wXVnZhKgeFrtZZHP+YwELUu8gonGl+zKOgfvV 45gzRjsGDqCODnneqChbwJGeIn7q3wg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140050; a=rsa-sha256; cv=none; b=zyXuJty6zhpH5ZRHyiBeHKTrmU3skZqKo0QKygYLU/cZcNZQ3N1+AdeQu9pzd+Kr3sor1h mNmkFcIuiICPHbSz/2waxOYddkPPI1+378FHWxuIl3YC4M9HuNpfnxAc0M9WzmcVCnlbtb C0Tzm9ilDd96vhIHPAJBVQWWSzCO/0g= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Ehm/Cadt"; spf=pass (imf18.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.45 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-io1-f45.google.com with SMTP id ca18e2360f4ac-79fe612beabso55133239f.3 for ; Thu, 12 Oct 2023 12:47:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140049; x=1697744849; 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=Ehm/Cadt0rqjoWC0CaEOKqKyXuDPtsyg+5+OdzUgoFXBm/8VuxZX32Frbvme4I3KZN ORbYNLcY7GWftPApFUciZV2BXyQ7JW/l19nvWdRtfGROJpl/avqeQzImO4q7AaTW/TW0 JPBdIabMAcpsv8ILDe4H+9LPe92wa28n/abooDk2YBQvQy6uzxAftiHphfwGM2nSQ85e BriS/73HI0/aKEeEEzk35J3zhWAdc9qm7gxLMKWlR9Vu1Z+Y+cTqA9Xab8lUvhRyn1br bBA+0ysyN5AIfUKx1JKFKR5k17DpeKa9zM+SAjTMLvrM8Mxkhh7PFYuNZ8a01rQbL0an 8Xuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140049; x=1697744849; 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=dTYii2X3b105RqcVH6WHJHxtbzf+tMtbtLkFN9EH8dAo9IStSlWxWp+pii3BMbw8Pt Ixg28Jxwq95c4IuNCyYWu/h6TqOgKZYjGNGmzsCtPwHu5YF+bQEANk3VvfIGN85WDzGa NB0HYIYyNc5HQW1R4tDO9G7iHrlngNUl4jD5O9bczc0It825KZgR5BQW+nWIuyuGuBq/ qj26hPgvMAN4YIRDRZf43p/gV7hYZqhxwPkVgS2FY+kti7S2QOnvwcrrt5mn7ydVoGEA VjF4Z69DHw6O8r8/xIoFvoaBCcgDgV8+0ifuRAgXa1nyPpc8XB8UInl4vqTNsdqtoAm1 dujw== X-Gm-Message-State: AOJu0Ywl/l6ILCL2qwklj/iqEfPsmWFuw4/HpigJhAPaM7txV3VVAc6R 1rQ3xlbQiqVMwfB//1/jyQiL9lDmYR+Jmg== X-Google-Smtp-Source: AGHT+IHCeodG2zR7qXJvGMWnDUytuto++Y0+52RDtBpPMwO267PxqNwztcmT278yMiBWKoD4h72RcA== X-Received: by 2002:a6b:ea15:0:b0:790:a010:4c42 with SMTP id m21-20020a6bea15000000b00790a0104c42mr28325512ioc.13.1697140049529; Thu, 12 Oct 2023 12:47:29 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:28 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, 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:47:09 -0600 Message-ID: <20231012194711.3288031-9-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194711.3288031-1-jim.cromie@gmail.com> References: <20231012194711.3288031-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 4D2CD1C000D X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: 93mq6hyko8fa6aad8zcon4i746szn37k X-HE-Tag: 1697140050-826069 X-HE-Meta: U2FsdGVkX1+9mq/u+9XZ/XpxTbPNjwm3xS8DzQ8iWU/3zSHX6CfKEx0vUbCqIXKSM7V8YrvDTbSQgkmUVeXLIv2SmZSd43AJ28nWv0Zx1QW8+nFtchcnHN32kywhA0XoyD4uOgWNC8w1GpYP0NdWUgbXUlgfO7yXMsju6dDb+pPvI3BPnem/hsa0Y6UuX6kVMO2E6Yaf3eS5QVWwBhjqYV7AUERxkf7VBZ+9u+tCePdn+pStZfsQyiLq83/jvT3kXWYDcnUYCTehEYBFQtmdmNvFjRhn3Vnxv1rPfMB5rpVMkL94I1AUPTHndCxuh+4Rjq0OKxWLcLmKiMmF91Ub1FlxaIeYanviSj7mMbt/SfsRoAZSMFH5eTmnjHewgljTduKBvW4CdZpwZPVk1UGnYVdMxRmeMBYaSDSYCsah/sB5H6RRPN1z4cza8Acmhz+WEdlfEJjNjGthD7bbNj7RotGcTocDV0zTEmS4uuTqGskA08keCSYpQU9HnFCpzt6qzQYiCQ2sxmKqAyEiXusu0Im7BdAw2mXI/ytkAGACjMaaoJMH/ZantLQgfLQwWweRmYXl0r3+d31NrNN+VGMdYeo3qmkc/QP0PDLsLR5jsX5vbM5oYF1xIv0I5xapHFUvSQFa320yFfwgq4J5C1/qzQ2WIfMZ2elTEv6zF/cMK+jEFyEzXZsLNN16CjC0W//SknjdP0shreS+yI4pvueXVkS6K4VUgOuwzG1HKWgO+Qz8QleTry7zQcR9HcuMfngyaS+7O9L+4SbA0syCXuheQA2a3o+3eraF5R/jRzW0YC+qm5331HmE9XlUosBRThYLVBWs8XOSuAgBdHqRuqlApR2FSflr0Zs3khVKMLaD+pVy3qUl4CZng3rRk49VGFba/cj30qDxh7hIqo51w66/7yo3TxPpvaWO/rXNZ32502NoVgWybP4XaWWXnC/Da4/tcpktgK7TsqX2MoQzZNl r4p6BOWC UwhvyKZJtd9zP5J48WGLtyjI/qu8roe9QP5F1qM9si8t+r+MXDNMchJfUKngIwi8ar/iOIxGjwRQp/4dxNm6OFv/T7KseQJeESWSTnMOQobvBqkVWlp8MSk0nud44euGNVXm02s7D1V7j/4Mffn/IzTqUiOA0nLHFAnWDJdjGxEibo0ebiukODN2rsSHdVFWIL6znqjnaQXalU/EM8Vo9/c65NAv948fzTQCUezmLHw6NymHd1P1a35RjYfut3ivAL7eoEiUwgInNnszyLVSFhHRRmt5L3tIqXMCeEWTR+imPri+E5mE/5P6uE/Nq/mfLgp4OSk4zrcHLyJV/BoUgTbU4n/qsQar9k3zMyGzywXsUPQFlzmSBSM9zhHtHc9Y81uJAvK6ROfsQLiXz8gg28n0YHofEb7ewIcDEt4uz2AAvbMFmh7QHdT1bJelYyvDL1f9EENwgPBOGCDpI1t+NWQq17ZtJph3dL4zERpkF3XoHsC+spVLboLlQxlwQMwVYEjsRbtcedduy3DuTiCB+3xrfPhdSB/iNWyOzWsNK3xMrcUw4W0UCpt9kqZRwiEC1lDncqBZO0gskoreI32c2SUDOKg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, 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:47:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419735 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 91A34CDB482 for ; Thu, 12 Oct 2023 19:47:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 024B68D0146; Thu, 12 Oct 2023 15:47:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F14D28D0002; Thu, 12 Oct 2023 15:47:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D68068D0146; Thu, 12 Oct 2023 15:47:35 -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 C25D08D0002 for ; Thu, 12 Oct 2023 15:47:35 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 98463C0844 for ; Thu, 12 Oct 2023 19:47:35 +0000 (UTC) X-FDA: 81337844070.30.C823D5D Received: from mail-io1-f49.google.com (mail-io1-f49.google.com [209.85.166.49]) by imf16.hostedemail.com (Postfix) with ESMTP id 514E5180015 for ; Thu, 12 Oct 2023 19:47:31 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=jzOtF9jR; spf=pass (imf16.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.49 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=1697140051; 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=ePm4iGiUs0nVTO9r9qDlzIpPPzK4/I1FEIVAcaMhhWh6/6aT0++NTeiDuLjvXmmiE0sVzj dBFLfudR2t/vbUSSTvMHGMaBOL5MZhWH+t5X0ZOegjgDCMKU22cypH1G/Obqhj4UTUC/jB 1xJix2X7WVlUE7ktFE3BUazwWH/L1TU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140051; a=rsa-sha256; cv=none; b=mTiUpgJFeGbzhLG8KPR5kuX6mtZ3fJFER61N5f52W2vwVGgwWUPhcNpg/PUnocP1skxLnB m7CmBUs1gBepP7NoaaDj4HMywo24JjAroE+iIenPxO8FXiAiBxLd3jDBHdJjQS14GU91B2 e1cdR3zBwi82JD/dFmz2R3zpVQ9rhmE= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=jzOtF9jR; spf=pass (imf16.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.49 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-io1-f49.google.com with SMTP id ca18e2360f4ac-79f8e4108c3so56666639f.3 for ; Thu, 12 Oct 2023 12:47:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140050; x=1697744850; 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=jzOtF9jRW13VrHfCtctrGR6TwdVI20M9UurtP8amFJqm1JdNreBqbemFMQn76zrF59 /EjM6LPWdLI4pc/Z24oBJr5PzR7PaahRJWjGXsbVGqYN0YivEPKqNlu5JxJWwLqPdNY4 yOZWZWmjTiY8gFFHtDL6IIfPUBIKBkzAFAwwSaHExwCACfIAcUfq5b97q7d2fLxriQ4x ySh6fpS5HFYeJrOUnD69JNeirxBYD38O4PDgXN6WMxgWz26zmHMYBNu77LKTImIEV2eX okQ+T4tMx+7KlDoUar5IS7QGIe0/BdpL5LpkbWp0WfRwfKW+1w/91xk5abenq7HARFk5 bXXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140050; x=1697744850; 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=KqfM46mGkpDI/qo4mDaGo++7XE1l9b0/bGdJi59KrfZwjy3SY+4kOXXHK3VxsTYTUW BBfF2j2a1Ng394bGDT9QhZIYdnPWgCZe5ETZ+2A5fu7G75zYpipwvFSPzN6aPzm9kDSo 8IAvBPLzDSWrTwsU/khnNJdAs868Z2z25ZyRzR8nZLs16HQML8i8CSgQyz0NNCLSdjiw RodAmcaFaRGdWvdVfJo4hqKwSFFUaVYAsQbJ7GGIRdFesgIIGMhX/eiZ8xi5nWxJzNsd v8gsu6ajkzMMi0vsxwr0a0AtI41XRQ3L3F/irSdo0H0KWYzh3j9SRWSmFoOcGFNiZfJk 05Kw== X-Gm-Message-State: AOJu0YwwBtZ6KR0erTVKvxFHyaTAyUsZwiyfglpoH1q2HMSEL7qah9oG orSwzMR/dgVLdoRDZ5PfU/M= X-Google-Smtp-Source: AGHT+IHU6/UwAxmm5iYu+krC4jYwWl30+9Laj14aUjTrmQt6Cnwhp5cwnYiXxGdgbdS9u1QcuHlA7A== X-Received: by 2002:a6b:da06:0:b0:783:4e11:76d7 with SMTP id x6-20020a6bda06000000b007834e1176d7mr24140049iob.21.1697140050527; Thu, 12 Oct 2023 12:47:30 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:29 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, 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:47:10 -0600 Message-ID: <20231012194711.3288031-10-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194711.3288031-1-jim.cromie@gmail.com> References: <20231012194711.3288031-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: 514E5180015 X-Rspam-User: X-Stat-Signature: bcmx5bsks8geur8x9zq3mot6q7ssp45h X-Rspamd-Server: rspam03 X-HE-Tag: 1697140051-159608 X-HE-Meta: U2FsdGVkX19G7WCWs4v3WlUd6eG01Yd6AzF6X5ivl29Ozui48CdeJ6n90oDTBn3b+q9oRDyXQ1Xj7RGyKkXopu6EkYypqgFmvnmo66B8ir4FRl32BZ3QJR5gTGT/23syZA3pQYDDZAo2bC2zJoIi8Jmjxaxgn8xybn6IyugJV2nIMxp1OF/RAL79BwLFVSOruJr9Yavn1Re1yMErf86kDidzvZg2xtAQ2T+LU4NC+WMwJ/auiKL1SANo/CPe2522rK8dRYZP4GeRvFNaVx5j22TVG+G0ku8KoKdBQmUb7F++PKliFF+STv6m8ZJkzS6glcJy5Ds/49IlWt3mbrpe2LnZ/uFd82Gf2YWEexYzIFiJQ99Tt9LRm4vBj0sB4UssjbFm7pLx8nIlrbeaOntUVHQ8NGucy2njXYuPnIw0ydZDS7qs4gaB2WxeOnQv3/1Jw7dFQGcXAeouAY8g5bCngcpZcJBEpmgxikrH3QTMy2XsSlMTFOBhVYTWAIDYQWLI4x7vraUGZHAsL6YuF6MQk7xuV8MNOM7n/adgxumHA5P9War7KssIYglgsYVcv4vOpEmD/xYtVFH5akl+io7HETavZK13NoT3ni5VqwKGcYV37p9g3ivadeqnDeiAIqUJzr/P4ta0iwhRInTObkMPcQq/TdejxpiKxgMFmcQioqfbnnfB4tqUq5/eOIi9tJmp0Krnyeo0aLIWY+skbypTOl9vWHb3wByHlcLSYPwZV8pyua8VsebUywh7jnz0oKKBI1nacAUkvkOsgf51KOezVw6yVrpAlPV3ULZ3HwEXWSLTnOAnHLUyVQ5LvMuLOxfT5kCz8zY8qz769cKgMqz/KOMJgT2tBVosIuwbmYGCIZ+gjLNbb0cciOTWaoZN7v+nL3GensgxltquB4+DJCU8J6qntmNsDNtvul2EwUpaGVyixZ36CoGuQ1I5sSYXSkAgnNZv+3wJeznFB0ZbUwb hKkxJh4I qanud+hGa0jLw+3HENJmLv+w/g5dgXl4/z0gS+9naYC5igO8Ve1umiT4ckLUR5lIuG+eOPLC12LWyzbPFYmHGIYNFfQFum6dpFi9KRQ7iy+UX/osP5E0pajKpgseutJEy0vJL4eR64YdhXHLzBVsUPy3T/FPRGmGTJMoCeP/5Fu7cIIhd3ZhgF2EjnVLTjnriWG3AFY+y+SWJ7SzYAMVu6C1mxzCF6WNBmpyyeU0qMuWUsDUqpGVG3xXzler1t4VHuvAoxlMBKAEK07cg9d3+1rajs9leBpFesrWEgBBjDBy+WUBp0D8B72ujwJA21YrtMPJ7KGjR7Bvee6z3XzOP0U4mGl0+N4mijDebeZPfyiP7/KXII/RHdkz09w1lKDr9BexiUAJE1FTNWPSUX1ZMQ/GmjJVp8N8jfQdhAa7TlY9yWLeYWULrSLZQeXcVO7+wGe2ARmxLHbMxUYDVy87Q5pi0wju2kLcxBExmeTeYUHCvqUnKHpg0gdNjtOex8qs5c+f4gS0L0RQ7noxoZByLyqiKdPnWDJvpE1MW50B6HgsXWdYVxiEwu2xAoCQmW/euBotXW88WFttF+3lvY6vG6z+qNJnAoFZyvbCOctpA4g4P32oddvUMAS1d2rG4vmvFa/aEvXAeZQN3udG9ySxyTbqbeGTzLn+w5RUuccj5zAbv5N4= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000009, 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:47:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 13419734 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 E5C8BCDB46E for ; Thu, 12 Oct 2023 19:47:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9BF798D0145; Thu, 12 Oct 2023 15:47:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 971248D0002; Thu, 12 Oct 2023 15:47:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7EA818D0145; Thu, 12 Oct 2023 15:47:34 -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 6A1A58D0002 for ; Thu, 12 Oct 2023 15:47:34 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 12A5A80878 for ; Thu, 12 Oct 2023 19:47:34 +0000 (UTC) X-FDA: 81337844028.13.A3D6B17 Received: from mail-io1-f48.google.com (mail-io1-f48.google.com [209.85.166.48]) by imf23.hostedemail.com (Postfix) with ESMTP id 47795140017 for ; Thu, 12 Oct 2023 19:47:32 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=RMiseWAq; spf=pass (imf23.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.48 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=1697140052; 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=6EeWZ7owjT4ruhSwmswWLDwBzv8MsBoPwPHRjLb2HgZxl/24rayFUIj/3XERp93WNoTYYv 8mDksdjWyXmss48s+zMAwYjLsN1xifYVSo6rEeq+568EE3u15QsiY+WFpW1v5eievHAp3J iE6u7aq2KMlLQrQwrUAtGmq1KmJmVmY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697140052; a=rsa-sha256; cv=none; b=cO91jINnCze5Bi+nh3A6pEWNjYRaTaYtYGFDRn0sywgIeaNh9AFho3Mpo2FGDcgU+SQXS/ o7Gf/5kzH8EhWcKGTzMkDsSGdDwmHcRUd2waG3TDY3mfL7fOZ7Qrj9V83oHu42usD903s8 TTUVQbaeDc/G16nwrF0mME439hTZzxc= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=RMiseWAq; spf=pass (imf23.hostedemail.com: domain of jim.cromie@gmail.com designates 209.85.166.48 as permitted sender) smtp.mailfrom=jim.cromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-io1-f48.google.com with SMTP id ca18e2360f4ac-7a26fd82847so54046839f.3 for ; Thu, 12 Oct 2023 12:47:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1697140051; x=1697744851; 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=RMiseWAqruMuksa6tckntZ02nFVq4dQB2/i42paA3lvw6y88jkzmWSHJoRQYmUFbse 7NoyGwbnfyQ9ypCzS98KwIOfJVbKIbEAR0rb8Q5Y1qBiR1x/jk2S06ExbS2CLkiLX3W2 HHxLpL0Yhvrw3jY0rfNWd1wcLy2RV82LDpCV3gh0HitjtH24hAqP4Uzr1UIUCuZTBr/F tTef6/0EOGQDDCji/RqE9rI4BxYG6eGigTyRgs8ImjfPW7q18RBFNCB7hOzN8M0SoNXf 3s9OrQRhaUCZdapjZYnjNUbxElLJSh+dOwkddpxnNhct7aw1vjq9xVS4SQzLK+K+zJZX 9wZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697140051; x=1697744851; 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=w+LkctJFgoVNuVslmmb3NI+PfhyGXzVNAAKfc9XRl8IPhMHnhnVKAZhYAtJmgFPEyN UG+po7uElO0uFNCnPEaWHcctr3jI9ut34ZdykKx9Rw2LDV+nAYncw1Ki+SXdiE8/UW8B asZWYWRLGklyl1fkgpK9cbyPlvufAOQMRdmGDlWlS2LT1YV17N/BUjAvX/EsUD+P3/CT 6b/B3OdBBKG7yKP+VICH5t1YQyEI3JxDPESAuuwBtuw8RwuP611j47GDjJ6zHKivpmC2 Jnp1prv5Iw9vXwvzN3B1i8kLGnyP1y5rLMdorq744lW8b+0IbkFtcqdSIUTxNTJkifNX 1kDw== X-Gm-Message-State: AOJu0YwFB3M87woXvmGWZ+O3uvQTglGColTNxvdRBBnPeHZYFB7GcqE/ dY6VcyKS3coEYa2WiHRc8PEI6nWpBh+dBw== X-Google-Smtp-Source: AGHT+IGFZRnX/2jEPkfFaY6CF3iLQdJpD5uSzZ8sAWGpNzzXtIHRrYje0mKyf+N3fhni1GhvWfWi0w== X-Received: by 2002:a5d:9cd5:0:b0:79f:d4e6:5175 with SMTP id w21-20020a5d9cd5000000b0079fd4e65175mr28322159iow.16.1697140051534; Thu, 12 Oct 2023 12:47:31 -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 z7-20020a5ec907000000b0079fbb834232sm4351002iol.19.2023.10.12.12.47.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Oct 2023 12:47:30 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org Cc: david@redhat.com, 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:47:11 -0600 Message-ID: <20231012194711.3288031-11-jim.cromie@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231012194711.3288031-1-jim.cromie@gmail.com> References: <20231012194711.3288031-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Stat-Signature: 3ntokpmr7c1a8o36uoieu34htqsrdqh4 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 47795140017 X-Rspam-User: X-HE-Tag: 1697140052-820847 X-HE-Meta: U2FsdGVkX1/4+TSfUb2SJk381wdBaAzC0TRlJ1Uq6N1jTihRH+XL8o6t+Jt3trOWcj6PN844+NFlAoFQEIiB7PWBLR7OU05e2DZUdn97kqMY4y5Zt8crMWLGFN4k8hSuFzrhP4C+GdloLs0xp7A2JVv1T1Cmty5Ooa0ShM8QqNgLAOrg/zdNk5UZJIm86hiH+ZNC5BZ7CvBUAuNUcppzdLRvZ2HucAz/ztdsAlzYttVWWlV/iGaTbH1cfQI9v93neupVmsVT/7LJc5n+wN4AHFPaNRzZ+fmJWMW9sY0MfPgX34rACfS9XTCks1+RyUNViMila+ZNjpdgdkR9YjhAuguAScUUSnMSvDQcGAig9aOHvOP+U9V6oDbu/N11KThKVsPyaXhFza5FiXkm/E7n+TNHKVJaNtii0gbndG6WV/0tLbjmRIIOtD8aags/N5wdWYzCDpnyB+itA3YhYK8AYW2t7f1/Z+Upob/ccLDPDJMHo8T3NLfsKO3HEZ4phKaQmvyir78eQJNpfbghQvXcH4zRmkGh320QaxUZ9dBV4uUkhWVraYK50yVxw5DDYAuGbLkqt8VV25vmPPLmryM/CuZeDxq4JCqqQ3cyS5W2lVGtEvHN8GsJ9X38n7/B+ufxIvPuzY9MG0sydwwLn+6JIH9RD0B0jXCY41d0TuobEzqMb98DiMjkHJI1Lr2F1vExKK0Vom+1uyRJLyeB1SU3tu23tRkqreiohAOHz5iMSITOMeW5BORvI8ZskZuDZoMSe8MqUpKf7DN6eDWra/TTF1LqDiLsXo0A6GvdZutRcOFUbbgZEmxWj+OVfZ1Sn2QSba1KGKQVSJmbKzpHHBunoHPr6H99p0yq/5sb7nOBL05dDqkmbBCbzuBc3lBB5F482ynIeBeP5vAKrZPz60+vk+wKkR9E0qeFhuIu1B0rqnq6aJW0Qh8VqSE/ah7r0+sMAMOZBDT64Hl/o8mVM3r PyljLUGD dozH2aqCeqlL1Xp1NCMkqC1cWvv1ibdOaNNwiQSHrzyH0xRI5CWcq7THG07BdogXf+az+2WMLMJGe3kGzpG4XzxxVQysBRVsb9O54HThHBq7I8DO26qC5BaRS2zVlkFG1HpKqByh2d5ghb3N3ziH8qsLnfNSsMflnOzmT7gKGnbHCxKqR5mgGnkl/d8wpBPY2pRE4c1hPZf/Koq+f90eYZxXVlcNblYohiz7XxjNm50Ol+AQGO7j6dgQA0n9d4C5k4rp3GgheGeebyEv2+3ZnBD83eAEqsfg/2coSxO0Scm1J6DoY1FnhLaXiSZ6HyeFMsa1zABqChm8ybnJvSJdIRhUJDTf1zb5bGC3/XF9O2s5lQOBRuhUfAapWY9CV08vIUlAqBh027IVDZt5b3j+GiqR4HmbQ/H7a042QBW6gS5IKf5FAIw3lB83cNElY3uCi6bSSOHIk3AkJymeCjq4syryIo/0E2bBjt6sli9gqdsYtd17tvK79Q8Inxl9mPSk3rWGmwbQhCT1dzi+Jh/sXZZi7uGTfXbsKaBi3 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000058, 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; }