mbox series

[0/3] mm/gup: fixups for hugetlb gup rework series

Message ID 20240403013249.1418299-1-peterx@redhat.com (mailing list archive)
Headers show
Series mm/gup: fixups for hugetlb gup rework series | expand

Message

Peter Xu April 3, 2024, 1:32 a.m. UTC
From: Peter Xu <peterx@redhat.com>

Hi,

This is a small patchset that will fix two known issues that got reported
today on the previous hugetlb unification series on slow gup [1].

The first issue was reported by Ryan Roberts [2] on a test failure over
gup_longterm.  Patch 1-2 should fix it.  Tested with 32MB hugepages on
arm64 VM.

The second issue was reported by Nathan Chancellor [3] on a build issue
over loongson's defconfig (loongson3_defconfig).  It can be easily
reproduced with my own build setup [4], while patch 3 fixes it, and should
hopefully fix similar archs where pud_pfn() is not defined even if
pud_leaf() can return true.

For the 2nd issue, it's debatable whether it's an arch issue, because
logically speaking pud_pfn() and pud_leaf() should either be both defined
or both not.  But since the current fix will be the simplest and still safe
(I at least checked loongarch doesn't support either pud dax or pud
hugetlb), I think we can consider having this to unbreak the build first,
assuming this could also happen to other archs.

One note is that the last 2 patches should be squashed into corresponding
patch, while the 1st patch should be kept standalone.

Thanks,

[1] https://lore.kernel.org/r/20240327152332.950956-1-peterx@redhat.com
[2] https://lore.kernel.org/r/adfdd89b-ee56-4758-836e-c66a0be7de25@arm.com
[3] https://lore.kernel.org/r/ZgyKLLVZ4vN56uZE@x1n
[4] https://gitlab.com/peterx/lkb-harness/-/blob/main/config.json?ref_type=heads#L32

Peter Xu (3):
  mm: Allow anon exclusive check over hugetlb tail pages
  fixup! mm/gup: handle huge pmd for follow_pmd_mask()
  fixup! mm/arch: provide pud_pfn() fallback

 include/linux/page-flags.h |  8 +++++++-
 include/linux/pgtable.h    |  6 +++++-
 mm/gup.c                   |  3 ---
 mm/internal.h              | 10 ----------
 4 files changed, 12 insertions(+), 15 deletions(-)

Comments

Ryan Roberts April 3, 2024, 11:06 a.m. UTC | #1
On 03/04/2024 02:32, peterx@redhat.com wrote:
> From: Peter Xu <peterx@redhat.com>
> 
> Hi,
> 
> This is a small patchset that will fix two known issues that got reported
> today on the previous hugetlb unification series on slow gup [1].
> 
> The first issue was reported by Ryan Roberts [2] on a test failure over
> gup_longterm.  Patch 1-2 should fix it.  Tested with 32MB hugepages on
> arm64 VM.
> 
> The second issue was reported by Nathan Chancellor [3] on a build issue
> over loongson's defconfig (loongson3_defconfig).  It can be easily
> reproduced with my own build setup [4], while patch 3 fixes it, and should
> hopefully fix similar archs where pud_pfn() is not defined even if
> pud_leaf() can return true.
> 
> For the 2nd issue, it's debatable whether it's an arch issue, because
> logically speaking pud_pfn() and pud_leaf() should either be both defined
> or both not.  But since the current fix will be the simplest and still safe
> (I at least checked loongarch doesn't support either pud dax or pud
> hugetlb), I think we can consider having this to unbreak the build first,
> assuming this could also happen to other archs.
> 
> One note is that the last 2 patches should be squashed into corresponding
> patch, while the 1st patch should be kept standalone.
> 
> Thanks,
> 
> [1] https://lore.kernel.org/r/20240327152332.950956-1-peterx@redhat.com
> [2] https://lore.kernel.org/r/adfdd89b-ee56-4758-836e-c66a0be7de25@arm.com
> [3] https://lore.kernel.org/r/ZgyKLLVZ4vN56uZE@x1n
> [4] https://gitlab.com/peterx/lkb-harness/-/blob/main/config.json?ref_type=heads#L32
> 
> Peter Xu (3):
>   mm: Allow anon exclusive check over hugetlb tail pages
>   fixup! mm/gup: handle huge pmd for follow_pmd_mask()
>   fixup! mm/arch: provide pud_pfn() fallback
> 
>  include/linux/page-flags.h |  8 +++++++-
>  include/linux/pgtable.h    |  6 +++++-
>  mm/gup.c                   |  3 ---
>  mm/internal.h              | 10 ----------
>  4 files changed, 12 insertions(+), 15 deletions(-)
> 

With these applied, gup_longterm is now passing for me on arm64. So for the series:

Tested-by: Ryan Roberts <ryan.roberts@arm.com>