On Wed, 2014-11-19 at 16:29 +1100, Michael Ellerman wrote: > On Tue, 2014-11-18 at 10:26 +0000, David Laight wrote: > > From: Michael Ellerman > > > Although we are now selecting NO_BOOTMEM, we still have some traces of > > > bootmem lying around. That is because even with NO_BOOTMEM there is > > > still a shim that converts bootmem calls into memblock calls, but > > > ultimately we want to remove all traces of bootmem. > > > > > > Most of the patch is conversions from alloc_bootmem() to > > > memblock_alloc(). In general a call such as: > > > > > > p = (struct foo *)alloc_bootmem(x); > > > > > > Becomes: > > > > > > p = __va(memblock_alloc(x, 0)); > > > > > > We need __va() because memblock returns a physical address. We don't > > > need the cast because __va() returns a void *. The alignment value of > > > zero tells memblock to use the default alignment, which is > > > SMP_CACHE_BYTES, the same value alloc_bootmem() uses. > > > > It doesn't seem right to me to replicate __va(memblock_alloc(x, 0)) > > that many times. I can imagine that the required code will change > > again at to future time, and then all the same places would need changing.
After more grovelling through header files it turns out there is a wrapper that does what we want - I think. It's memblock_virt_alloc() (name reversed), and it's in bootmem.h, which is why I didn't find it originally. I'll try that instead. cheers _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev