From patchwork Thu Jan 28 02:19:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yafang Shao X-Patchwork-Id: 12051641 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.5 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 36551C433E0 for ; Thu, 28 Jan 2021 02:20:32 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id C4BB064DCD for ; Thu, 28 Jan 2021 02:20:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C4BB064DCD 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 4E3726B0070; Wed, 27 Jan 2021 21:20:31 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 494366B0071; Wed, 27 Jan 2021 21:20:31 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 383BD6B0072; Wed, 27 Jan 2021 21:20:31 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0139.hostedemail.com [216.40.44.139]) by kanga.kvack.org (Postfix) with ESMTP id 222966B0070 for ; Wed, 27 Jan 2021 21:20:31 -0500 (EST) Received: from smtpin25.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id E32068249980 for ; Thu, 28 Jan 2021 02:20:30 +0000 (UTC) X-FDA: 77753579820.25.sand77_440dc5b2759c Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin25.hostedemail.com (Postfix) with ESMTP id BF2881804E3A1 for ; Thu, 28 Jan 2021 02:20:30 +0000 (UTC) X-HE-Tag: sand77_440dc5b2759c X-Filterd-Recvd-Size: 5688 Received: from mail-ot1-f52.google.com (mail-ot1-f52.google.com [209.85.210.52]) by imf09.hostedemail.com (Postfix) with ESMTP for ; Thu, 28 Jan 2021 02:20:30 +0000 (UTC) Received: by mail-ot1-f52.google.com with SMTP id 36so3810790otp.2 for ; Wed, 27 Jan 2021 18:20:30 -0800 (PST) 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=WaWfUsxlwLjtJJJs7BCjaV3recgbn4DsBXlNrfMz+oo=; b=saVXRoDxBhtwjjEtBk2HabAxNFKMEVhPljlcyyH0GwrH+q8TICzDWdY3SaYxc38oH9 Pv1Fw9vG0xUXjxezCkklUNGxZ7Gm5ExDHgbB+GHD3MQZaLwt/XZbx8IJjOdl8T8NrArm nDB6kSOaONxbI3tAboDMfz7RGL+tk46gIncXAJDcGiuoWsn7qC3G+yqIrj5TO2qYq1EE yf2gMyivcRViM57zTQ04U6OsGxhoXsdIp/yNn+6Qwfis5YZErsV5IQ1vhKxSuh3Ztr3p 4Ph6WA4XvPV4fCWUP0WxFkZ0w9lPyPs1Lvs2S8UqsFflgTWvUOFunDseoEdKCuwF1dy7 Jmag== 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=WaWfUsxlwLjtJJJs7BCjaV3recgbn4DsBXlNrfMz+oo=; b=psDmdqE7K0QRNJEzlzyyfYDLZs4IA8s9cwfezM3UObdSVDxF5kcfM7+tPGYg82nwhj KTSyNYbiyLY4DW6eKcsdvklHLbp9dWw98DJEUdYrXWUuh6gS9zFiNQt3v4D6l72Z/u2I SCuDo4j39jMAi3IfvT8wL0VBiT2/LBwXKggYISwQEJolG/sUyf3th4zsBNX4viLtMm73 prQHnCvcIs5pjH+ud8eoqNkRvRfZE8QSAyEJ0bUjmYFk3nViofBwG+uIb1RAhr/LFKum 28gmeAWRX7Z5NQwzv4LQq+KHAjpQyFpkyo8SBklNLqd6L0tSEYNbJjBDajdMcYb8XFTE vlAw== X-Gm-Message-State: AOAM530cVe3Dq37uyOXx/xSW/hfIsjWK1TtSHv3mibOe6ScKe479GdA4 1WHWt4HzJcemwnvQUTRJCw8= X-Google-Smtp-Source: ABdhPJz8AWLveugxt8Vw+jfjDoAFWZOcLN/f5niUp0wrxR0UbOYISJvgKpGp5cnvecembCJTwQdczA== X-Received: by 2002:a05:6830:2f3:: with SMTP id r19mr9873087ote.299.1611800429873; Wed, 27 Jan 2021 18:20:29 -0800 (PST) Received: from localhost.localdomain ([50.236.19.102]) by smtp.gmail.com with ESMTPSA id m10sm731246otp.19.2021.01.27.18.20.24 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 27 Jan 2021 18:20:29 -0800 (PST) From: Yafang Shao To: david@redhat.com, vbabka@suse.cz, cl@linux.com, penberg@kernel.org, rientjes@google.com, iamjoonsoo.kim@lge.com, akpm@linux-foundation.org, pmladek@suse.com, rostedt@goodmis.org, sergey.senozhatsky@gmail.com, andriy.shevchenko@linux.intel.com, linux@rasmusvillemoes.dk Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Yafang Shao Subject: [PATCH 3/3] printk: dump full information of page flags in pGp Date: Thu, 28 Jan 2021 10:19:47 +0800 Message-Id: <20210128021947.22877-4-laoar.shao@gmail.com> X-Mailer: git-send-email 2.24.3 (Apple Git-128) In-Reply-To: <20210128021947.22877-1-laoar.shao@gmail.com> References: <20210128021947.22877-1-laoar.shao@gmail.com> MIME-Version: 1.0 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: Currently the pGp only shows the names of page flags, rather than the full information including section, node, zone, last cpupid and kasan tag. While it is not easy to parse these information manually because there're so many flavors. Let's interpret them in pGp as well. - Before the patch, [ 6312.639698] ERR: Slab 0x000000006d1133b9 objects=33 used=3 fp=0x000000006d0779d1 flags=0x17ffffc0010200(slab|head) - After the patch, [ 6315.235783] ERR: Slab 0x000000006d1133b9 objects=33 used=3 fp=0x000000006d0779d1 flags=0x17ffffc0010200(Node 0x0,Zone 0x2,Lastcpupid 0x1fffff,slab|head) Cc: David Hildenbrand Signed-off-by: Yafang Shao --- lib/vsprintf.c | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 3b53c73580c5..bd809f4f1b82 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -1916,6 +1916,46 @@ char *format_flags(char *buf, char *end, unsigned long flags, return buf; } +struct page_flags_layout { + int width; + int shift; + int mask; + char *name; +}; + +struct page_flags_layout pfl[] = { + {SECTIONS_WIDTH, SECTIONS_PGSHIFT, SECTIONS_MASK, "Section "}, + {NODES_WIDTH, NODES_PGSHIFT, NODES_MASK, "Node "}, + {ZONES_WIDTH, ZONES_PGSHIFT, ZONES_MASK, "Zone "}, + {LAST_CPUPID_WIDTH, LAST_CPUPID_PGSHIFT, LAST_CPUPID_MASK, "Lastcpupid "}, + {KASAN_TAG_WIDTH, KASAN_TAG_PGSHIFT, KASAN_TAG_MASK, "Kasantag "}, +}; + +static +char *format_layout(char *buf, char *end, unsigned long flags) +{ + int i; + + for (i = 0; i < sizeof(pfl) / sizeof(struct page_flags_layout) && buf < end; i++) { + if (pfl[i].width == 0) + continue; + + buf = string(buf, end, pfl[i].name, default_str_spec); + + if (buf >= end) + break; + buf = number(buf, end, (flags >> pfl[i].shift) & pfl[i].mask, + default_flag_spec); + + if (buf >= end) + break; + *buf = ','; + buf++; + } + + return buf; +} + static noinline_for_stack char *flags_string(char *buf, char *end, void *flags_ptr, struct printf_spec spec, const char *fmt) @@ -1929,7 +1969,7 @@ char *flags_string(char *buf, char *end, void *flags_ptr, switch (fmt[1]) { case 'p': flags = *(unsigned long *)flags_ptr; - /* Remove zone id */ + buf = format_layout(buf, end, flags & ~((1UL << NR_PAGEFLAGS) - 1)); flags &= (1UL << NR_PAGEFLAGS) - 1; names = pageflag_names; break;