m68k: switch to MEMBLOCK + NO_BOOTMEM
In m68k the physical memory is described by [memory_start, memory_end] for !MMU variant and by m68k_memory array of memory ranges for the MMU version. This information is directly use to register the physical memory with memblock. The reserve_bootmem() calls are replaced with memblock_reserve() and the bootmap bitmap allocation is simply dropped. Since the MMU variant creates early mappings only for the small part of the memory we force bottom-up allocations in memblock. Signed-off-by: Mike Rapoport <rppt@linux.vnet.ibm.com> Acked-by: Greg Ungerer <gerg@linux-m68k.org> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:

کامیت شده توسط
Geert Uytterhoeven

والد
9e09221957
کامیت
1008a11590
@@ -14,6 +14,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/bootmem.h>
|
||||
#include <linux/memblock.h>
|
||||
|
||||
#include <asm/setup.h>
|
||||
#include <asm/page.h>
|
||||
@@ -153,31 +154,31 @@ int cf_tlb_miss(struct pt_regs *regs, int write, int dtlb, int extension_word)
|
||||
|
||||
void __init cf_bootmem_alloc(void)
|
||||
{
|
||||
unsigned long start_pfn;
|
||||
unsigned long memstart;
|
||||
|
||||
/* _rambase and _ramend will be naturally page aligned */
|
||||
m68k_memory[0].addr = _rambase;
|
||||
m68k_memory[0].size = _ramend - _rambase;
|
||||
|
||||
memblock_add(m68k_memory[0].addr, m68k_memory[0].size);
|
||||
|
||||
/* compute total pages in system */
|
||||
num_pages = PFN_DOWN(_ramend - _rambase);
|
||||
|
||||
/* page numbers */
|
||||
memstart = PAGE_ALIGN(_ramstart);
|
||||
min_low_pfn = PFN_DOWN(_rambase);
|
||||
start_pfn = PFN_DOWN(memstart);
|
||||
max_pfn = max_low_pfn = PFN_DOWN(_ramend);
|
||||
high_memory = (void *)_ramend;
|
||||
|
||||
/* Reserve kernel text/data/bss */
|
||||
memblock_reserve(memstart, memstart - _rambase);
|
||||
|
||||
m68k_virt_to_node_shift = fls(_ramend - 1) - 6;
|
||||
module_fixup(NULL, __start_fixup, __stop_fixup);
|
||||
|
||||
/* setup bootmem data */
|
||||
/* setup node data */
|
||||
m68k_setup_node(0);
|
||||
memstart += init_bootmem_node(NODE_DATA(0), start_pfn,
|
||||
min_low_pfn, max_low_pfn);
|
||||
free_bootmem_node(NODE_DATA(0), memstart, _ramend - memstart);
|
||||
}
|
||||
|
||||
/*
|
||||
|
مرجع در شماره جدید
Block a user