init.c (fc8e1ead9314cf0e0f1922e661428b93d3a50d88) | init.c (c44c9ec0f38b939b3200436e3aa95c1aa83c41c7) |
---|---|
1#include <linux/initrd.h> 2#include <linux/ioport.h> 3#include <linux/swap.h> 4 5#include <asm/cacheflush.h> 6#include <asm/e820.h> 7#include <asm/init.h> 8#include <asm/page.h> --- 14 unchanged lines hidden (view full) --- 23int after_bootmem; 24 25int direct_gbpages 26#ifdef CONFIG_DIRECT_GBPAGES 27 = 1 28#endif 29; 30 | 1#include <linux/initrd.h> 2#include <linux/ioport.h> 3#include <linux/swap.h> 4 5#include <asm/cacheflush.h> 6#include <asm/e820.h> 7#include <asm/init.h> 8#include <asm/page.h> --- 14 unchanged lines hidden (view full) --- 23int after_bootmem; 24 25int direct_gbpages 26#ifdef CONFIG_DIRECT_GBPAGES 27 = 1 28#endif 29; 30 |
31int nx_enabled; 32 33#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) 34static int disable_nx __cpuinitdata; 35 36/* 37 * noexec = on|off 38 * 39 * Control non-executable mappings for processes. 40 * 41 * on Enable 42 * off Disable 43 */ 44static int __init noexec_setup(char *str) 45{ 46 if (!str) 47 return -EINVAL; 48 if (!strncmp(str, "on", 2)) { 49 __supported_pte_mask |= _PAGE_NX; 50 disable_nx = 0; 51 } else if (!strncmp(str, "off", 3)) { 52 disable_nx = 1; 53 __supported_pte_mask &= ~_PAGE_NX; 54 } 55 return 0; 56} 57early_param("noexec", noexec_setup); 58#endif 59 60#ifdef CONFIG_X86_PAE 61static void __init set_nx(void) 62{ 63 unsigned int v[4], l, h; 64 65 if (cpu_has_pae && (cpuid_eax(0x80000000) > 0x80000001)) { 66 cpuid(0x80000001, &v[0], &v[1], &v[2], &v[3]); 67 68 if ((v[3] & (1 << 20)) && !disable_nx) { 69 rdmsr(MSR_EFER, l, h); 70 l |= EFER_NX; 71 wrmsr(MSR_EFER, l, h); 72 nx_enabled = 1; 73 __supported_pte_mask |= _PAGE_NX; 74 } 75 } 76} 77#else 78static inline void set_nx(void) 79{ 80} 81#endif 82 83#ifdef CONFIG_X86_64 84void __cpuinit check_efer(void) 85{ 86 unsigned long efer; 87 88 rdmsrl(MSR_EFER, efer); 89 if (!(efer & EFER_NX) || disable_nx) 90 __supported_pte_mask &= ~_PAGE_NX; 91} 92#endif 93 | |
94static void __init find_early_table_space(unsigned long end, int use_pse, 95 int use_gbpages) 96{ 97 unsigned long puds, pmds, ptes, tables, start; 98 99 puds = (end + PUD_SIZE - 1) >> PUD_SHIFT; 100 tables = roundup(puds * sizeof(pud_t), PAGE_SIZE); 101 --- 354 unchanged lines hidden --- | 31static void __init find_early_table_space(unsigned long end, int use_pse, 32 int use_gbpages) 33{ 34 unsigned long puds, pmds, ptes, tables, start; 35 36 puds = (end + PUD_SIZE - 1) >> PUD_SHIFT; 37 tables = roundup(puds * sizeof(pud_t), PAGE_SIZE); 38 --- 354 unchanged lines hidden --- |