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:
parent
8490638cf0
commit
ef5e94af16
2 changed files with 2 additions and 18 deletions
|
@ -383,11 +383,6 @@ static void __init set_highmem_pages_init(void)
|
|||
# define set_highmem_pages_init() do { } while (0)
|
||||
#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)
|
||||
{
|
||||
unsigned long pfn, va;
|
||||
|
@ -509,7 +504,7 @@ void zap_low_mappings(void)
|
|||
|
||||
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);
|
||||
|
||||
#ifdef CONFIG_X86_PAE
|
||||
|
@ -796,8 +791,7 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
|
|||
/* Enable PGE if available */
|
||||
if (cpu_has_pge) {
|
||||
set_in_cr4(X86_CR4_PGE);
|
||||
__PAGE_KERNEL |= _PAGE_GLOBAL;
|
||||
__PAGE_KERNEL_EXEC |= _PAGE_GLOBAL;
|
||||
__supported_pte_mask |= _PAGE_GLOBAL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -78,19 +78,9 @@
|
|||
#define PAGE_READONLY_EXEC __pgprot(_PAGE_PRESENT | _PAGE_USER | \
|
||||
_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 \
|
||||
(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_GLOBAL)
|
||||
#define __PAGE_KERNEL (__PAGE_KERNEL_EXEC | _PAGE_NX)
|
||||
#endif
|
||||
|
||||
#define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
|
||||
#define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
|
||||
|
|
Reference in a new issue