Subject: Re: [PATCH 2/2] rheap: move rheap.c from arch/powerpc/lib/ to lib/

From: Scott Wood <[email-masked]>
Date: Wed, 8 Jul 2015 22:50:40 -0500

On Wed, 2015-07-08 at 22:18 -0500, Zhao Qiang-B45475 wrote:
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: Thursday, July 09, 2015 2:59 AM
> > To: Zhao Qiang-B45475
> > Cc: [email-masked]; Xie Xiaobo-R63061
> > Subject: Re: [PATCH 2/2] rheap: move rheap.c from arch/powerpc/lib/ to
> > lib/
> >
> > On Wed, 2015-07-08 at 02:25 -0500, Zhao Qiang-B45475 wrote:
> > > So I will add two func for my use, do you think it is ok?
> > > I need to align the address of allocated muram.
> > > And I will set algo = gen_pool_first_fit_align.
> > >
> > > +unsigned long gen_pool_alloc_align(struct gen_pool *pool, size_t size,
> > > +               unsigned long align)
> >
> > Again, please explain why you need this for CPM/QE.  I don't see
> > rh_alloc_align() currently being used by either.
> >
> > Also, please stop top-posting.
>  
>  
> unsigned long rh_alloc(struct _rh_info *info, int size, const char *owner)
> {
>         return rh_alloc_align(info, size, info->alignment, owner);
> }
> EXPORT_SYMBOL_GPL(rh_alloc);

That doesn't involve a different alignment for each allocation.  It uses the 
same alignment for all of them, and the alignment that cpm_common.c provides 
to rh_init() is 1 byte.

...but sigh, cpm_muram_alloc() is changing cpm_muram_info.alignment behind 
the rheap code's back.  Despite the existence of rh_alloc_align().

So yes, add aligned allocation functionality to genalloc, but don't duplicate 
gen_pool_alloc() to do so.  Instead, rename gen_pool_alloc() to 
gen_pool_alloc_align() with an alignment parameter (also modifying the algo 
function to take an alignment arg, which gen_pool_first_fit_order_align() 
would ignore), and provide a gen_pool_alloc() wrapper that specifies 1 as the 
required alignment.  Also be sure to CC lkml on the patchset since you're 
touching core code that doesn't have its own maintainer or list.

-Scott