diff -purN -X /home/mbligh/.diff.exclude 880-physnode_map/arch/i386/mm/ioremap.c 890-ioremap/arch/i386/mm/ioremap.c --- 880-physnode_map/arch/i386/mm/ioremap.c 2003-11-24 16:12:27.000000000 -0800 +++ 890-ioremap/arch/i386/mm/ioremap.c 2004-03-14 10:01:47.000000000 -0800 @@ -18,6 +18,8 @@ #include #include +extern unsigned long max_low_pfn; + static inline void remap_area_pte(pte_t * pte, unsigned long address, unsigned long size, unsigned long phys_addr, unsigned long flags) { @@ -131,7 +133,7 @@ void * __ioremap(unsigned long phys_addr /* * Don't allow anybody to remap normal RAM that we're using.. */ - if (phys_addr < virt_to_phys(high_memory)) { + if (phys_addr < max_low_pfn << PAGE_SHIFT) { char *t_addr, *t_end; struct page *page; @@ -198,7 +200,7 @@ void *ioremap_nocache (unsigned long phy /* Guaranteed to be > phys_addr, as per __ioremap() */ last_addr = phys_addr + size - 1; - if (last_addr < virt_to_phys(high_memory)) { + if (last_addr < max_low_pfn << PAGE_SHIFT) { struct page *ppage = virt_to_page(__va(phys_addr)); unsigned long npages; @@ -233,7 +235,7 @@ void iounmap(void *addr) return; } - if (p->flags && p->phys_addr < virt_to_phys(high_memory)) { + if (p->flags && p->phys_addr < max_low_pfn << PAGE_SHIFT) { change_page_attr(virt_to_page(__va(p->phys_addr)), p->size >> PAGE_SHIFT, PAGE_KERNEL);