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)