Skip to content

Commit

Permalink
openrisc: Consolidate setup to use memblock instead of bootmem
Browse files Browse the repository at this point in the history
Clearing out one todo item. Use the memblock boot time memory
which is the current standard.

Tested-by: Guenter Roeck <[email protected]>
Acked-by: Jonas <[email protected]>
Signed-off-by: Stafford Horne <[email protected]>
  • Loading branch information
stffrdhrn committed Dec 12, 2016
1 parent 994894c commit 266c7fa
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 33 deletions.
1 change: 1 addition & 0 deletions arch/openrisc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ config OPENRISC
select HAVE_DEBUG_STACKOVERFLOW
select OR1K_PIC
select CPU_NO_EFFICIENT_FFS if !OPENRISC_HAVE_INST_FF1
select NO_BOOTMEM

config MMU
def_bool y
Expand Down
3 changes: 0 additions & 3 deletions arch/openrisc/TODO.openrisc
Original file line number Diff line number Diff line change
Expand Up @@ -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.

-- Consolidate usage of memblock and bootmem... move everything over to
memblock.

-- 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
or1k and this change is slowly trickling through the stack. For the time
Expand Down
1 change: 0 additions & 1 deletion arch/openrisc/include/asm/pgalloc.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
#include <linux/threads.h>
#include <linux/mm.h>
#include <linux/memblock.h>
#include <linux/bootmem.h>

extern int mem_init_done;

Expand Down
36 changes: 12 additions & 24 deletions arch/openrisc/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,16 @@

#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 free_ram_start_pfn;
unsigned long ram_end_pfn;
phys_addr_t memory_start, memory_end;
struct memblock_region *region;

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) {
memory_start = region->base;
memory_end = region->base + region->size;
Expand All @@ -74,33 +72,25 @@ static unsigned long __init setup_memory(void)
}

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());

/* 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;

/*
* initialize the boot-time allocator (with low memory only).
*
* This makes the memory from the end of the kernel to the end of
* RAM usable.
* init_bootmem sets the global values min_low_pfn, max_low_pfn.
*/
bootmap_size = init_bootmem(free_ram_start_pfn,
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) {
printk(KERN_INFO "Reserved - 0x%08x-0x%08x\n",
(u32) region->base, (u32) region->size);
reserve_bootmem(region->base, region->size, BOOTMEM_DEFAULT);
}
memblock_reserve(__pa(_stext), _end - _stext);

early_init_fdt_reserve_self();
early_init_fdt_scan_reserved_mem();

return ram_end_pfn;
memblock_dump_all();
}

struct cpuinfo cpuinfo;
Expand Down Expand Up @@ -272,8 +262,6 @@ void calibrate_delay(void)

void __init setup_arch(char **cmdline_p)
{
unsigned long max_low_pfn;

unflatten_and_copy_device_tree();

setup_cpuinfo();
Expand All @@ -294,8 +282,8 @@ void __init setup_arch(char **cmdline_p)
initrd_below_start_ok = 1;
#endif

/* setup bootmem allocator */
max_low_pfn = setup_memory();
/* setup memblock allocator */
setup_memory();

/* paging_init() sets up the MMU and marks all pages as reserved */
paging_init();
Expand Down
2 changes: 1 addition & 1 deletion arch/openrisc/mm/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ static void __init map_ram(void)
}

/* 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)));

/* Fill the newly allocated page with PTE'S */
Expand Down
4 changes: 0 additions & 4 deletions arch/openrisc/mm/ioremap.c
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,7 @@ pte_t __ref *pte_alloc_one_kernel(struct mm_struct *mm,
if (likely(mem_init_done)) {
pte = (pte_t *) __get_free_page(GFP_KERNEL);
} 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));
#endif
}

if (pte)
Expand Down

0 comments on commit 266c7fa

Please sign in to comment.