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 80362C433EF for ; Fri, 8 Oct 2021 19:39:14 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 0F47861027 for ; Fri, 8 Oct 2021 19:39:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0F47861027 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 5BC40900002; Fri, 8 Oct 2021 15:39:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 56C146B0072; Fri, 8 Oct 2021 15:39:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4341E900002; Fri, 8 Oct 2021 15:39:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0241.hostedemail.com [216.40.44.241]) by kanga.kvack.org (Postfix) with ESMTP id 2F9F36B0071 for ; Fri, 8 Oct 2021 15:39:13 -0400 (EDT) Received: from smtpin34.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id DC97139481 for ; Fri, 8 Oct 2021 19:39:12 +0000 (UTC) X-FDA: 78674283744.34.9411D8A Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf07.hostedemail.com (Postfix) with ESMTP id 31A1E1001CB3 for ; Fri, 8 Oct 2021 19:39:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:In-Reply-To:References; bh=ZmskVq54gmMQ7tS9/aqgiX/b7fWz/lqN+nT2EiDy57M=; b=NmMGgv9tymdXAJAJ+QsbBBBqyb n4nuU7rFQGrjRpYTzpgPZJieW8WCyLknf3IMa7V4wsPxASiys28VA4UmxzKSA7A4K5oyMrBwqeLYv IQvrgr3Mj20QrpW9hg3Rm+RUg7R3mWhloiGx8i1JAeQ81bYsCb7h0p2du0ZMzMEP5ZX5339ZNjV/t EVUkHbxAoDudUWNDH5JpM7fA+Sh19YcWbkl4b/fZD5WOzpTUmK5QMWFUd+HgPhTiHMSyGkaS/baXW LDxZ5ISdffxus7k4QAVFF4+manLvzBSydywrRkA1iAcLAfkWpQP2U6Ry5ig/M3VA/0P6ZNgOk6Vqj +HXkyGZw==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1mYvhU-003Z1L-Vj; Fri, 08 Oct 2021 19:38:45 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Vlastimil Babka Cc: "Matthew Wilcox (Oracle)" , linux@rasmusvillemoes.dk Subject: [PATCH] vsprintf: Make %pGp print the hex value Date: Fri, 8 Oct 2021 20:38:29 +0100 Message-Id: <20211008193829.849532-1-willy@infradead.org> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Rspamd-Queue-Id: 31A1E1001CB3 X-Stat-Signature: inzwcdf7nheyx6uet71y5k8eocbm6d14 Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=NmMGgv9t; spf=none (imf07.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none X-Rspamd-Server: rspam06 X-HE-Tag: 1633721952-911314 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: 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) --- lib/test_printf.c | 2 ++ 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, 19 insertions(+), 9 deletions(-) diff --git a/lib/test_printf.c b/lib/test_printf.c index 55082432f37e..32d748d1ae02 100644 --- a/lib/test_printf.c +++ b/lib/test_printf.c @@ -614,6 +614,7 @@ page_flags_test(int section, int node, int zone, int = last_cpupid, bool append =3D false; int i; =20 + snprintf(cmp_buf + size, BUF_SIZE - size, "%x(", flags); flags &=3D PAGEFLAGS_MASK; if (flags) { page_flags |=3D flags; @@ -648,6 +649,7 @@ page_flags_test(int section, int node, int zone, int = last_cpupid, size =3D strlen(cmp_buf); append =3D true; } + snprintf(cmp_buf + size, BUF_SIZE - size, ")"); =20 test(cmp_buf, "%pGp", &page_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, unsi= gned long flags) bool append =3D false; int i; =20 + buf =3D number(buf, end, flags, default_flag_spec); + if (buf < end) + *buf =3D '('; + buf++; + /* Page flags from the main area. */ if (main_flags) { buf =3D format_flags(buf, end, main_flags, pageflag_names); @@ -2051,6 +2056,9 @@ char *format_page_flags(char *buf, char *end, unsig= ned long flags) =20 append =3D true; } + if (buf < end) + *buf =3D ')'; + buf++; =20 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) !=3D __NR_PAGEFLAGS + 1); =20 - 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); =20 - 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 =3D -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 =3D -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, un= signed long pfn, pageblock_mt =3D get_pageblock_migratetype(page); page_mt =3D gfp_migratetype(page_owner->gfp_mask); ret +=3D 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); =20 if (ret >=3D 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 *objec= t) =20 static void print_page_info(struct page *page) { - pr_err("Slab 0x%p objects=3D%u used=3D%u fp=3D0x%p flags=3D%#lx(%pGp)\n= ", + pr_err("Slab 0x%p objects=3D%u used=3D%u fp=3D0x%p flags=3D%pGp\n", page, page->objects, page->inuse, page->freelist, - page->flags, &page->flags); + &page->flags); =20 } =20 --=20 2.32.0