Re: [RFC 0/2] guarantee natural alignment for kmalloc()

From: David Rientjes
Date: Tue Mar 19 2019 - 20:53:57 EST


On Wed, 20 Mar 2019, Christopher Lameter wrote:

> > The recent thread [1] inspired me to look into guaranteeing alignment for
> > kmalloc() for power-of-two sizes. Turns out it's not difficult and in most
> > configuration nothing really changes as it happens implicitly. More details in
> > the first patch. If we agree we want to do this, I will see where to update
> > documentation and perhaps if there are any workarounds in the tree that can be
> > converted to plain kmalloc() afterwards.
>
> This means that the alignments are no longer uniform for all kmalloc
> caches and we get back to code making all sorts of assumptions about
> kmalloc alignments.
>
> Currently all kmalloc objects are aligned to KMALLOC_MIN_ALIGN. That will
> no longer be the case and alignments will become inconsistent.
>
> I think its valuable that alignment requirements need to be explicitly
> requested.
>
> Lets add an array of power of two aligned kmalloc caches if that is really
> necessary. Add some GFP_XXX flag to kmalloc to make it ^2 aligned maybe?
>

No objection, but I think the GFP flags should remain what they are for:
to Get Free Pages. If we are to add additional flags to specify
characteristics of slab objects, can we add a kmalloc_flags() variant that
will take a new set of flags? SLAB_OBJ_ALIGN_POW2?