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.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 68835C4320A for ; Wed, 18 Aug 2021 04:35:50 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id B0BEA60F38 for ; Wed, 18 Aug 2021 04:35:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org B0BEA60F38 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=bytedance.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id 34F918D0001; Wed, 18 Aug 2021 00:35:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2FEAF6B0072; Wed, 18 Aug 2021 00:35:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1ED468D0001; Wed, 18 Aug 2021 00:35:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0060.hostedemail.com [216.40.44.60]) by kanga.kvack.org (Postfix) with ESMTP id 03DC16B006C for ; Wed, 18 Aug 2021 00:35:48 -0400 (EDT) Received: from smtpin18.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 82C78180C90DF for ; Wed, 18 Aug 2021 04:35:48 +0000 (UTC) X-FDA: 78486938376.18.C38436F Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) by imf02.hostedemail.com (Postfix) with ESMTP id EBCF770088E6 for ; Wed, 18 Aug 2021 04:35:47 +0000 (UTC) Received: by mail-pj1-f49.google.com with SMTP id om1-20020a17090b3a8100b0017941c44ce4so8072365pjb.3 for ; Tue, 17 Aug 2021 21:35:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=E0JQ8tEmQQ4pfyMY58xvtQYlkLkIIdxXFUVuLwMvJj0=; b=VhcgTg2l9q3Z8IM1CIom3Kn9rpLwPr1Mr2BTdsrf2thOPB+N7Va3WN3gehco3HUPZW KGrWuQleDrKfslEp2eRlsba+YXNh5WhE/rzVMbQgEcDb4aBeoxeSD5O3JhtEzNxaMMnS rfV7sLaFiG61OGlIvBDUqHZZAVACNQIYh1DcA3o4RafkHvh6pTyQHUsDoC2GT8lRmcp0 2T0dYfnjYpm5H8xzFh0oe3Ho7CiwdYtdT/OJkTf3UOM3LkmfFTZzTPCDTo+Q/5YlEgqp jee9uDfZk1ldQWCzhBF1I1yhLLnc+IEFxmZFoWIFE6q87ja3AYP6zsaYMofS/qX53eP4 b6Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=E0JQ8tEmQQ4pfyMY58xvtQYlkLkIIdxXFUVuLwMvJj0=; b=dNhjSDcfWSgdmpGQfj4rSPvZYllxjc7WSs8oBJtUbIBbzj/BPdoDXtDAN2QjK3yBN6 H3o2xLhdPHvH0uLzMOTjle3WlOYuhVbMDUi1GFQAohDdbxZo5M6F3eOKHLR+SqvKYSrw e3IbawGCAmvujttAlnizks3c1y4puFLRCM7Luha0a+WcMZQedP+BctZEN4tR56kx0bZI mVsHA9WM+NboJ8tdQ5DlU8OcuI5H63kB1sBOXL/0LNhvHH8/rR+HRMO9ClUbiEi6CODe 23iOLmKz44DgSfNcudWC08w6aK9QYP60RZyfF0iAekqopZzECZpRSoz/c80qOe0Gvvs6 //PQ== X-Gm-Message-State: AOAM533PxrRKJd1qVRHnthr9y7iQuTzUo8WUj9FxK44J5Txsu3w1qCq6 XIg0bK9RJILajvwA9mJ/BOpTqbya7n21zXdi7RB2fQ== X-Google-Smtp-Source: ABdhPJwLx2VhS6tdMEWY50Y1AL8GlE7uTpu8J/H8MbFM8lGPTWniNcOQNhEhpL8+sqjzvKb47RO3huZ22gpw2hhb7qY= X-Received: by 2002:a17:90a:eb17:: with SMTP id j23mr7263644pjz.229.1629261346848; Tue, 17 Aug 2021 21:35:46 -0700 (PDT) MIME-Version: 1.0 References: <20210817033032.76089-1-songmuchun@bytedance.com> In-Reply-To: From: Muchun Song Date: Wed, 18 Aug 2021 12:35:08 +0800 Message-ID: Subject: Re: [PATCH] mm: introduce PAGEFLAGS_MASK to replace ((1UL << NR_PAGEFLAGS) - 1) To: Roman Gushchin Cc: Johannes Weiner , Michal Hocko , Andrew Morton , Shakeel Butt , Vladimir Davydov , Matthew Wilcox , LKML , Linux Memory Management List Content-Type: text/plain; charset="UTF-8" Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=bytedance-com.20150623.gappssmtp.com header.s=20150623 header.b=VhcgTg2l; dmarc=pass (policy=none) header.from=bytedance.com; spf=pass (imf02.hostedemail.com: domain of songmuchun@bytedance.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=songmuchun@bytedance.com X-Stat-Signature: nx8zcyoh8d6dxrpji3acdo5w73ycew7p X-Rspamd-Queue-Id: EBCF770088E6 X-Rspamd-Server: rspam05 X-HE-Tag: 1629261347-220421 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 Wed, Aug 18, 2021 at 10:16 AM Roman Gushchin wrote: > > On Tue, Aug 17, 2021 at 11:30:32AM +0800, Muchun Song wrote: > > Instead of hard-coding ((1UL << NR_PAGEFLAGS) - 1) everywhere, introducing > > PAGEFLAGS_MASK to make the code clear to get the page flags. > > > > Signed-off-by: Muchun Song > > --- > > include/linux/page-flags.h | 4 +++- > > include/trace/events/page_ref.h | 4 ++-- > > lib/test_printf.c | 2 +- > > lib/vsprintf.c | 2 +- > > 4 files changed, 7 insertions(+), 5 deletions(-) > > > > diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > > index 54c4af35c628..1f951ac24a5e 100644 > > --- a/include/linux/page-flags.h > > +++ b/include/linux/page-flags.h > > @@ -180,6 +180,8 @@ enum pageflags { > > PG_reported = PG_uptodate, > > }; > > > > +#define PAGEFLAGS_MASK (~((1UL << NR_PAGEFLAGS) - 1)) > > Hm, isn't it better to invert it? Like > #define PAGEFLAGS_MASK ((1UL << NR_PAGEFLAGS) - 1) > > It feels more usual and will simplify the rest of the patch. Actually, I learned from PAGE_MASK. So I thought the macro like xxx_MASK should be the format of 0xff...ff00...00. I don't know if it is an unwritten rule. I can invert PAGEFLAGS_MASK if it's not a rule. Thanks. > > Thanks! > > > + > > #ifndef __GENERATING_BOUNDS_H > > > > static inline unsigned long _compound_head(const struct page *page) > > @@ -975,7 +977,7 @@ static inline void ClearPageSlabPfmemalloc(struct page *page) > > * alloc-free cycle to prevent from reusing the page. > > */ > > #define PAGE_FLAGS_CHECK_AT_PREP \ > > - (((1UL << NR_PAGEFLAGS) - 1) & ~__PG_HWPOISON) > > + (~(PAGEFLAGS_MASK | __PG_HWPOISON)) > > > > #define PAGE_FLAGS_PRIVATE \ > > (1UL << PG_private | 1UL << PG_private_2) > > diff --git a/include/trace/events/page_ref.h b/include/trace/events/page_ref.h > > index 5d2ea93956ce..643b1b4e9f27 100644 > > --- a/include/trace/events/page_ref.h > > +++ b/include/trace/events/page_ref.h > > @@ -38,7 +38,7 @@ DECLARE_EVENT_CLASS(page_ref_mod_template, > > > > TP_printk("pfn=0x%lx flags=%s count=%d mapcount=%d mapping=%p mt=%d val=%d", > > __entry->pfn, > > - show_page_flags(__entry->flags & ((1UL << NR_PAGEFLAGS) - 1)), > > + show_page_flags(__entry->flags & ~PAGEFLAGS_MASK), > > __entry->count, > > __entry->mapcount, __entry->mapping, __entry->mt, > > __entry->val) > > @@ -88,7 +88,7 @@ DECLARE_EVENT_CLASS(page_ref_mod_and_test_template, > > > > TP_printk("pfn=0x%lx flags=%s count=%d mapcount=%d mapping=%p mt=%d val=%d ret=%d", > > __entry->pfn, > > - show_page_flags(__entry->flags & ((1UL << NR_PAGEFLAGS) - 1)), > > + show_page_flags(__entry->flags & ~PAGEFLAGS_MASK), > > __entry->count, > > __entry->mapcount, __entry->mapping, __entry->mt, > > __entry->val, __entry->ret) > > diff --git a/lib/test_printf.c b/lib/test_printf.c > > index 8ac71aee46af..eadcc6458b10 100644 > > --- a/lib/test_printf.c > > +++ b/lib/test_printf.c > > @@ -614,7 +614,7 @@ page_flags_test(int section, int node, int zone, int last_cpupid, > > bool append = false; > > int i; > > > > - flags &= BIT(NR_PAGEFLAGS) - 1; > > + flags &= ~PAGEFLAGS_MASK; > > if (flags) { > > page_flags |= flags; > > snprintf(cmp_buf + size, BUF_SIZE - size, "%s", name); > > diff --git a/lib/vsprintf.c b/lib/vsprintf.c > > index dd006adfe853..ff7c180a2971 100644 > > --- a/lib/vsprintf.c > > +++ b/lib/vsprintf.c > > @@ -2019,7 +2019,7 @@ static const struct page_flags_fields pff[] = { > > static > > char *format_page_flags(char *buf, char *end, unsigned long flags) > > { > > - unsigned long main_flags = flags & (BIT(NR_PAGEFLAGS) - 1); > > + unsigned long main_flags = flags & ~PAGEFLAGS_MASK; > > bool append = false; > > int i; > > > > -- > > 2.11.0 > >