RE: [PATCH 4.4 03/16] devres: Align data[] to ARCH_KMALLOC_MINALIGN

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Geert Uytterhoeven
> Sent: 13 May 2020 14:26
> Hi David,
> 
> On Wed, May 13, 2020 at 2:37 PM David Laight <David.Laight@xxxxxxxxxx> wrote:
> > From: Geert Uytterhoeven
> > > On Wed, May 13, 2020 at 1:05 PM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
> > > > On Wed, May 13, 2020 at 12:10 PM David Laight <David.Laight@xxxxxxxxxx> wrote:
> > > > > From: Geert Uytterhoeven
> > > > > > Sent: 13 May 2020 10:49
> > > > > ...
> > > > > > > I don't want to apply this to older kernels as it could cause extra
> > > > > > > memory usage for no good reason.  I have no idea why a non ARC system
> > > > > > > would want it :(
> > > > > >
> > > > > > I think the reference to ARC is a red herring.
> > > > > > The real issue is that buffers used for DMA may not have the required
> > > > > > alignment, which is not limited to ARC systems.
> > > > > >
> > > > > > Note that I'm also not super happy with the extra memory usage.
> > > > > > But devm_*() conveniences come with their penalties...
> > > > >
> > > > > Interesting thought.
> > > > > Could the devm 'header' be put right at the end of the kmalloc()
> > > > > buffer?
> > > > >
> > > > > Then the driver would be given aligned address.
> > > >
> > > > Yes, if the header is extended to contain the real start address of the
> > > > allocated block.
> > >
> > > But that would break explicit freeing through devm_kfree(), as that is
> > > passed a pointer to the payload, not the header.
> >
> > There is a function that gives the full size of memory that kmalloc()
> > returns.
> > That can be used to find the end and hence the header.
> 
> Do you know the name of the function?

ksize() - used by the skb allocating code.

I don't know how the all the allocators behave.
Some might be adding a header anyway - which might actually have
space it in that devm_alloc could use.

OTOH I've seen kernel memory allocators that (effectively) put
the index of the pool into the page table.
They need no red tape at all.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux