[PATCH 1/2] bootmem/powerpc: Unify bootmem initialization

2014-05-08 Thread Emil Medve
Unify the low/highmem code path from do_init_bootmem() by using (the)
lowmem related variables/parameters even when the low/highmem split
is not needed (64-bit) or configured. In such cases the lowmem
variables/parameters continue to observe the definition by referring
to memory directly mapped by the kernel

Signed-off-by: Emil Medve emilian.me...@freescale.com
---

v2: Rebased, no changes

v3: No changes

 arch/powerpc/mm/mem.c | 36 
 1 file changed, 16 insertions(+), 20 deletions(-)

diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 32202c9..eaf5d1d8 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -188,27 +188,31 @@ EXPORT_SYMBOL_GPL(walk_system_ram_range);
 void __init do_init_bootmem(void)
 {
unsigned long start, bootmap_pages;
-   unsigned long total_pages;
struct memblock_region *reg;
int boot_mapsize;
+   phys_addr_t _total_lowmem;
+   phys_addr_t _lowmem_end_addr;
 
-   max_low_pfn = max_pfn = memblock_end_of_DRAM()  PAGE_SHIFT;
-   total_pages = (memblock_end_of_DRAM() - memstart_addr)  PAGE_SHIFT;
-#ifdef CONFIG_HIGHMEM
-   total_pages = total_lowmem  PAGE_SHIFT;
-   max_low_pfn = lowmem_end_addr  PAGE_SHIFT;
+#ifndef CONFIG_HIGHMEM
+   _lowmem_end_addr = memblock_end_of_DRAM();
+#else
+   _lowmem_end_addr = lowmem_end_addr;
 #endif
 
+   max_pfn = memblock_end_of_DRAM()  PAGE_SHIFT;
+   max_low_pfn = _lowmem_end_addr  PAGE_SHIFT;
+   min_low_pfn = MEMORY_START  PAGE_SHIFT;
+
/*
 * Find an area to use for the bootmem bitmap.  Calculate the size of
 * bitmap required as (Total Memory) / PAGE_SIZE / BITS_PER_BYTE.
 * Add 1 additional page in case the address isn't page-aligned.
 */
-   bootmap_pages = bootmem_bootmap_pages(total_pages);
+   _total_lowmem = _lowmem_end_addr - memstart_addr;
+   bootmap_pages = bootmem_bootmap_pages(_total_lowmem  PAGE_SHIFT);
 
start = memblock_alloc(bootmap_pages  PAGE_SHIFT, PAGE_SIZE);
 
-   min_low_pfn = MEMORY_START  PAGE_SHIFT;
boot_mapsize = init_bootmem_node(NODE_DATA(0), start  PAGE_SHIFT, 
min_low_pfn, max_low_pfn);
 
/* Place all memblock_regions in the same node and merge contiguous
@@ -219,26 +223,18 @@ void __init do_init_bootmem(void)
/* Add all physical memory to the bootmem map, mark each area
 * present.
 */
-#ifdef CONFIG_HIGHMEM
-   free_bootmem_with_active_regions(0, lowmem_end_addr  PAGE_SHIFT);
+   free_bootmem_with_active_regions(0, max_low_pfn);
 
/* reserve the sections we're already using */
for_each_memblock(reserved, reg) {
-   unsigned long top = reg-base + reg-size - 1;
-   if (top  lowmem_end_addr)
+   if (reg-base + reg-size - 1  _lowmem_end_addr)
reserve_bootmem(reg-base, reg-size, BOOTMEM_DEFAULT);
-   else if (reg-base  lowmem_end_addr) {
-   unsigned long trunc_size = lowmem_end_addr - reg-base;
+   else if (reg-base  _lowmem_end_addr) {
+   unsigned long trunc_size = _lowmem_end_addr - reg-base;
reserve_bootmem(reg-base, trunc_size, BOOTMEM_DEFAULT);
}
}
-#else
-   free_bootmem_with_active_regions(0, max_pfn);
 
-   /* reserve the sections we're already using */
-   for_each_memblock(reserved, reg)
-   reserve_bootmem(reg-base, reg-size, BOOTMEM_DEFAULT);
-#endif
/* XXX need to clip this if using highmem? */
sparse_memory_present_with_active_regions(0);
 
-- 
1.9.2
___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

[PATCH 1/2] bootmem/powerpc: Unify bootmem initialization

2014-04-01 Thread Emil Medve
Unify the low/highmem code path from do_init_bootmem() by using (the)
lowmem related variables/parameters even when the low/highmem split
is not needed (64-bit) or configured. In such cases the lowmem
variables/parameters continue to observe the definition by referring
to memory directly mapped by the kernel

Signed-off-by: Emil Medve emilian.me...@freescale.com
---
 arch/powerpc/mm/mem.c | 36 
 1 file changed, 16 insertions(+), 20 deletions(-)

diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 32202c9..eaf5d1d8 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -188,27 +188,31 @@ EXPORT_SYMBOL_GPL(walk_system_ram_range);
 void __init do_init_bootmem(void)
 {
unsigned long start, bootmap_pages;
-   unsigned long total_pages;
struct memblock_region *reg;
int boot_mapsize;
+   phys_addr_t _total_lowmem;
+   phys_addr_t _lowmem_end_addr;
 
-   max_low_pfn = max_pfn = memblock_end_of_DRAM()  PAGE_SHIFT;
-   total_pages = (memblock_end_of_DRAM() - memstart_addr)  PAGE_SHIFT;
-#ifdef CONFIG_HIGHMEM
-   total_pages = total_lowmem  PAGE_SHIFT;
-   max_low_pfn = lowmem_end_addr  PAGE_SHIFT;
+#ifndef CONFIG_HIGHMEM
+   _lowmem_end_addr = memblock_end_of_DRAM();
+#else
+   _lowmem_end_addr = lowmem_end_addr;
 #endif
 
+   max_pfn = memblock_end_of_DRAM()  PAGE_SHIFT;
+   max_low_pfn = _lowmem_end_addr  PAGE_SHIFT;
+   min_low_pfn = MEMORY_START  PAGE_SHIFT;
+
/*
 * Find an area to use for the bootmem bitmap.  Calculate the size of
 * bitmap required as (Total Memory) / PAGE_SIZE / BITS_PER_BYTE.
 * Add 1 additional page in case the address isn't page-aligned.
 */
-   bootmap_pages = bootmem_bootmap_pages(total_pages);
+   _total_lowmem = _lowmem_end_addr - memstart_addr;
+   bootmap_pages = bootmem_bootmap_pages(_total_lowmem  PAGE_SHIFT);
 
start = memblock_alloc(bootmap_pages  PAGE_SHIFT, PAGE_SIZE);
 
-   min_low_pfn = MEMORY_START  PAGE_SHIFT;
boot_mapsize = init_bootmem_node(NODE_DATA(0), start  PAGE_SHIFT, 
min_low_pfn, max_low_pfn);
 
/* Place all memblock_regions in the same node and merge contiguous
@@ -219,26 +223,18 @@ void __init do_init_bootmem(void)
/* Add all physical memory to the bootmem map, mark each area
 * present.
 */
-#ifdef CONFIG_HIGHMEM
-   free_bootmem_with_active_regions(0, lowmem_end_addr  PAGE_SHIFT);
+   free_bootmem_with_active_regions(0, max_low_pfn);
 
/* reserve the sections we're already using */
for_each_memblock(reserved, reg) {
-   unsigned long top = reg-base + reg-size - 1;
-   if (top  lowmem_end_addr)
+   if (reg-base + reg-size - 1  _lowmem_end_addr)
reserve_bootmem(reg-base, reg-size, BOOTMEM_DEFAULT);
-   else if (reg-base  lowmem_end_addr) {
-   unsigned long trunc_size = lowmem_end_addr - reg-base;
+   else if (reg-base  _lowmem_end_addr) {
+   unsigned long trunc_size = _lowmem_end_addr - reg-base;
reserve_bootmem(reg-base, trunc_size, BOOTMEM_DEFAULT);
}
}
-#else
-   free_bootmem_with_active_regions(0, max_pfn);
 
-   /* reserve the sections we're already using */
-   for_each_memblock(reserved, reg)
-   reserve_bootmem(reg-base, reg-size, BOOTMEM_DEFAULT);
-#endif
/* XXX need to clip this if using highmem? */
sparse_memory_present_with_active_regions(0);
 
-- 
1.9.1


___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev