
From: Dave McCracken <dmccr@us.ibm.com>

The initial set of work to get CONFIG_NONLINEAR to function
on ppc64.

Signed-off-by: Dave Hansen <haveblue@us.ibm.com>
---

 memhotplug-dave/arch/ppc64/Kconfig       |    3 +++
 memhotplug-dave/arch/ppc64/mm/init.c     |    5 +++++
 memhotplug-dave/include/asm-ppc64/page.h |    2 ++
 3 files changed, 10 insertions(+)

diff -puN arch/ppc64/Kconfig~G-nonlinear-ppc64-dmc arch/ppc64/Kconfig
--- memhotplug/arch/ppc64/Kconfig~G-nonlinear-ppc64-dmc	2004-11-12 16:51:50.000000000 -0800
+++ memhotplug-dave/arch/ppc64/Kconfig	2004-11-12 16:51:50.000000000 -0800
@@ -208,6 +208,9 @@ config ARCH_HAS_BOOTPA
 	bool
 	default y
 
+config NONLINEAR
+	bool "Allow nonlinear physical memory"
+
 config DISCONTIGMEM
 	bool "Discontiguous Memory Support"
 	depends on SMP && PPC_PSERIES
diff -puN arch/ppc64/mm/init.c~G-nonlinear-ppc64-dmc arch/ppc64/mm/init.c
--- memhotplug/arch/ppc64/mm/init.c~G-nonlinear-ppc64-dmc	2004-11-12 16:51:50.000000000 -0800
+++ memhotplug-dave/arch/ppc64/mm/init.c	2004-11-12 16:51:50.000000000 -0800
@@ -642,6 +642,11 @@ void __init paging_init(void)
 	unsigned long zholes_size[MAX_NR_ZONES];
 	unsigned long total_ram = lmb_phys_mem_size();
 	unsigned long top_of_ram = lmb_end_of_DRAM();
+	unsigned long top_pfn = top_of_ram >> PAGE_SHIFT;
+#ifdef CONFIG_NONLINEAR
+	struct page *lmem_map;
+#endif
+
 
 	printk(KERN_INFO "Top of RAM: 0x%lx, Total RAM: 0x%lx\n",
 	       top_of_ram, total_ram);
diff -puN include/asm-ppc64/page.h~G-nonlinear-ppc64-dmc include/asm-ppc64/page.h
--- memhotplug/include/asm-ppc64/page.h~G-nonlinear-ppc64-dmc	2004-11-12 16:51:50.000000000 -0800
+++ memhotplug-dave/include/asm-ppc64/page.h	2004-11-12 16:51:50.000000000 -0800
@@ -181,8 +181,10 @@ static inline int get_order(unsigned lon
 
 #define __boot_pa(x)   ((unsigned long)(x)-PAGE_OFFSET)
 #define __boot_va(x)   ((void *)((unsigned long)(x) + KERNELBASE))
+#ifndef CONFIG_NONLINEAR
 #define __pa(x)		__boot_pa(x)
 #define __va(x)		__boot_va(x)
+#endif
 
 extern int page_is_ram(unsigned long pfn);
 
_
