Instead of doing a bunch of __pa() calls on MAX_DMA_ADDR, create a MAX_DMA_PHYSADDR macro that individual architectures can override. Here is the patch to 'bootmem.h' to take advantage of any 'MAX_DMA_PHYSADDR' definitions provided by arch specific code. Signed-off-by: Mike Kravetz Signed-off-by: Dave Hansen --- memhotplug-dave/include/linux/bootmem.h | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) diff -puN include/linux/bootmem.h~F5-MAX_DMA_PHYSADDR include/linux/bootmem.h --- memhotplug/include/linux/bootmem.h~F5-MAX_DMA_PHYSADDR 2005-07-28 13:51:06.000000000 -0700 +++ memhotplug-dave/include/linux/bootmem.h 2005-07-28 13:51:06.000000000 -0700 @@ -40,6 +40,10 @@ typedef struct bootmem_data { * up searching */ } bootmem_data_t; +#ifndef MAX_DMA_PHYSADDR +#define MAX_DMA_PHYSADDR (__boot_pa(MAX_DMA_ADDRESS)) +#endif + extern unsigned long __init bootmem_bootmap_pages (unsigned long); extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend); extern void __init free_bootmem (unsigned long addr, unsigned long size); @@ -47,11 +51,11 @@ extern void * __init __alloc_bootmem (un #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE extern void __init reserve_bootmem (unsigned long addr, unsigned long size); #define alloc_bootmem(x) \ - __alloc_bootmem((x), SMP_CACHE_BYTES, __boot_pa(MAX_DMA_ADDRESS)) + __alloc_bootmem((x), SMP_CACHE_BYTES, MAX_DMA_PHYSADDR) #define alloc_bootmem_low(x) \ __alloc_bootmem((x), SMP_CACHE_BYTES, 0) #define alloc_bootmem_pages(x) \ - __alloc_bootmem((x), PAGE_SIZE, __boot_pa(MAX_DMA_ADDRESS)) + __alloc_bootmem((x), PAGE_SIZE, MAX_DMA_PHYSADDR) #define alloc_bootmem_low_pages(x) \ __alloc_bootmem((x), PAGE_SIZE, 0) #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ @@ -64,9 +68,9 @@ extern unsigned long __init free_all_boo extern void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal); #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE #define alloc_bootmem_node(pgdat, x) \ - __alloc_bootmem_node((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) + __alloc_bootmem_node((pgdat), (x), SMP_CACHE_BYTES, MAX_DMA_PHYSADDR) #define alloc_bootmem_pages_node(pgdat, x) \ - __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) + __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, MAX_DMA_PHYSADDR) #define alloc_bootmem_low_pages_node(pgdat, x) \ __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, 0) #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ _