From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
To: Petr Mladek <pmladek@suse.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
Christoph Lameter <cl@linux.com>,
Pekka Enberg <penberg@kernel.org>,
David Rientjes <rientjes@google.com>,
Vlastimil Babka <vbabka@suse.cz>,
Naoya Horiguchi <naoya.horiguchi@nec.com>,
Miaohe Lin <linmiaohe@huawei.com>,
Matthew Wilcox <willy@infradead.org>,
Minchan Kim <minchan@kernel.org>,
Mel Gorman <mgorman@techsingularity.net>,
Andrea Arcangeli <aarcange@redhat.com>,
Dan Williams <dan.j.williams@intel.com>,
Hugh Dickins <hughd@google.com>,
Muchun Song <songmuchun@bytedance.com>,
David Hildenbrand <david@redhat.com>,
Steven Rostedt <rostedt@goodmis.org>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
Jonathan Corbet <corbet@lwn.net>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC v2 3/3] mm, printk: introduce new format %pGt for page_type
Date: Wed, 9 Nov 2022 15:04:23 +0900 [thread overview]
Message-ID: <Y2tC5yXqCo++q71w@hyeyoo> (raw)
In-Reply-To: <Y2kUMsHNyTCN8EaN@alley>
On Mon, Nov 07, 2022 at 03:20:34PM +0100, Petr Mladek wrote:
> On Mon 2022-11-07 13:18:52, Andy Shevchenko wrote:
> > On Sun, Nov 06, 2022 at 11:03:55PM +0900, Hyeonggon Yoo wrote:
> > > dump_page() uses %pGp format to print 'flags' field of struct page.
> > > As some page flags (e.g. PG_buddy, see page-flags.h for more details)
> > > are set in page_type field, introduce %pGt format which provides
> > > human readable output of page_type. And use it in dump_page().
> > >
> > > Note that the sense of bits are different in page_type. if page_type is
> > > 0xffffffff, no flags are set. if PG_slab (0x00100000) flag is set,
> > > page_type is 0xffefffff. Clearing a bit means we set the bit. Bits in
> > > page_type are inverted when printing type names.
> > >
> > > Below is examples of dump_page(). One is just after alloc_pages() and
> > > the other is after __SetPageSlab().
> > >
> > > [ 1.814728] page:ffffea000415e200 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x105788
> > > [ 1.815961] flags: 0x17ffffc0000000(node=0|zone=2|lastcpupid=0x1fffff)
> >
> > > [ 1.816443] page_type: 0xffffffff()
> >
Thank you both for looking at this! :-)
> > Why do we have empty parentheses? I would expect either something there, or no
> > parentheses at all.
>
> This looks fine. format_page_flags() does the same for %pGp.
>
> > ...
> >
> > > + %pGt 0xffefffff(slab)
> >
> > No space before ( ?
>
> Also looks fine. %pGp does the same.
>
> > ...
> >
> > > +static
> > > +char *format_page_type(char *buf, char *end, unsigned int page_type)
> > > +{
> > > + if (!(page_type & PAGE_TYPE_BASE))
> > > + return string(buf, end, "no type for user-mapped page", default_str_spec);
> >
> > It's too long, can we make it shorten?
>
> I wonder if it would help to write the value. Something like:
>
> page_type: 0x0ace5768(no type)
>
> That said. I am not familiar with the page types and am not sure
> about the semantic of this value. MM people should decide what they
> want to see in this case.
Hmm, then for consistency let's try:
- 0xffefffff(slab)
- 0xffffffff()
- 0x0ace5768()
this way.
> > ...
> >
> > > pr_warn("%sflags: %pGp%s\n", type, &head->flags,
> > > page_cma ? " CMA" : "");
> > > + pr_warn("page_type: %pGt\n", &head->page_type);
> > > +
> > > print_hex_dump(KERN_WARNING, "raw: ", DUMP_PREFIX_NONE, 32,
> > > sizeof(unsigned long), page,
> > > sizeof(struct page), false);
> > > diff --git a/mm/internal.h b/mm/internal.h
> > > index cb4c663a714e..956eaa9f12c0 100644
> > > --- a/mm/internal.h
> > > +++ b/mm/internal.h
> > > @@ -773,6 +773,7 @@ static inline void flush_tlb_batched_pending(struct mm_struct *mm)
> > > #endif /* CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH */
> > >
> > > extern const struct trace_print_flags pageflag_names[];
> > > +extern const struct trace_print_flags pagetype_names[];
> > > extern const struct trace_print_flags vmaflag_names[];
> > > extern const struct trace_print_flags gfpflag_names[];
> >
> > I would split this to a separate change, but it's up to PRINTK maintainers.
>
> I guess that you are talking about the line:
>
> + pr_warn("page_type: %pGt\n", &head->page_type);
>
>
> Yes, it would be better to have implementation of %pGt modifier
> in one patch and add the user in another one.
Sounds reasonable.
Will split its caller into another patch next to this one.
--
Thanks,
Hyeonggon
prev parent reply other threads:[~2022-11-09 6:04 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-06 14:03 [RFC v2 0/3] move PG_slab to page_type Hyeonggon Yoo
2022-11-06 14:03 ` [RFC v2 1/3] mm: move PG_slab flag " Hyeonggon Yoo
2022-11-06 16:36 ` kernel test robot
2022-11-08 5:39 ` HORIGUCHI NAOYA(堀口 直也)
2022-11-09 5:45 ` Hyeonggon Yoo
2022-11-06 14:03 ` [RFC v2 2/3] mm: introduce show_page_types() to provide human-readable page_type Hyeonggon Yoo
2022-11-06 18:23 ` Steven Rostedt
2022-11-09 6:19 ` Hyeonggon Yoo
2022-11-06 14:03 ` [RFC v2 3/3] mm, printk: introduce new format %pGt for page_type Hyeonggon Yoo
2022-11-06 18:04 ` Joe Perches
2022-11-09 6:14 ` Hyeonggon Yoo
2022-11-09 8:13 ` Petr Mladek
2022-11-07 11:18 ` Andy Shevchenko
2022-11-07 14:20 ` Petr Mladek
2022-11-07 14:41 ` Andy Shevchenko
2022-11-09 6:04 ` Hyeonggon Yoo [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y2tC5yXqCo++q71w@hyeyoo \
--to=42.hyeyoo@gmail.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=cl@linux.com \
--cc=corbet@lwn.net \
--cc=dan.j.williams@intel.com \
--cc=david@redhat.com \
--cc=hughd@google.com \
--cc=linmiaohe@huawei.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux@rasmusvillemoes.dk \
--cc=mgorman@techsingularity.net \
--cc=minchan@kernel.org \
--cc=naoya.horiguchi@nec.com \
--cc=penberg@kernel.org \
--cc=pmladek@suse.com \
--cc=rientjes@google.com \
--cc=rostedt@goodmis.org \
--cc=senozhatsky@chromium.org \
--cc=songmuchun@bytedance.com \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.