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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9CE1BC433F5 for ; Fri, 22 Oct 2021 15:14:47 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 340596108D for ; Fri, 22 Oct 2021 15:14:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 340596108D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id C465E94000A; Fri, 22 Oct 2021 11:14:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BF560900003; Fri, 22 Oct 2021 11:14:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A6F4F94000A; Fri, 22 Oct 2021 11:14:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0055.hostedemail.com [216.40.44.55]) by kanga.kvack.org (Postfix) with ESMTP id 95472900003 for ; Fri, 22 Oct 2021 11:14:46 -0400 (EDT) Received: from smtpin01.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 5E40A30C74 for ; Fri, 22 Oct 2021 15:14:46 +0000 (UTC) X-FDA: 78724420572.01.03AEF7F Received: from mail-io1-f54.google.com (mail-io1-f54.google.com [209.85.166.54]) by imf24.hostedemail.com (Postfix) with ESMTP id BB8C6B00009F for ; Fri, 22 Oct 2021 15:14:42 +0000 (UTC) Received: by mail-io1-f54.google.com with SMTP id i189so5862378ioa.1 for ; Fri, 22 Oct 2021 08:14:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=btujewNKhZLo3Qyq3D6xLZcjHpkqhcoXJrjaiOroI3g=; b=JYZT/fDXTH4Q7PdadyysOCsS1wi3teUUYpjE32fyOZVOIs2pdgzbvnrnbD8VD/ain1 ijWyYkxQWGMOq7El5gHrg85YygFIYN+XwmPJ7QMpk8xTS0PMUsmYLC1GBum6R3FQoHY2 dLyUVN59mD1L78JolINj5gyE0r6uoFn5ibiQa+m0zWllSdFooJnJxM9ujXlMOaGINFgG dyEw9TqGq7vjO3jIDRY0c8lr4X7+VBpCS2kAAUgLYHEsV+3R+3PKlyz1CsMv3RNeT1sO as3StJ4kGZMkuUBxPxoiXVRMe9YZrX83ooU3ZSx+hfI53SKuBICvMVLF0owEfRpLt2we PBGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=btujewNKhZLo3Qyq3D6xLZcjHpkqhcoXJrjaiOroI3g=; b=Pt+pn1vxuHrVjcpoW/zo2RDt5jiQHQkQrHIJyA6PBxQS+ek7qGwatknmaIJwWlEwaZ GbuhJVr8C7fsmLc7JUnDzXXbylmD50CNgy7jQK7do4cBq16EJwdMoDknXdHit68JlkwJ hSL9vtMIbEQKpQlBU5YC1s1A7h4xnJX3p+/RxIZvLsdDltLW5bvo/V2tcs95KwRgQnLr 3RxnHlL6NPIsNb6Z3yP9vzvIPoYo89Z/qMGcR1tXMi8spVX2MUh2tMuhHAV0MDN6K5Ce /OZfnxvSJ25m8bPb4/SOzwGeo3awD1aaggVQpoPh/X7DBytf3G4Ma5ldtmrDGxudwbE+ UKFA== X-Gm-Message-State: AOAM533MNHV658ci/L5V3yipPKrqT3B2rk6ZZS7NlHfqjit2VjdgPcLH 4bBKBodL1qaBKpk0mJ9Y+Q518x24+LCDu1ucN1o= X-Google-Smtp-Source: ABdhPJzr7Oskhvsf2WCZ51+QemFS7MunhjBnMog5YfVe+wIW5TK/qdQUWmmG2YQBzYOnrXbBUZVPbg2jWKQizXGOJq8= X-Received: by 2002:a02:2a48:: with SMTP id w69mr295400jaw.23.1634915685428; Fri, 22 Oct 2021 08:14:45 -0700 (PDT) MIME-Version: 1.0 References: <20211019142621.2810043-1-willy@infradead.org> <20211019142621.2810043-6-willy@infradead.org> In-Reply-To: <20211019142621.2810043-6-willy@infradead.org> From: Yafang Shao Date: Fri, 22 Oct 2021 23:14:09 +0800 Message-ID: Subject: Re: [PATCH v2 5/5] vsprintf: Make %pGp print the hex value To: "Matthew Wilcox (Oracle)" Cc: Sergey Senozhatsky , Petr Mladek , Linux MM , Vlastimil Babka , Rasmus Villemoes Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: 79gjtc7tbwukuf6pbb4asibn57ho3f1d Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="JYZT/fDX"; spf=pass (imf24.hostedemail.com: domain of laoar.shao@gmail.com designates 209.85.166.54 as permitted sender) smtp.mailfrom=laoar.shao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: BB8C6B00009F X-HE-Tag: 1634915682-604499 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: On Tue, Oct 19, 2021 at 10:34 PM Matthew Wilcox (Oracle) wrote: > > All existing users of %pGp want the hex value as well as the decoded > flag names. This looks awkward (passing the same parameter to printf > twice), so move that functionality into the core. If we want, we > can make that optional with flag arguments to %pGp in the future. > > Signed-off-by: Matthew Wilcox (Oracle) LGTM Reviewed-by: Yafang Shao > --- > lib/test_printf.c | 9 +++++++-- > lib/vsprintf.c | 8 ++++++++ > mm/debug.c | 2 +- > mm/memory-failure.c | 8 ++++---- > mm/page_owner.c | 4 ++-- > mm/slub.c | 4 ++-- > 6 files changed, 24 insertions(+), 11 deletions(-) > > diff --git a/lib/test_printf.c b/lib/test_printf.c > index d09993fca463..07309c45f327 100644 > --- a/lib/test_printf.c > +++ b/lib/test_printf.c > @@ -609,10 +609,14 @@ page_flags_test(int section, int node, int zone, int last_cpupid, > char *cmp_buf) > { > unsigned long values[] = {section, node, zone, last_cpupid, kasan_tag}; > - unsigned long size = 0; > + unsigned long size; > bool append = false; > int i; > > + for (i = 0; i < ARRAY_SIZE(values); i++) > + flags |= (values[i] & pft[i].mask) << pft[i].shift; > + > + size = scnprintf(cmp_buf, BUF_SIZE, "%#lx(", flags); > if (flags & PAGEFLAGS_MASK) { > size += scnprintf(cmp_buf + size, BUF_SIZE - size, "%s", name); > append = true; > @@ -625,7 +629,6 @@ page_flags_test(int section, int node, int zone, int last_cpupid, > if (append) > size += scnprintf(cmp_buf + size, BUF_SIZE - size, "|"); > > - flags |= (values[i] & pft[i].mask) << pft[i].shift; > size += scnprintf(cmp_buf + size, BUF_SIZE - size, "%s=", > pft[i].name); > size += scnprintf(cmp_buf + size, BUF_SIZE - size, pft[i].fmt, > @@ -633,6 +636,8 @@ page_flags_test(int section, int node, int zone, int last_cpupid, > append = true; > } > > + snprintf(cmp_buf + size, BUF_SIZE - size, ")"); > + > test(cmp_buf, "%pGp", &flags); > } > > diff --git a/lib/vsprintf.c b/lib/vsprintf.c > index d7ad44f2c8f5..214098248610 100644 > --- a/lib/vsprintf.c > +++ b/lib/vsprintf.c > @@ -2023,6 +2023,11 @@ char *format_page_flags(char *buf, char *end, unsigned long flags) > bool append = false; > int i; > > + buf = number(buf, end, flags, default_flag_spec); > + if (buf < end) > + *buf = '('; > + buf++; > + > /* Page flags from the main area. */ > if (main_flags) { > buf = format_flags(buf, end, main_flags, pageflag_names); > @@ -2051,6 +2056,9 @@ char *format_page_flags(char *buf, char *end, unsigned long flags) > > append = true; > } > + if (buf < end) > + *buf = ')'; > + buf++; > > return buf; > } > diff --git a/mm/debug.c b/mm/debug.c > index fae0f81ad831..714be101dec9 100644 > --- a/mm/debug.c > +++ b/mm/debug.c > @@ -162,7 +162,7 @@ static void __dump_page(struct page *page) > out_mapping: > BUILD_BUG_ON(ARRAY_SIZE(pageflag_names) != __NR_PAGEFLAGS + 1); > > - pr_warn("%sflags: %#lx(%pGp)%s\n", type, head->flags, &head->flags, > + pr_warn("%sflags: %pGp%s\n", type, &head->flags, > page_cma ? " CMA" : ""); > print_hex_dump(KERN_WARNING, "raw: ", DUMP_PREFIX_NONE, 32, > sizeof(unsigned long), page, > diff --git a/mm/memory-failure.c b/mm/memory-failure.c > index 3e6449f2102a..e4e122a2e9b1 100644 > --- a/mm/memory-failure.c > +++ b/mm/memory-failure.c > @@ -2109,14 +2109,14 @@ static int __soft_offline_page(struct page *page) > if (!list_empty(&pagelist)) > putback_movable_pages(&pagelist); > > - pr_info("soft offline: %#lx: %s migration failed %d, type %lx (%pGp)\n", > - pfn, msg_page[huge], ret, page->flags, &page->flags); > + pr_info("soft offline: %#lx: %s migration failed %d, type %pGp\n", > + pfn, msg_page[huge], ret, &page->flags); > if (ret > 0) > ret = -EBUSY; > } > } else { > - pr_info("soft offline: %#lx: %s isolation failed, page count %d, type %lx (%pGp)\n", > - pfn, msg_page[huge], page_count(page), page->flags, &page->flags); > + pr_info("soft offline: %#lx: %s isolation failed, page count %d, type %pGp\n", > + pfn, msg_page[huge], page_count(page), &page->flags); > ret = -EBUSY; > } > return ret; > diff --git a/mm/page_owner.c b/mm/page_owner.c > index 62402d22539b..4afc713ca525 100644 > --- a/mm/page_owner.c > +++ b/mm/page_owner.c > @@ -351,12 +351,12 @@ print_page_owner(char __user *buf, size_t count, unsigned long pfn, > pageblock_mt = get_pageblock_migratetype(page); > page_mt = gfp_migratetype(page_owner->gfp_mask); > ret += snprintf(kbuf + ret, count - ret, > - "PFN %lu type %s Block %lu type %s Flags %#lx(%pGp)\n", > + "PFN %lu type %s Block %lu type %s Flags %pGp\n", > pfn, > migratetype_names[page_mt], > pfn >> pageblock_order, > migratetype_names[pageblock_mt], > - page->flags, &page->flags); > + &page->flags); > > if (ret >= count) > goto err; > diff --git a/mm/slub.c b/mm/slub.c > index 3d2025f7163b..f7ac28646580 100644 > --- a/mm/slub.c > +++ b/mm/slub.c > @@ -763,9 +763,9 @@ void print_tracking(struct kmem_cache *s, void *object) > > static void print_page_info(struct page *page) > { > - pr_err("Slab 0x%p objects=%u used=%u fp=0x%p flags=%#lx(%pGp)\n", > + pr_err("Slab 0x%p objects=%u used=%u fp=0x%p flags=%pGp\n", > page, page->objects, page->inuse, page->freelist, > - page->flags, &page->flags); > + &page->flags); > > } > > -- > 2.32.0 > -- Thanks Yafang