Re: [PATCH net-next 03/12] mm: Make the page_frag_cache allocator alignment param a pow-of-2

From: Alexander Duyck
Date: Fri Jun 16 2023 - 12:07:01 EST


On Fri, Jun 16, 2023 at 8:28 AM David Howells <dhowells@xxxxxxxxxx> wrote:
>
> Alexander H Duyck <alexander.duyck@xxxxxxxxx> wrote:
>
> > The requirement should only be cache alignment, not power of 2
> > alignment.
>
> Sure, but, upstream, page_frag_alloc_align() allows the specification of an
> alignment and applies that alignment by:
>
> offset &= align_mask;
>
> which doesn't really make sense unless the alignment boils down to being a
> power of two. Now, it might make sense to kill off the align_mask parameter
> and just go with SMP_CACHE_BYTES (which will be a power of two).
>
> Note, though, that most users seem to use an align_mask of ~0u which feels a
> bit dodgy (it's not an unsigned long), but is probably fine.

Yeah, now that I think about it this should be fine. I must have been
responding to this without enough sleep. When I originally read it I
saw it as limiting it to a power of 2 allocation, not limiting the
alignment mask to a power of 2.