On 18.04.24 12:57, Lance Yang wrote:
This commit adds the any_dirty pointer as an optional parameter to folio_pte_batch() function. By using both the any_young and any_dirty pointers, madvise_free can make smarter decisions about whether to clear the PTEs when marking large folios as lazyfree. Suggested-by: David Hildenbrand <david@xxxxxxxxxx> Signed-off-by: Lance Yang <ioworker0@xxxxxxxxx> --- mm/internal.h | 12 ++++++++++-- mm/madvise.c | 19 ++++++++++++++----- mm/memory.c | 4 ++-- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index c6483f73ec13..daa59cef85d7 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -134,6 +134,8 @@ static inline pte_t __pte_batch_clear_ignored(pte_t pte, fpb_t flags) * first one is writable. * @any_young: Optional pointer to indicate whether any entry except the * first one is young. + * @any_dirty: Optional pointer to indicate whether any entry except the + * first one is dirty. *
I was also wondering if we should make that function return a pte+nr_pages, instead of only nr_pages, and then simply have the function, based on new flags, merge data into the original PTE.
But let's do that separately. Acked-by: David Hildenbrand <david@xxxxxxxxxx> -- Cheers, David / dhildenb