Re: [PATCH] mm/cma: convert cma_alloc() to return folio

From: Matthew Wilcox
Date: Tue Feb 27 2024 - 16:00:14 EST


On Tue, Feb 27, 2024 at 11:26:02AM -0800, Jianfeng Wang wrote:
>
>
> On 2/27/24 11:00 AM, Matthew Wilcox wrote:
> > On Tue, Feb 27, 2024 at 10:13:38AM -0800, Jianfeng Wang wrote:
> >> Change cma_alloc() to return struct folio. This further increases the
> >> usage of folios in mm/hugetlb.
> >
> > I love the idea, but I don't think this works. The memory returned
> > from cma_alloc() isn't set up to be a folio, is it? That is, it
> > doesn't have compound_head initialised so that page_folio() on
> > consecutive pages will return the same pointer.
>
> Thanks for review.
> cma_alloc() returns an array of order-0 pages. So, this commit makes
> cma_alloc() return an array of folios (each an order-0 page) rather
> than a compound page. Functions that use cma_alloc() do not expect
> a compound page as well.

No, this is not the way.