x86_32: remove __PAGE_KERNEL(_EXEC)
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Older x86-32 processors do not support global mappings (PGD), so must only use it if the processor supports it. The _PAGE_KERNEL* flags always have _PAGE_KERNEL set, since logically we always want it set. This is OK even on processors which do not support PGD, since all _PAGE flags are masked with __supported_pte_mask before being turned into a real in-pagetable pte. On 32-bit systems, __supported_pte_mask is initialized to not contain _PAGE_GLOBAL, and it is then added if the CPU is found to support it. The x86-32 code used to use __PAGE_KERNEL/__PAGE_KERNEL_EXEC for this purpose, but they're now redundant and can be removed. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Cc: Stephen Tweedie <sct@redhat.com> Cc: Eduardo Habkost <ehabkost@redhat.com> Cc: Mark McLoughlin <markmc@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
8490638cf0
commit
ef5e94af16
@@ -383,11 +383,6 @@ static void __init set_highmem_pages_init(void)
|
|||||||
# define set_highmem_pages_init() do { } while (0)
|
# define set_highmem_pages_init() do { } while (0)
|
||||||
#endif /* CONFIG_HIGHMEM */
|
#endif /* CONFIG_HIGHMEM */
|
||||||
|
|
||||||
pteval_t __PAGE_KERNEL = _PAGE_KERNEL;
|
|
||||||
EXPORT_SYMBOL(__PAGE_KERNEL);
|
|
||||||
|
|
||||||
pteval_t __PAGE_KERNEL_EXEC = _PAGE_KERNEL_EXEC;
|
|
||||||
|
|
||||||
void __init native_pagetable_setup_start(pgd_t *base)
|
void __init native_pagetable_setup_start(pgd_t *base)
|
||||||
{
|
{
|
||||||
unsigned long pfn, va;
|
unsigned long pfn, va;
|
||||||
@@ -509,7 +504,7 @@ void zap_low_mappings(void)
|
|||||||
|
|
||||||
int nx_enabled;
|
int nx_enabled;
|
||||||
|
|
||||||
pteval_t __supported_pte_mask __read_mostly = ~_PAGE_NX;
|
pteval_t __supported_pte_mask __read_mostly = ~(_PAGE_NX | _PAGE_GLOBAL);
|
||||||
EXPORT_SYMBOL_GPL(__supported_pte_mask);
|
EXPORT_SYMBOL_GPL(__supported_pte_mask);
|
||||||
|
|
||||||
#ifdef CONFIG_X86_PAE
|
#ifdef CONFIG_X86_PAE
|
||||||
@@ -796,8 +791,7 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
|
|||||||
/* Enable PGE if available */
|
/* Enable PGE if available */
|
||||||
if (cpu_has_pge) {
|
if (cpu_has_pge) {
|
||||||
set_in_cr4(X86_CR4_PGE);
|
set_in_cr4(X86_CR4_PGE);
|
||||||
__PAGE_KERNEL |= _PAGE_GLOBAL;
|
__supported_pte_mask |= _PAGE_GLOBAL;
|
||||||
__PAGE_KERNEL_EXEC |= _PAGE_GLOBAL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -78,19 +78,9 @@
|
|||||||
#define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \
|
#define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \
|
||||||
_PAGE_ACCESSED)
|
_PAGE_ACCESSED)
|
||||||
|
|
||||||
#ifdef CONFIG_X86_32
|
|
||||||
#define _PAGE_KERNEL_EXEC \
|
|
||||||
(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
|
|
||||||
#define _PAGE_KERNEL (_PAGE_KERNEL_EXEC | _PAGE_NX)
|
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
|
||||||
extern pteval_t __PAGE_KERNEL, __PAGE_KERNEL_EXEC;
|
|
||||||
#endif /* __ASSEMBLY__ */
|
|
||||||
#else
|
|
||||||
#define __PAGE_KERNEL_EXEC \
|
#define __PAGE_KERNEL_EXEC \
|
||||||
(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
|
(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
|
||||||
#define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
|
#define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
|
||||||
#endif
|
|
||||||
|
|
||||||
#define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
|
#define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
|
||||||
#define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
|
#define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
|
||||||
|
Reference in New Issue
Block a user