linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: SeongJae Park <sj@kernel.org>
To: Lance Yang <ioworker0@gmail.com>
Cc: SeongJae Park <sj@kernel.org>,
	akpm@linux-foundation.org, willy@infradead.org,
	maskray@google.com, ziy@nvidia.com, ryan.roberts@arm.com,
	david@redhat.com, 21cnbao@gmail.com, mhocko@suse.com,
	fengwei.yin@intel.com, zokeefe@google.com, shy828301@gmail.com,
	xiehuan09@gmail.com, libang.li@antgroup.com,
	wangkefeng.wang@huawei.com, songmuchun@bytedance.com,
	peterx@redhat.com, minchan@kernel.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 2/3] mm/rmap: integrate PMD-mapped folio splitting into pagewalk loop
Date: Mon, 29 Apr 2024 13:20:40 -0700	[thread overview]
Message-ID: <20240429202040.187453-1-sj@kernel.org> (raw)
In-Reply-To: <20240429132308.38794-3-ioworker0@gmail.com>

Hi Lance,

On Mon, 29 Apr 2024 21:23:07 +0800 Lance Yang <ioworker0@gmail.com> wrote:

> In preparation for supporting try_to_unmap_one() to unmap PMD-mapped
> folios, start the pagewalk first, then call split_huge_pmd_address()
> to split the folio.
> 
> Suggested-by: David Hildenbrand <david@redhat.com>
> Signed-off-by: Lance Yang <ioworker0@gmail.com>
> ---
>  include/linux/huge_mm.h |  2 ++
>  mm/huge_memory.c        | 42 +++++++++++++++++++++--------------------
>  mm/rmap.c               | 26 +++++++++++++++++++------
>  3 files changed, 44 insertions(+), 26 deletions(-)
> 
[...]
> diff --git a/mm/rmap.c b/mm/rmap.c
> index 7e2575d669a9..e42f436c7ff3 100644
> --- a/mm/rmap.c
> +++ b/mm/rmap.c
> @@ -1636,9 +1636,6 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma,
>  	if (flags & TTU_SYNC)
>  		pvmw.flags = PVMW_SYNC;
>  
> -	if (flags & TTU_SPLIT_HUGE_PMD)
> -		split_huge_pmd_address(vma, address, false, folio);
> -
>  	/*
>  	 * For THP, we have to assume the worse case ie pmd for invalidation.
>  	 * For hugetlb, it could be much worse if we need to do pud
> @@ -1650,6 +1647,10 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma,
>  	range.end = vma_address_end(&pvmw);
>  	mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma->vm_mm,
>  				address, range.end);
> +	if (flags & TTU_SPLIT_HUGE_PMD) {
> +		range.start = address & HPAGE_PMD_MASK;
> +		range.end = (address & HPAGE_PMD_MASK) + HPAGE_PMD_SIZE;
> +	}

I found the latest mm-unstable fails one[1] of my build configuration
with below error message.  And 'git bisect' points this patch.

      CC      mm/rmap.o
    In file included from <command-line>:
    .../linux/mm/rmap.c: In function 'try_to_unmap_one':
    .../linux/include/linux/compiler_types.h:460:38: error: call to '__compiletime_assert_455' declared with attribute error: BUILD_BUG failed
      460 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
          |                                      ^
    .../linux/include/linux/compiler_types.h:441:4: note: in definition of macro '__compiletime_assert'
      441 |    prefix ## suffix();    \
          |    ^~~~~~
    .../linux/include/linux/compiler_types.h:460:2: note: in expansion of macro '_compiletime_assert'
      460 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
          |  ^~~~~~~~~~~~~~~~~~~
    .../linux/include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
       39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
          |                                     ^~~~~~~~~~~~~~~~~~
    .../linux/include/linux/build_bug.h:59:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
       59 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
          |                     ^~~~~~~~~~~~~~~~
    .../linux/include/linux/huge_mm.h:97:28: note: in expansion of macro 'BUILD_BUG'
       97 | #define HPAGE_PMD_SHIFT ({ BUILD_BUG(); 0; })
          |                            ^~~~~~~~~
    .../linux/include/linux/huge_mm.h:104:34: note: in expansion of macro 'HPAGE_PMD_SHIFT'
      104 | #define HPAGE_PMD_SIZE ((1UL) << HPAGE_PMD_SHIFT)
          |                                  ^~~~~~~~~~~~~~~
    .../linux/include/linux/huge_mm.h:103:27: note: in expansion of macro 'HPAGE_PMD_SIZE'
      103 | #define HPAGE_PMD_MASK (~(HPAGE_PMD_SIZE - 1))
          |                           ^~~~~~~~~~~~~~
    .../linux/mm/rmap.c:1651:27: note: in expansion of macro 'HPAGE_PMD_MASK'
     1651 |   range.start = address & HPAGE_PMD_MASK;
          |                           ^~~~~~~~~~~~~~

I haven't looked into the code yet, but seems this code need to handle
CONFIG_PGTABLE_HAS_HUGE_LEAVES undefined case?  May I ask your opinion?

[1] https://github.com/awslabs/damon-tests/blob/next/corr/tests/build_arm64.sh


Thanks,
SJ
[...]


  reply	other threads:[~2024-04-29 20:20 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-29 13:23 [PATCH v3 0/3] Reclaim lazyfree THP without splitting Lance Yang
2024-04-29 13:23 ` [PATCH v3 1/3] mm/rmap: remove duplicated exit code in pagewalk loop Lance Yang
2024-04-29 13:23 ` [PATCH v3 2/3] mm/rmap: integrate PMD-mapped folio splitting into " Lance Yang
2024-04-29 20:20   ` SeongJae Park [this message]
2024-04-30  2:03     ` Lance Yang
2024-04-30  2:13       ` Lance Yang
2024-04-29 13:23 ` [PATCH v3 3/3] mm/vmscan: avoid split lazyfree THP during shrink_folio_list() Lance Yang
2024-04-30  8:34   ` Barry Song
2024-04-30  9:07     ` Lance Yang

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=20240429202040.187453-1-sj@kernel.org \
    --to=sj@kernel.org \
    --cc=21cnbao@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=fengwei.yin@intel.com \
    --cc=ioworker0@gmail.com \
    --cc=libang.li@antgroup.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=maskray@google.com \
    --cc=mhocko@suse.com \
    --cc=minchan@kernel.org \
    --cc=peterx@redhat.com \
    --cc=ryan.roberts@arm.com \
    --cc=shy828301@gmail.com \
    --cc=songmuchun@bytedance.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=willy@infradead.org \
    --cc=xiehuan09@gmail.com \
    --cc=ziy@nvidia.com \
    --cc=zokeefe@google.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).