Re: [PATCH] GBPAGES: Fix global bit for 64bit



Andi Kleen wrote:
[Ideally apply before the patch to enable gbpages direct mapping]

The gbpages direct patch assumed that __PAGE_KERNEL contains _PAGE_GLOBAL
(I think because that was true at some point in git-x86 and i forgot
to remove it again when forward porting)

This is currently true on 32bit, but not on 64bit which does not make much sense. Add it to 64bit too. Also get rid of the obsolete MAKE_GLOBAL.

Last time when my patch to do this was in the tree, it caused random things to fail, even after increasing the strength of various tlb flushes. Did you change something to fix this?

J

Signed-off-by: Andi Kleen <ak@xxxxxxx>

Index: linux/include/asm-x86/pgtable.h
===================================================================
--- linux.orig/include/asm-x86/pgtable.h
+++ linux/include/asm-x86/pgtable.h
@@ -69,11 +69,13 @@
#define _PAGE_KERNEL (_PAGE_KERNEL_EXEC | _PAGE_NX)
#ifndef __ASSEMBLY__
+/* These are set up based on CPUID capabilities */
extern pteval_t __PAGE_KERNEL, __PAGE_KERNEL_EXEC;
#endif /* __ASSEMBLY__ */
#else
+/* 64bit can assume more CPUID capabilities */
#define __PAGE_KERNEL_EXEC \
- (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
+ (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
#define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
#endif
@@ -86,22 +88,16 @@ extern pteval_t __PAGE_KERNEL, __PAGE_KE
#define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
#define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
-#ifdef CONFIG_X86_32
-# define MAKE_GLOBAL(x) __pgprot((x))
-#else
-# define MAKE_GLOBAL(x) __pgprot((x) | _PAGE_GLOBAL)
-#endif
-
-#define PAGE_KERNEL MAKE_GLOBAL(__PAGE_KERNEL)
-#define PAGE_KERNEL_RO MAKE_GLOBAL(__PAGE_KERNEL_RO)
-#define PAGE_KERNEL_EXEC MAKE_GLOBAL(__PAGE_KERNEL_EXEC)
-#define PAGE_KERNEL_RX MAKE_GLOBAL(__PAGE_KERNEL_RX)
-#define PAGE_KERNEL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE)
-#define PAGE_KERNEL_EXEC_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_EXEC_NOCACHE)
-#define PAGE_KERNEL_LARGE MAKE_GLOBAL(__PAGE_KERNEL_LARGE)
-#define PAGE_KERNEL_LARGE_EXEC MAKE_GLOBAL(__PAGE_KERNEL_LARGE_EXEC)
-#define PAGE_KERNEL_VSYSCALL MAKE_GLOBAL(__PAGE_KERNEL_VSYSCALL)
-#define PAGE_KERNEL_VSYSCALL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_VSYSCALL_NOCACHE)
+#define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
+#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
+#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
+#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
+#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
+#define PAGE_KERNEL_EXEC_NOCACHE __pgprot(__PAGE_KERNEL_EXEC_NOCACHE)
+#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
+#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
+#define PAGE_KERNEL_VSYSCALL __pgprot(__PAGE_KERNEL_VSYSCALL)
+#define PAGE_KERNEL_VSYSCALL_NOCACHE __pgprot(__PAGE_KERNEL_VSYSCALL_NOCACHE)
/* xwr */
#define __P000 PAGE_NONE

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • 2.6.24-rc6-mm1
    ... It oopses late in boot due to an unrevertable change in git-x86 ... See the `hot-fixes' directory for any important updates to this patchset. ... Fix crash in git-agpgart.patch ... device-mapper tree updates ...
    (Linux-Kernel)
  • Re: size_t problems
    ... You really should bite the bullet and fix the code. ... Believe me, I know what porting means, what is important in code ... software package supplied by the vender is *full* of pre C89 crud. ... The compiler would yell at me. ...
    (comp.lang.c)
  • fixed point math library?
    ... I use Newlib for an embedded system that support fixed point format. ... Newlib math library use IEEE 754,so I have to fix them. ... After porting a few math functions, I found things are not easy. ...
    (comp.arch.embedded)
  • Re: porting today..... problem...?
    ... topgooner71 wrote: ... > porting from Orange to o2. ... Should fix itself in time. ...
    (uk.telecom.mobile)
  • Re: Question about Delphi 8
    ... There is a published feature matrix somewhere. ... they have updated it to fix the typo! ... I wouldn't expect porting to be painless though. ...
    (borland.public.delphi.non-technical)