From: "Zi Yan" <ziy@nvidia.com>
To: "ran xiaokai" <ranxiaokai627@163.com>,
<akpm@linux-foundation.org>, <willy@infradead.org>
Cc: <vbabka@suse.cz>, <svetly.todorov@memverge.com>,
<ran.xiaokai@zte.com.cn>, <baohua@kernel.org>,
<ryan.roberts@arm.com>, <peterx@redhat.com>,
<linux-kernel@vger.kernel.org>, <linux-mm@kvack.org>,
<linux-fsdevel@vger.kernel.org>
Subject: Re: [PATCH 2/2] kpageflags: fix wrong KPF_THP on non-pmd-mappable compound pages
Date: Tue, 25 Jun 2024 23:06:25 -0400 [thread overview]
Message-ID: <D29M7U8SPSYJ.39VMTRSKXW140@nvidia.com> (raw)
In-Reply-To: <20240626024924.1155558-3-ranxiaokai627@163.com>
[-- Attachment #1: Type: text/plain, Size: 2010 bytes --]
On Tue Jun 25, 2024 at 10:49 PM EDT, ran xiaokai wrote:
> From: Ran Xiaokai <ran.xiaokai@zte.com.cn>
>
> KPF_COMPOUND_HEAD and KPF_COMPOUND_TAIL are set on "common" compound
> pages, which means of any order, but KPF_THP should only be set
> when the folio is a 2M pmd mappable THP. Since commit 19eaf44954df
> ("mm: thp: support allocation of anonymous multi-size THP"),
> multiple orders of folios can be allocated and mapped to userspace,
> so the folio_test_large() check is not sufficient here,
> replace it with folio_test_pmd_mappable() to fix this.
>
> Also kpageflags is not only for userspace memory but for all valid pfn
> pages,including slab pages or drivers used pages, so the PG_lru and
> is_anon check are unnecessary here.
But THP is userspace memory. slab pages or driver pages cannot be THP.
>
> Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn>
> ---
> fs/proc/page.c | 14 ++++----------
> 1 file changed, 4 insertions(+), 10 deletions(-)
>
> diff --git a/fs/proc/page.c b/fs/proc/page.c
> index 2fb64bdb64eb..3e7b70449c2f 100644
> --- a/fs/proc/page.c
> +++ b/fs/proc/page.c
> @@ -146,19 +146,13 @@ u64 stable_page_flags(const struct page *page)
> u |= kpf_copy_bit(k, KPF_COMPOUND_HEAD, PG_head);
> else
> u |= 1 << KPF_COMPOUND_TAIL;
> +
Unnecessary new line.
> if (folio_test_hugetlb(folio))
> u |= 1 << KPF_HUGE;
> - /*
> - * We need to check PageLRU/PageAnon
> - * to make sure a given page is a thp, not a non-huge compound page.
> - */
> - else if (folio_test_large(folio)) {
> - if ((k & (1 << PG_lru)) || is_anon)
> - u |= 1 << KPF_THP;
> - else if (is_huge_zero_folio(folio)) {
> + else if (folio_test_pmd_mappable(folio)) {
> + u |= 1 << KPF_THP;
lru and anon check should stay.
> + if (is_huge_zero_folio(folio))
> u |= 1 << KPF_ZERO_PAGE;
> - u |= 1 << KPF_THP;
> - }
> } else if (is_zero_pfn(page_to_pfn(page)))
> u |= 1 << KPF_ZERO_PAGE;
>
--
Best Regards,
Yan, Zi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 854 bytes --]
next prev parent reply other threads:[~2024-06-26 3:06 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-26 2:49 [PATCH 0/2] kpageflags: fix wrong KPF_THP on non-pmd-mappable compound pages ran xiaokai
2024-06-26 2:49 ` [PATCH 1/2] mm: Constify folio_order()/folio_test_pmd_mappable() ran xiaokai
2024-06-26 3:09 ` Zi Yan
2024-06-26 4:30 ` ran xiaokai
2024-06-26 11:19 ` Zi Yan
2024-06-26 2:49 ` [PATCH 2/2] kpageflags: fix wrong KPF_THP on non-pmd-mappable compound pages ran xiaokai
2024-06-26 3:06 ` Zi Yan [this message]
2024-06-26 4:32 ` ran xiaokai
2024-06-26 11:07 ` Ryan Roberts
2024-06-26 14:40 ` Zi Yan
2024-06-26 14:42 ` Ryan Roberts
2024-06-27 1:54 ` Lance Yang
2024-06-27 4:10 ` Barry Song
2024-06-27 8:39 ` Ryan Roberts
2024-06-27 9:16 ` Barry Song
2024-06-27 9:27 ` Ryan Roberts
2024-06-27 12:46 ` ran xiaokai
2024-06-26 15:15 ` Matthew Wilcox
2024-06-26 15:18 ` Ryan Roberts
2024-06-27 2:07 ` Lance Yang
2024-06-26 15:55 ` kernel test robot
2024-06-26 16:21 ` kernel test robot
2024-06-27 12:38 ` ran xiaokai
2024-06-27 13:03 ` Zi Yan
2024-06-27 13:16 ` ran xiaokai
2024-06-27 13:54 ` David Hildenbrand
2024-06-28 3:01 ` ran xiaokai
2024-07-03 9:20 ` ran xiaokai
2024-07-03 10:11 ` David Hildenbrand
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=D29M7U8SPSYJ.39VMTRSKXW140@nvidia.com \
--to=ziy@nvidia.com \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=peterx@redhat.com \
--cc=ran.xiaokai@zte.com.cn \
--cc=ranxiaokai627@163.com \
--cc=ryan.roberts@arm.com \
--cc=svetly.todorov@memverge.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.