From 30edfb4d471af6beed7fc88de58d5dd801c119bc Mon Sep 17 00:00:00 2001 From: Johannes Weiner Date: Wed, 4 Mar 2009 16:21:30 +0100 Subject: [PATCH] --- yaml --- r: 140349 b: refs/heads/master c: c947a585ab13f310c9223284dfd502790abd05f9 h: refs/heads/master i: 140347: 47ebeffe6e85c1c023cc7b6713bdcf8ca95887ea v: v3 --- [refs] | 2 +- trunk/arch/xtensa/include/asm/page.h | 5 ++++- trunk/arch/xtensa/mm/init.c | 10 +++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 59d74d96e370..c8a50873b8ad 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 264da9f708b130122d881fa4570d1cd618440a73 +refs/heads/master: c947a585ab13f310c9223284dfd502790abd05f9 diff --git a/trunk/arch/xtensa/include/asm/page.h b/trunk/arch/xtensa/include/asm/page.h index 11f7dc2dbec7..a5a5d33c15d0 100644 --- a/trunk/arch/xtensa/include/asm/page.h +++ b/trunk/arch/xtensa/include/asm/page.h @@ -14,6 +14,7 @@ #include #include #include +#include /* * Fixed TLB translations in the processor. @@ -150,9 +151,11 @@ extern void copy_user_page(void*, void*, unsigned long, struct page*); * addresses. */ +#define ARCH_PFN_OFFSET (PLATFORM_DEFAULT_MEM_START >> PAGE_SHIFT) + #define __pa(x) ((unsigned long) (x) - PAGE_OFFSET) #define __va(x) ((void *)((unsigned long) (x) + PAGE_OFFSET)) -#define pfn_valid(pfn) ((unsigned long)pfn < max_mapnr) +#define pfn_valid(pfn) ((pfn) >= ARCH_PFN_OFFSET && ((pfn) - ARCH_PFN_OFFSET) < max_mapnr) #ifdef CONFIG_DISCONTIGMEM # error CONFIG_DISCONTIGMEM not supported #endif diff --git a/trunk/arch/xtensa/mm/init.c b/trunk/arch/xtensa/mm/init.c index a534d52a57bd..6190988bba17 100644 --- a/trunk/arch/xtensa/mm/init.c +++ b/trunk/arch/xtensa/mm/init.c @@ -167,7 +167,7 @@ void __init paging_init(void) /* All pages are DMA-able, so we put them all in the DMA zone. */ - zones_size[ZONE_DMA] = max_low_pfn; + zones_size[ZONE_DMA] = max_low_pfn - ARCH_PFN_OFFSET; for (i = 1; i < MAX_NR_ZONES; i++) zones_size[i] = 0; @@ -179,7 +179,7 @@ void __init paging_init(void) memset(swapper_pg_dir, 0, PAGE_SIZE); - free_area_init(zones_size); + free_area_init_node(0, zones_size, ARCH_PFN_OFFSET, NULL); } /* @@ -220,8 +220,8 @@ void __init mem_init(void) unsigned long codesize, reservedpages, datasize, initsize; unsigned long highmemsize, tmp, ram; - max_mapnr = num_physpages = max_low_pfn; - high_memory = (void *) __va(max_mapnr << PAGE_SHIFT); + max_mapnr = num_physpages = max_low_pfn - ARCH_PFN_OFFSET; + high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT); highmemsize = 0; #ifdef CONFIG_HIGHMEM @@ -231,7 +231,7 @@ void __init mem_init(void) totalram_pages += free_all_bootmem(); reservedpages = ram = 0; - for (tmp = 0; tmp < max_low_pfn; tmp++) { + for (tmp = 0; tmp < max_mapnr; tmp++) { ram++; if (PageReserved(mem_map+tmp)) reservedpages++;