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.