On Thu, 21 Feb 2008, Diego Calleja wrote: > > Hmm, that's confusing. Can you please provide a complete boot log ? > > > > Thanks, > > Sure
Thanks. Nothing new there. Can you please apply the patch below and provide the output of the ioremap code ? Thanks, tglx Index: linux-2.6/arch/x86/mm/ioremap.c =================================================================== --- linux-2.6.orig/arch/x86/mm/ioremap.c +++ linux-2.6/arch/x86/mm/ioremap.c @@ -112,6 +112,7 @@ static void __iomem *__ioremap(unsigned unsigned long pfn, offset, last_addr, vaddr; struct vm_struct *area; pgprot_t prot; + int err; /* Don't allow wraparound or zero size */ last_addr = phys_addr + size - 1; @@ -130,8 +131,11 @@ static void __iomem *__ioremap(unsigned for (pfn = phys_addr >> PAGE_SHIFT; pfn < max_pfn_mapped && (pfn << PAGE_SHIFT) < last_addr; pfn++) { if (page_is_ram(pfn) && pfn_valid(pfn) && - !PageReserved(pfn_to_page(pfn))) + !PageReserved(pfn_to_page(pfn))) { + printk(KERN_INFO "ioremap: (RAM) %lx %lu\n", phys_addr, + size); return NULL; + } } WARN_ON_ONCE(page_is_ram(pfn)); @@ -157,16 +161,23 @@ static void __iomem *__ioremap(unsigned * Ok, go for it.. */ area = get_vm_area(size, VM_IOREMAP); - if (!area) + if (!area) { + printk(KERN_INFO "ioremap: !area PR %lx %lu\n", phys_addr, + size); return NULL; + } area->phys_addr = phys_addr; vaddr = (unsigned long) area->addr; if (ioremap_page_range(vaddr, vaddr + size, phys_addr, prot)) { remove_vm_area((void *)(vaddr & PAGE_MASK)); + printk(KERN_INFO "ioremap: IPR %lx %lu\n", phys_addr, size); return NULL; } - if (ioremap_change_attr(vaddr, size, mode) < 0) { + err = ioremap_change_attr(vaddr, size, mode); + if (err < 0) { + printk(KERN_INFO "ioremap: CPA %lx %lu %d\n", phys_addr, size, + err); vunmap(area->addr); return NULL; } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/