Atsushi Nemoto wrote:
> On Thu, 06 Jul 2006 15:12:11 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com>
> wrote:
>> Ok thinking more about it, some platforms may have physical memory
>> that doesn't start at 0. MIPS doesn't support such platform though it
>> should be fairly easy. In that case __pa should be defined as:
>>
>> #define __pa(x) ((unsigned long) (x) - PAGE_OFFSET +
>> PFN_PHYS(ARCH_PFN_OFFSET))
>>
>> and use in your patch:
>>
>> free_area_init_node(0, NODE_DATA(0), zones_size, ARCH_PFN_OFFSET,
>> zholes_size);
>>
>> So I would recommend to use ARCH_PFN_OFFSET.
>
> Well, currently ARCH_PFN_OFFSET is defined in
> asm-generic/memory_model.h only for FLATMEM case. I think other
> memory models do not need it because it is just a case that a first
> hole begins at pfn 0.
>
That's true, I thought it was defined whatever the mem models...
what about this, on top of your patch ?
-- >8 --
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index c6e684d..eb1b3fc 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -166,8 +166,8 @@ void __init paging_init(void)
{
unsigned long zones_size[] = { [0 ... MAX_NR_ZONES - 1] = 0 };
unsigned long max_dma, high, low;
- unsigned long zholes_size[] = { [0 ... MAX_NR_ZONES - 1] = 0 };
#ifndef CONFIG_FLATMEM
+ unsigned long zholes_size[] = { [0 ... MAX_NR_ZONES - 1] = 0 };
unsigned long i, j, pfn;
#endif
@@ -207,8 +207,10 @@ #ifndef CONFIG_FLATMEM
for (j = 0; j < zones_size[i]; j++, pfn++)
if (!page_is_ram(pfn))
zholes_size[i]++;
-#endif
free_area_init_node(0, NODE_DATA(0), zones_size, 0, zholes_size);
+#else
+ free_area_init_node(0, NODE_DATA(0), zones_size, ARCH_PFN_OFFSET, NULL);
+#endif
}
static struct kcore_list kcore_mem, kcore_vmalloc;
|