Re: [PATCH v9 0/3] fix hugetlb MADV_DONTNEED vma_lock handling

Nadav Amit
2022-11-12T19:37:17Z

On Nov 11, 2022, at 3:26 PM, Mike Kravetz <mike.kravetz@oracle.com> wrote:

> This series addresses the issue first reported in [1], and fully
> described in patch 3. While exploring solutions to this issue,
> related problems with mmu notification calls were discovered. The
> first two patches address those issues.
>
> Previous discussions suggested further cleanup by removing the
> routine zap_page_range. This is possible because zap_page_range_single
> is now exported, and all callers of zap_page_range pass ranges entirely
> within a single vma. This work will be done in a later patch so as not
> to distract from this bug fix.
>
> [1] https://lore.kernel.org/lkml/CAO4mrfdLMXsao9RF4fUE8-Wfde8xmjsKrTNMNC9wjUb6JudD0g@mail.gmail.com/
>
> Mike Kravetz (3):
> madvise: use zap_page_range_single for madvise dontneed
> hugetlb: remove duplicate mmu notifications
> hugetlb: don't delete vma_lock in hugetlb MADV_DONTNEED processing
>
> include/linux/mm.h | 29 +++++++++++++++++++++--------
> mm/hugetlb.c | 45 +++++++++++++++++++++++++--------------------
> mm/madvise.c | 6 +++---
> mm/memory.c | 25 ++++++++++++-------------
> 4 files changed, 61 insertions(+), 44 deletions(-)

With my limited knowledge of hugetlbfs, it all looks good.

Having said that - 2 random thoughts:

1. It is more intuitive to me to have
mmu_notifier_invalidate_range_{start|end}() next to tlb_{start|end}_vma().
I think that one day these two should have been combined into a
single function, which could have also executed
adjust_range_if_pmd_sharing_possible() as needed.

2. If you still have a concern of exposing zap_details as you had in the
past (not that I care), consider putting zap_details and
zap_page_range_single() in mm/internal.h.

Thanks,
Nadav