[PATCH] AVR32: Don't try to iounmap P2 segment addresses
authorHaavard Skinnemoen <hskinnemoen@atmel.com>
Tue, 24 Oct 2006 08:12:41 +0000 (10:12 +0200)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 26 Oct 2006 03:26:33 +0000 (20:26 -0700)
While ioremap() will happily map a physical address through the
P2 (uncached) segment when appropriate, iounmap() doesn't know how
to handle those mappings.

This patch makes iounmap() do the right thing, i.e. nothing, for
such mappings.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/avr32/mm/ioremap.c

index 8cfec65e37f76f72ac101aaacc1315affe1da913..3437c82434ac9ec189742862d1ce996223feabf4 100644 (file)
@@ -77,6 +77,8 @@ void __iounmap(void __iomem *addr)
 
        if ((unsigned long)addr >= P4SEG)
                return;
+       if (PXSEG(addr) == P2SEG)
+               return;
 
        p = remove_vm_area((void *)(PAGE_MASK & (unsigned long __force)addr));
        if (unlikely(!p)) {