Re: [PATCH v2 10/11] hugetlb: batch TLB flushes when freeing vmemmap

From: Mike Kravetz
Date: Thu Sep 07 2023 - 14:58:14 EST


On 09/07/23 14:55, Muchun Song wrote:
>
>
> On 2023/9/6 05:44, Mike Kravetz wrote:
> > From: Joao Martins <joao.m.martins@xxxxxxxxxx>
> >
> > Now that a list of pages is deduplicated at once, the TLB
> > flush can be batched for all vmemmap pages that got remapped.
> >
> > Add a flags field and pass whether it's a bulk allocation or
> > just a single page to decide to remap.
> >
> > The TLB flush is global as we don't have guarantees from caller
> > that the set of folios is contiguous, or to add complexity in
> > composing a list of kVAs to flush.
> >
> > Modified by Mike Kravetz to perform TLB flush on single folio if an
> > error is encountered.
> >
> > Signed-off-by: Joao Martins <joao.m.martins@xxxxxxxxxx>
> > Signed-off-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx>
> > ---
> > mm/hugetlb_vmemmap.c | 38 ++++++++++++++++++++++++++++++--------
> > 1 file changed, 30 insertions(+), 8 deletions(-)
> >
> > diff --git a/mm/hugetlb_vmemmap.c b/mm/hugetlb_vmemmap.c

> > @@ -638,7 +658,7 @@ void hugetlb_vmemmap_optimize(const struct hstate *h, struct page *head)
> > {
> > LIST_HEAD(vmemmap_pages);
> > - __hugetlb_vmemmap_optimize(h, head, &vmemmap_pages);
> > + __hugetlb_vmemmap_optimize(h, head, &vmemmap_pages, 0UL);
>
> UL suffix could be dropped. Right?

Yes, it can be dropped.

>
> > free_vmemmap_page_list(&vmemmap_pages);
> > }

--
Mike Kravetz