Commit 266c7fad authored by Stafford Horne's avatar Stafford Horne

openrisc: Consolidate setup to use memblock instead of bootmem

Clearing out one todo item. Use the memblock boot time memory
which is the current standard.
Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
Acked-by: default avatarJonas <jonas@southpole.se>
Signed-off-by: default avatarStafford Horne <shorne@gmail.com>
parent 994894c3
...@@ -26,6 +26,7 @@ config OPENRISC ...@@ -26,6 +26,7 @@ config OPENRISC
select HAVE_DEBUG_STACKOVERFLOW select HAVE_DEBUG_STACKOVERFLOW
select OR1K_PIC select OR1K_PIC
select CPU_NO_EFFICIENT_FFS if !OPENRISC_HAVE_INST_FF1 select CPU_NO_EFFICIENT_FFS if !OPENRISC_HAVE_INST_FF1
select NO_BOOTMEM
config MMU config MMU
def_bool y def_bool y
......
...@@ -5,9 +5,6 @@ that are due for investigation shortly, i.e. our TODO list: ...@@ -5,9 +5,6 @@ that are due for investigation shortly, i.e. our TODO list:
-- Implement the rest of the DMA API... dma_map_sg, etc. -- Implement the rest of the DMA API... dma_map_sg, etc.
-- Consolidate usage of memblock and bootmem... move everything over to
memblock.
-- Finish the renaming cleanup... there are references to or32 in the code -- Finish the renaming cleanup... there are references to or32 in the code
which was an older name for the architecture. The name we've settled on is which was an older name for the architecture. The name we've settled on is
or1k and this change is slowly trickling through the stack. For the time or1k and this change is slowly trickling through the stack. For the time
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#include <linux/threads.h> #include <linux/threads.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/memblock.h> #include <linux/memblock.h>
#include <linux/bootmem.h>
extern int mem_init_done; extern int mem_init_done;
......
...@@ -50,18 +50,16 @@ ...@@ -50,18 +50,16 @@
#include "vmlinux.h" #include "vmlinux.h"
static unsigned long __init setup_memory(void) static void __init setup_memory(void)
{ {
unsigned long bootmap_size;
unsigned long ram_start_pfn; unsigned long ram_start_pfn;
unsigned long free_ram_start_pfn;
unsigned long ram_end_pfn; unsigned long ram_end_pfn;
phys_addr_t memory_start, memory_end; phys_addr_t memory_start, memory_end;
struct memblock_region *region; struct memblock_region *region;
memory_end = memory_start = 0; memory_end = memory_start = 0;
/* Find main memory where is the kernel */ /* Find main memory where is the kernel, we assume its the only one */
for_each_memblock(memory, region) { for_each_memblock(memory, region) {
memory_start = region->base; memory_start = region->base;
memory_end = region->base + region->size; memory_end = region->base + region->size;
...@@ -74,10 +72,11 @@ static unsigned long __init setup_memory(void) ...@@ -74,10 +72,11 @@ static unsigned long __init setup_memory(void)
} }
ram_start_pfn = PFN_UP(memory_start); ram_start_pfn = PFN_UP(memory_start);
/* free_ram_start_pfn is first page after kernel */
free_ram_start_pfn = PFN_UP(__pa(_end));
ram_end_pfn = PFN_DOWN(memblock_end_of_DRAM()); ram_end_pfn = PFN_DOWN(memblock_end_of_DRAM());
/* setup bootmem globals (we use no_bootmem, but mm still depends on this) */
min_low_pfn = ram_start_pfn;
max_low_pfn = ram_end_pfn;
max_pfn = ram_end_pfn; max_pfn = ram_end_pfn;
/* /*
...@@ -85,22 +84,13 @@ static unsigned long __init setup_memory(void) ...@@ -85,22 +84,13 @@ static unsigned long __init setup_memory(void)
* *
* This makes the memory from the end of the kernel to the end of * This makes the memory from the end of the kernel to the end of
* RAM usable. * RAM usable.
* init_bootmem sets the global values min_low_pfn, max_low_pfn.
*/ */
bootmap_size = init_bootmem(free_ram_start_pfn, memblock_reserve(__pa(_stext), _end - _stext);
ram_end_pfn - ram_start_pfn);
free_bootmem(PFN_PHYS(free_ram_start_pfn), early_init_fdt_reserve_self();
(ram_end_pfn - free_ram_start_pfn) << PAGE_SHIFT); early_init_fdt_scan_reserved_mem();
reserve_bootmem(PFN_PHYS(free_ram_start_pfn), bootmap_size,
BOOTMEM_DEFAULT);
for_each_memblock(reserved, region) {
printk(KERN_INFO "Reserved - 0x%08x-0x%08x\n",
(u32) region->base, (u32) region->size);
reserve_bootmem(region->base, region->size, BOOTMEM_DEFAULT);
}
return ram_end_pfn; memblock_dump_all();
} }
struct cpuinfo cpuinfo; struct cpuinfo cpuinfo;
...@@ -272,8 +262,6 @@ void calibrate_delay(void) ...@@ -272,8 +262,6 @@ void calibrate_delay(void)
void __init setup_arch(char **cmdline_p) void __init setup_arch(char **cmdline_p)
{ {
unsigned long max_low_pfn;
unflatten_and_copy_device_tree(); unflatten_and_copy_device_tree();
setup_cpuinfo(); setup_cpuinfo();
...@@ -294,8 +282,8 @@ void __init setup_arch(char **cmdline_p) ...@@ -294,8 +282,8 @@ void __init setup_arch(char **cmdline_p)
initrd_below_start_ok = 1; initrd_below_start_ok = 1;
#endif #endif
/* setup bootmem allocator */ /* setup memblock allocator */
max_low_pfn = setup_memory(); setup_memory();
/* paging_init() sets up the MMU and marks all pages as reserved */ /* paging_init() sets up the MMU and marks all pages as reserved */
paging_init(); paging_init();
......
...@@ -106,7 +106,7 @@ static void __init map_ram(void) ...@@ -106,7 +106,7 @@ static void __init map_ram(void)
} }
/* Alloc one page for holding PTE's... */ /* Alloc one page for holding PTE's... */
pte = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE); pte = (pte_t *) __va(memblock_alloc(PAGE_SIZE, PAGE_SIZE));
set_pmd(pme, __pmd(_KERNPG_TABLE + __pa(pte))); set_pmd(pme, __pmd(_KERNPG_TABLE + __pa(pte)));
/* Fill the newly allocated page with PTE'S */ /* Fill the newly allocated page with PTE'S */
......
...@@ -124,11 +124,7 @@ pte_t __ref *pte_alloc_one_kernel(struct mm_struct *mm, ...@@ -124,11 +124,7 @@ pte_t __ref *pte_alloc_one_kernel(struct mm_struct *mm,
if (likely(mem_init_done)) { if (likely(mem_init_done)) {
pte = (pte_t *) __get_free_page(GFP_KERNEL); pte = (pte_t *) __get_free_page(GFP_KERNEL);
} else { } else {
pte = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE);
#if 0
/* FIXME: use memblock... */
pte = (pte_t *) __va(memblock_alloc(PAGE_SIZE, PAGE_SIZE)); pte = (pte_t *) __va(memblock_alloc(PAGE_SIZE, PAGE_SIZE));
#endif
} }
if (pte) if (pte)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment