x86: fix ioremap pgprot inconsistency
authorThomas Gleixner <tglx@linutronix.de>
Wed, 30 Jan 2008 12:34:04 +0000 (13:34 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 30 Jan 2008 12:34:04 +0000 (13:34 +0100)
The pgprot flags which are handed into ioremap_page_range() are
different to those which are set in change_page_attr(). The
ioremap_page_range flags are executable, while the c_p_a flags are
not. Also make the mappings global (which is a NOP currently on 32bit,
although CPUs from PPRO+ onwards support it, but that's a separate
fix.)

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/mm/ioremap_32.c

index f8e6c4709cc2b43720dad5c608daa222e8a5e75e..18757f058bdaec8844570f0864ea3b3131c6585d 100644 (file)
@@ -67,8 +67,7 @@ void __iomem * __ioremap(unsigned long phys_addr, unsigned long size, unsigned l
                                return NULL;
        }
 
-       prot = __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY
-                       | _PAGE_ACCESSED | flags);
+       prot = MAKE_GLOBAL(__PAGE_KERNEL | flags);
 
        /*
         * Mappings have to be page-aligned