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 Index: linux-2.6.13/include/asm-i386/page.h =================================================================== --- linux-2.6.13.orig/include/asm-i386/page.h 2005-08-28 16:41:01.000000000 -0700 +++ linux-2.6.13/include/asm-i386/page.h 2005-08-30 12:17:55.000000000 -0700 @@ -137,8 +137,10 @@ extern int page_is_ram(unsigned long pag #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET) #define VMALLOC_RESERVE ((unsigned long)__VMALLOC_RESERVE) #define MAXMEM (-__PAGE_OFFSET-__VMALLOC_RESERVE) -#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET) -#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) +#define __boot_pa(x) ((unsigned long)(x)-PAGE_OFFSET) +#define __boot_va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET)) +#define __pa(x) __boot_pa(x) +#define __va(x) __boot_va(x) #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) #ifdef CONFIG_FLATMEM #define pfn_to_page(pfn) (mem_map + (pfn)) Index: linux-2.6.13/arch/i386/Kconfig =================================================================== --- linux-2.6.13.orig/arch/i386/Kconfig 2005-08-30 12:10:44.000000000 -0700 +++ linux-2.6.13/arch/i386/Kconfig 2005-08-30 12:17:55.000000000 -0700 @@ -768,6 +768,9 @@ config HAVE_ARCH_BOOTMEM_NODE depends on NUMA default y +config ARCH_HAS_BOOTPA + def_bool y + config ARCH_HAVE_MEMORY_PRESENT bool depends on DISCONTIGMEM