powerpc: Remove more traces of bootmem
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_virt_alloc(). In general a call such as: p = (struct foo *)alloc_bootmem(x); Becomes: p = memblock_virt_alloc(x, 0); We don't need the cast because memblock_virt_alloc() 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. We remove a number of NULL checks on the result of memblock_virt_alloc(). That is because memblock_virt_alloc() will panic if it can't allocate, in exactly the same way as alloc_bootmem(), so the NULL checks are and always have been redundant. The memory returned by memblock_virt_alloc() is already zeroed, so we remove several memsets of the result of memblock_virt_alloc(). Finally we convert a few uses of __alloc_bootmem(x, y, MAX_DMA_ADDRESS) to just plain memblock_virt_alloc(). We don't use memblock_alloc_base() because MAX_DMA_ADDRESS is ~0ul on powerpc, so limiting the allocation to that is pointless, 16XB ought to be enough for anyone. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
此提交包含在:
@@ -421,12 +421,12 @@ void __init mmu_context_init(void)
|
||||
/*
|
||||
* Allocate the maps used by context management
|
||||
*/
|
||||
context_map = alloc_bootmem(CTX_MAP_SIZE);
|
||||
context_mm = alloc_bootmem(sizeof(void *) * (last_context + 1));
|
||||
context_map = memblock_virt_alloc(CTX_MAP_SIZE, 0);
|
||||
context_mm = memblock_virt_alloc(sizeof(void *) * (last_context + 1), 0);
|
||||
#ifndef CONFIG_SMP
|
||||
stale_map[0] = alloc_bootmem(CTX_MAP_SIZE);
|
||||
stale_map[0] = memblock_virt_alloc(CTX_MAP_SIZE, 0);
|
||||
#else
|
||||
stale_map[boot_cpuid] = alloc_bootmem(CTX_MAP_SIZE);
|
||||
stale_map[boot_cpuid] = memblock_virt_alloc(CTX_MAP_SIZE, 0);
|
||||
|
||||
register_cpu_notifier(&mmu_context_cpu_nb);
|
||||
#endif
|
||||
|
新增問題並參考
封鎖使用者