Re: [PATCH 00 of 10] x86: unify asm/pgtable.h

Ingo Molnar
2008-01-09T01:16:32Z

* Jeremy Fitzhardinge <jeremy@goop.org> wrote:

> This isn't correct, because it will set _PAGE_GLOBAL on 32-bit
> unconditionally. It needs to be something like:

hm, why is that a problem? Ah, the VDSO page must not be global-mapped,
right? It's getting late here, i should stop modifying the kernel ;)

> +#define GLOBAL_PGPROT(prot) __pgprot(prot | _PAGE_GLOBAL)
> +
> +#define PAGE_KERNEL GLOBAL_PGPROT(__PAGE_KERNEL)
> +#define PAGE_KERNEL_RO GLOBAL_PGPROT(__PAGE_KERNEL_RO)
> +#define PAGE_KERNEL_EXEC GLOBAL_PGPROT(__PAGE_KERNEL_EXEC)
> +#define PAGE_KERNEL_RX GLOBAL_PGPROT(__PAGE_KERNEL_RX)
> +#define PAGE_KERNEL_NOCACHE GLOBAL_PGPROT(__PAGE_KERNEL_NOCACHE)
> +#define PAGE_KERNEL_LARGE GLOBAL_PGPROT(__PAGE_KERNEL_LARGE)
> +#define PAGE_KERNEL_LARGE_EXEC GLOBAL_PGPROT(__PAGE_KERNEL_LARGE_EXEC)
> +#define PAGE_KERNEL_VSYSCALL GLOBAL_PGPROT(__PAGE_KERNEL_VSYSCALL)
> +#define PAGE_KERNEL_VSYSCALL_NOCACHE GLOBAL_PGPROT(__PAGE_KERNEL_VSYSCALL_NOCACHE)

i suspect you wanted to make GLOBAL_PGPROT a NOP on 32-bit?

but i think it would be better to just do this distinction for the
PAGE_KERNEL_VSYSCALL?

Ingo