On Thu, Apr 4, 2024 at 1:05 PM David Hildenbrand <david@xxxxxxxxxx> wrote: > > On 04.04.24 18:25, Frank van der Linden wrote: > > cma_init_reserved_mem uses IS_ALIGNED to check if the size > > represented by one bit in the cma allocation bitmask is > > aligned with CMA_MIN_ALIGNMENT_BYTES (pageblock size). > > I recall the important part is that our area always covers full > pageblocks (CMA_MIN_ALIGNMENT_BYTES), because we cannot have "partial > CMA" pageblocks. > > Internally, allocating from multiple pageblock should just work. > > It's late in Germany, hopefully I am not missing something > > Acked-by: David Hildenbrand <david@xxxxxxxxxx> > > > > > However, this is too strict, as this will fail if > > order_per_bit > pageblock_order, which is a valid configuration. > > > > We could check IS_ALIGNED both ways, but since both numbers are > > powers of two, no check is needed at all. > > > > Signed-off-by: Frank van der Linden <fvdl@xxxxxxxxxx> > > Cc: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > > Cc: David Hildenbrand <david@xxxxxxxxxx> > > Fixes: de9e14eebf33 ("drivers: dma-contiguous: add initialization from device tree") > > Is there are real setup/BUG we are fixing? Why did we not stumble over > that earlier? > > If so, please describe that in the patch description. Nobody stumbled over it because the only user of CMA that should have passed in an order_per_bit large enough to trigger this was hugetlb_cma. However, because of a bug, it didn't :) When I fixed that, I noticed that this check fired. - Frank