linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mike Kravetz <mike.kravetz@oracle.com>
To: Muchun Song <songmuchun@bytedance.com>,
	akpm@linux-foundation.org, osalvador@suse.de, mhocko@suse.com,
	song.bao.hua@hisilicon.com, david@redhat.com,
	chenhuang5@huawei.com, bodeddub@amazon.com, corbet@lwn.net
Cc: duanxiongchun@bytedance.com, fam.zheng@bytedance.com,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, zhengqi.arch@bytedance.com
Subject: Re: [PATCH 2/5] mm: introduce save_page_flags to cooperate with show_page_flags
Date: Mon, 26 Jul 2021 16:18:02 -0700	[thread overview]
Message-ID: <fea1d845-209a-e2d5-6fcc-dbf17c949861@oracle.com> (raw)
In-Reply-To: <20210714091800.42645-3-songmuchun@bytedance.com>

On 7/14/21 2:17 AM, Muchun Song wrote:
> Introduce save_page_flags to return the page flags which can cooperate
> with show_page_flags. If we want to hihe some page flags from users, it
> will be useful to alter save_page_flags directly. This is a preparation
> for the next patch to hide some page flags from users.
> 
> Signed-off-by: Muchun Song <songmuchun@bytedance.com>
> ---
>  include/trace/events/mmflags.h  | 3 +++
>  include/trace/events/page_ref.h | 8 ++++----
>  2 files changed, 7 insertions(+), 4 deletions(-)
> 
> diff --git a/include/trace/events/mmflags.h b/include/trace/events/mmflags.h
> index 390270e00a1d..69cb84b1257e 100644
> --- a/include/trace/events/mmflags.h
> +++ b/include/trace/events/mmflags.h
> @@ -121,6 +121,9 @@ IF_HAVE_PG_IDLE(PG_idle,		"idle"		)		\
>  IF_HAVE_PG_ARCH_2(PG_arch_2,		"arch_2"	)		\
>  IF_HAVE_PG_SKIP_KASAN_POISON(PG_skip_kasan_poison, "skip_kasan_poison")
>  
> +#define save_page_flags(page)						\
> +	(((page)->flags & ~PAGEFLAGS_MASK))
> +

Looking ahead to the next patch, this is changed to hide the PG_head
flag for 'fake' head pages.

IIRC, all vmemmap pages except the first will be mapped read only.  So,
all vmemmap pages with 'fake' head pages will be read only.

It seems that all the modified trace events below are associated with
updates to page structs.  Therefore, it seems these events will never
experience a 'fake' head page.  Am I missing something?

-- 
Mike Kravetz


>  #define show_page_flags(flags)						\
>  	(flags) ? __print_flags(flags, "|",				\
>  	__def_pageflag_names						\
> diff --git a/include/trace/events/page_ref.h b/include/trace/events/page_ref.h
> index 643b1b4e9f27..53d303048d27 100644
> --- a/include/trace/events/page_ref.h
> +++ b/include/trace/events/page_ref.h
> @@ -28,7 +28,7 @@ DECLARE_EVENT_CLASS(page_ref_mod_template,
>  
>  	TP_fast_assign(
>  		__entry->pfn = page_to_pfn(page);
> -		__entry->flags = page->flags;
> +		__entry->flags = save_page_flags(page);
>  		__entry->count = page_ref_count(page);
>  		__entry->mapcount = page_mapcount(page);
>  		__entry->mapping = page->mapping;
> @@ -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 & ~PAGEFLAGS_MASK),
> +		show_page_flags(__entry->flags),
>  		__entry->count,
>  		__entry->mapcount, __entry->mapping, __entry->mt,
>  		__entry->val)
> @@ -77,7 +77,7 @@ DECLARE_EVENT_CLASS(page_ref_mod_and_test_template,
>  
>  	TP_fast_assign(
>  		__entry->pfn = page_to_pfn(page);
> -		__entry->flags = page->flags;
> +		__entry->flags = save_page_flags(page);
>  		__entry->count = page_ref_count(page);
>  		__entry->mapcount = page_mapcount(page);
>  		__entry->mapping = page->mapping;
> @@ -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 & ~PAGEFLAGS_MASK),
> +		show_page_flags(__entry->flags),
>  		__entry->count,
>  		__entry->mapcount, __entry->mapping, __entry->mt,
>  		__entry->val, __entry->ret)
> 

  reply	other threads:[~2021-07-26 23:18 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-14  9:17 [PATCH 0/5] Free the 2nd vmemmap page associated with each HugeTLB page Muchun Song
2021-07-14  9:17 ` [PATCH 1/5] mm: introduce PAGEFLAGS_MASK to replace ((1UL << NR_PAGEFLAGS) - 1) Muchun Song
2021-07-26 21:04   ` Mike Kravetz
2021-07-27  6:27     ` Muchun Song
2021-07-29  6:00       ` Muchun Song
2021-07-14  9:17 ` [PATCH 2/5] mm: introduce save_page_flags to cooperate with show_page_flags Muchun Song
2021-07-26 23:18   ` Mike Kravetz [this message]
2021-07-27  7:06     ` Muchun Song
2021-07-14  9:17 ` [PATCH 3/5] mm: hugetlb: free the 2nd vmemmap page associated with each HugeTLB page Muchun Song
2021-07-26 21:16   ` Matthew Wilcox
2021-07-26 23:56     ` Mike Kravetz
2021-07-27  7:15     ` Muchun Song
2021-07-14  9:17 ` [PATCH 4/5] mm: hugetlb: replace hugetlb_free_vmemmap_enabled with a static_key Muchun Song
2021-07-14  9:18 ` [PATCH 5/5] mm: sparsemem: use page table lock to protect kernel pmd operations Muchun Song

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=fea1d845-209a-e2d5-6fcc-dbf17c949861@oracle.com \
    --to=mike.kravetz@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=bodeddub@amazon.com \
    --cc=chenhuang5@huawei.com \
    --cc=corbet@lwn.net \
    --cc=david@redhat.com \
    --cc=duanxiongchun@bytedance.com \
    --cc=fam.zheng@bytedance.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=osalvador@suse.de \
    --cc=song.bao.hua@hisilicon.com \
    --cc=songmuchun@bytedance.com \
    --cc=zhengqi.arch@bytedance.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).