mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-14 04:41:26 +00:00
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: Guenter Roeck <linux@roeck-us.net> Acked-by: Jonas <jonas@southpole.se> Signed-off-by: Stafford Horne <shorne@gmail.com>
This commit is contained in:
parent
994894c3f7
commit
266c7fad15
@ -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:
|
|||||||
|
|
||||||
-- 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 @@
|
|||||||
#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 @@
|
|||||||
|
|
||||||
#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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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)
|
|||||||
*
|
*
|
||||||
* 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),
|
|
||||||
(ram_end_pfn - free_ram_start_pfn) << PAGE_SHIFT);
|
|
||||||
reserve_bootmem(PFN_PHYS(free_ram_start_pfn), bootmap_size,
|
|
||||||
BOOTMEM_DEFAULT);
|
|
||||||
|
|
||||||
for_each_memblock(reserved, region) {
|
early_init_fdt_reserve_self();
|
||||||
printk(KERN_INFO "Reserved - 0x%08x-0x%08x\n",
|
early_init_fdt_scan_reserved_mem();
|
||||||
(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)
|
|||||||
|
|
||||||
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)
|
|||||||
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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 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,
|
|||||||
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user