CONFIG_NONLINEAR differentiates between the layout during early boot-time, and later at runtime. During early boot, before the nonlinear tables are initialized, the layout is assumed to be flat, and the __boot variants are used. Create these macros now, so that the nonlinear patch can use them, but use the default linear implementation for now. Signed-off-by: Dave Hansen --- memhotplug-dave/arch/ppc64/Kconfig | 4 ++++ memhotplug-dave/include/asm-ppc64/page.h | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff -puN arch/ppc64/Kconfig~F1-create-__boot-ppc64 arch/ppc64/Kconfig --- memhotplug/arch/ppc64/Kconfig~F1-create-__boot-ppc64 2005-07-28 13:51:04.000000000 -0700 +++ memhotplug-dave/arch/ppc64/Kconfig 2005-07-28 13:51:04.000000000 -0700 @@ -227,6 +227,10 @@ config NR_CPUS depends on SMP default "32" +config ARCH_HAS_BOOTPA + bool + default y + config HMT bool "Hardware multithreading" depends on SMP && PPC_PSERIES && BROKEN diff -puN include/asm-ppc64/page.h~F1-create-__boot-ppc64 include/asm-ppc64/page.h --- memhotplug/include/asm-ppc64/page.h~F1-create-__boot-ppc64 2005-07-28 13:51:04.000000000 -0700 +++ memhotplug-dave/include/asm-ppc64/page.h 2005-07-28 13:51:04.000000000 -0700 @@ -174,7 +174,10 @@ static inline int get_order(unsigned lon return order; } -#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET) +#define __boot_pa(x) ((unsigned long)(x)-PAGE_OFFSET) +#define __boot_va(x) ((void *)((unsigned long)(x) + KERNELBASE)) +#define __pa(x) __boot_pa(x) +#define __va(x) __boot_va(x) extern int page_is_ram(unsigned long pfn); @@ -211,8 +214,6 @@ extern u64 ppc64_pft_size; /* Log 2 of #define __bpn_to_ba(x) ((((unsigned long)(x)) << PAGE_SHIFT) + KERNELBASE) #define __ba_to_bpn(x) ((((unsigned long)(x)) & ~REGION_MASK) >> PAGE_SHIFT) -#define __va(x) ((void *)((unsigned long)(x) + KERNELBASE)) - #ifdef CONFIG_DISCONTIGMEM #define page_to_pfn(page) discontigmem_page_to_pfn(page) #define pfn_to_page(pfn) discontigmem_pfn_to_page(pfn) _