From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B2103C43462 for ; Tue, 11 May 2021 18:51:43 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 4C7F461879 for ; Tue, 11 May 2021 18:51:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4C7F461879 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id A55F16B0083; Tue, 11 May 2021 14:51:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A2EB78D0001; Tue, 11 May 2021 14:51:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8CD786B0087; Tue, 11 May 2021 14:51:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0091.hostedemail.com [216.40.44.91]) by kanga.kvack.org (Postfix) with ESMTP id 709216B0085 for ; Tue, 11 May 2021 14:51:32 -0400 (EDT) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 330C2ABF3 for ; Tue, 11 May 2021 18:51:32 +0000 (UTC) X-FDA: 78129843624.16.C2EFD4D Received: from mail-il1-f169.google.com (mail-il1-f169.google.com [209.85.166.169]) by imf26.hostedemail.com (Postfix) with ESMTP id D86F44080F78 for ; Tue, 11 May 2021 18:51:17 +0000 (UTC) Received: by mail-il1-f169.google.com with SMTP id h6so18057388ila.7 for ; Tue, 11 May 2021 11:51:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vrCRdPvqXLwfcbFZbk4xQpB3sIke8Dnzk1UweHKnIBI=; b=dRr3KBsHvvPSrSla5VPoixzJBzTf66tdvr8gPMUovf9iq5F56zOW/lEq6odKFyTWLC oBmjsWdBBtCN1OvEj5/WAZdG6AG6FmazcEiQmkNPc2JO9l6eU/ZeX7+HJJXakfqPng8w JvJ8Cner1TYHinpJ7X3EPrqAPLIVAQWLTg6X2FbWTnvrcz41yUxGM1id+DAxGMAJURZw QiXknxxLJuW6gKOvfdMgHi2pVFvtFhNE/TpT8yM9LmxRYWa2O1O3yiQnMsurd5kjUMyG SWTXtuQhm2TphnRfSpw3e8/rbtqsfb2fW6L9KLxsnS+8RIvkUYosYCZ03D6wNDjix5S2 IQCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vrCRdPvqXLwfcbFZbk4xQpB3sIke8Dnzk1UweHKnIBI=; b=mUJuVEWhZ2snWhKsTPbP7pQ26JSHLZgzWsmHxXxZ3JS+DjEGqL7mSfmaucccyUEnhf 9d0LB18pSpwzn2bDGvekOXbVLbZZmYchpLPAQjUmoMgxkogBAIlAx1Y8Ny1hJAkbZWzx uNJ9Y3aw4m1FgaQsJxRBe+pqqZF/1HJal3hI7xNVxBkRIqePUbd3jzSljp38ZFtn7H1V bT4flJ9BgLNJyQidA6nxU5oxLmZ6wMAGyz3kWxUtmyyrNBkmlAmWn13RxvbFTTLR0Lah Jw5yig36pBXgYMJX9yanyoIOIXLuxAG4Fk1Bf8x7S1enzotQ8WDeoqx8FYpk0StXCMKt hmBg== X-Gm-Message-State: AOAM531UEvaojNPlPKGD33KVgVvk1T/z6cyT/YUabNOzvBq05pd+TpNy yIzudty4uiA0YHxXKVC3D3E= X-Google-Smtp-Source: ABdhPJzC3t6Smaaz6DordybL+mPFu1KmPHHpUWPJwrtzJBCyU8yCSfpMYbtaMuwiMQkDPdu1dkN//A== X-Received: by 2002:a92:1a12:: with SMTP id a18mr27989630ila.168.1620759091205; Tue, 11 May 2021 11:51:31 -0700 (PDT) Received: from frodo.mearth (c-24-9-77-57.hsd1.co.comcast.net. [24.9.77.57]) by smtp.googlemail.com with ESMTPSA id t10sm405096ils.36.2021.05.11.11.51.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 May 2021 11:51:30 -0700 (PDT) From: Jim Cromie To: Jason Baron , linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, Jim Cromie Subject: [RFC PATCH v5 12/28] dyndbg: allow deleting site info via control interface Date: Tue, 11 May 2021 12:50:41 -0600 Message-Id: <20210511185057.3815777-13-jim.cromie@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210511185057.3815777-1-jim.cromie@gmail.com> References: <20210511185057.3815777-1-jim.cromie@gmail.com> MIME-Version: 1.0 Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20161025 header.b=dRr3KBsH; spf=pass (imf26.hostedemail.com: domain of jimcromie@gmail.com designates 209.85.166.169 as permitted sender) smtp.mailfrom=jimcromie@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: D86F44080F78 X-Stat-Signature: wtpzyuefwp34njh3dujna69jmtsbj3y3 Received-SPF: none (gmail.com>: No applicable sender policy available) receiver=imf26; identity=mailfrom; envelope-from=""; helo=mail-il1-f169.google.com; client-ip=209.85.166.169 X-HE-DKIM-Result: pass/pass X-HE-Tag: 1620759077-95553 Content-Transfer-Encoding: quoted-printable 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: Allow users & subsystems to selectively delete callsite info for pr-debug callsites. Hopefully, this can lead to actual recovery of memory. DRM is a potential user which would drop the sites: - has distinct categories for logging, and can map them over to a format prefix, like: "drm:core:", "drm:kms:", etc. - are happy with group control of all the callsites in a class/cateory. individual control is still possible using queries including line numbe= rs - don't need dynamic "module:function:line:" prefixes in log messages - don't care about loss of context in /proc/dynamic_debug/control before: init/initramfs.c:485 [initramfs]unpack_to_rootfs =3D_ "Detected %s compre= ssed data\012" init/main.c:1337 [main]run_init_process =3Dpm " %s\012" init/main.c:1335 [main]run_init_process =3Dpm " with environment:\012" init/main.c:1334 [main]run_init_process =3Dpm " %s\012" init/main.c:1332 [main]run_init_process =3Dpm " with arguments:\012" init/main.c:1121 [main]initcall_blacklisted =3Dpm "initcall %s blackliste= d\012" init/main.c:1082 [main]initcall_blacklist =3Dpm "blacklisting initcall %s= \012" then: bash-5.0# echo file init/main.c +D > /proc/dynamic_debug/control after: init/initramfs.c:485 [initramfs]unpack_to_rootfs =3D_ "Detected %s compre= ssed data\012" [main]:1337 =3DpmD " %s\012" [main]:1335 =3DpmD " with environment:\012" [main]:1334 =3DpmD " %s\012" [main]:1332 =3DpmD " with arguments:\012" [main]:1121 =3DpmD "initcall %s blacklisted\012" [main]:1082 =3DpmD "blacklisting initcall %s\012" Notes: If Drm adopted dyndbg, i915 + drm* would add ~1600 prdebugs, amdgpu + drm* would add ~3200 callsites, so the additional memory costs are substantial. In trade, drm and drivers would avoid lots of calls to drm_debug_enabled(). This patch should reduce the costs. Using this interface, drm could drop site info for all categories / prefixes controlled by bits in drm.debug, while preserving site info and individual selectivity for any uncategorized prdebugs, and for all other modules. Lastly, because lineno field was not moved into _ddebug_callsite, it can be used to modify a single[*] callsite even if drm has dropped all the callsite data: echo module $mod format ^$prefix line $line +p >control Dropping site info is a one-way, information losing operation, so minor misuse is possible. Worst case is maybe (depending upon previous settings) some loss of logging context/decorations. echo +D > /proc/dynamic_debug/control [*] amdgpu has some macros invoking clusters of pr_debugs; each use of them creates a cluster of pr-debugs with the same line number. Signed-off-by: Jim Cromie --- include/linux/dynamic_debug.h | 1 + lib/dynamic_debug.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.= h index d56c02ed0c45..bc4e778b755c 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -40,6 +40,7 @@ struct _ddebug { #define _DPRINTK_FLAGS_INCL_FUNCNAME (1<<2) #define _DPRINTK_FLAGS_INCL_LINENO (1<<3) #define _DPRINTK_FLAGS_INCL_TID (1<<4) +#define _DPRINTK_FLAGS_DELETE_SITE (1<<7) /* drop site info to save ram = */ =20 #define _DPRINTK_FLAGS_INCL_ANY \ (_DPRINTK_FLAGS_INCL_MODNAME | _DPRINTK_FLAGS_INCL_FUNCNAME |\ diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index a4ddafdbd9a1..76315d20672a 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c @@ -92,6 +92,7 @@ static struct { unsigned flag:8; char opt_char; } opt_a= rray[] =3D { { _DPRINTK_FLAGS_INCL_LINENO, 'l' }, { _DPRINTK_FLAGS_INCL_TID, 't' }, { _DPRINTK_FLAGS_NONE, '_' }, + { _DPRINTK_FLAGS_DELETE_SITE, 'D' }, }; =20 struct flagsbuf { char buf[ARRAY_SIZE(opt_array)+1]; }; @@ -201,6 +202,14 @@ static void ddebug_alter_site(struct _ddebug *dp, } else if (modifiers->flags & _DPRINTK_FLAGS_PRINT) static_branch_enable(&dp->key.dd_key_true); #endif + /* delete site info for this callsite */ + if (modifiers->flags & _DPRINTK_FLAGS_DELETE_SITE) { + if (dp->site) { + vpr_info("dropping site info %s.%s.%d\n", dp->site->filename, + dp->site->function, dp->lineno); + dp->site =3D NULL; + } + } } =20 /* --=20 2.31.1