diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-05-02 02:54:56 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-05-02 02:54:56 -0400 |
commit | d3b5d35290d729a2518af00feca867385a1b08fa (patch) | |
tree | 7b56c0863d59bc57f7c7dcf5d5665c56b05f1d1b /arch/x86/entry | |
parent | aa2a4b6569d5b10491b606a86e574dff3852597a (diff) | |
parent | 71389703839ebe9cb426c72d5f0bd549592e583c (diff) |
Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 mm updates from Ingo Molnar:
"The main x86 MM changes in this cycle were:
- continued native kernel PCID support preparation patches to the TLB
flushing code (Andy Lutomirski)
- various fixes related to 32-bit compat syscall returning address
over 4Gb in applications, launched from 64-bit binaries - motivated
by C/R frameworks such as Virtuozzo. (Dmitry Safonov)
- continued Intel 5-level paging enablement: in particular the
conversion of x86 GUP to the generic GUP code. (Kirill A. Shutemov)
- x86/mpx ABI corner case fixes/enhancements (Joerg Roedel)
- ... plus misc updates, fixes and cleanups"
* 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (62 commits)
mm, zone_device: Replace {get, put}_zone_device_page() with a single reference to fix pmem crash
x86/mm: Fix flush_tlb_page() on Xen
x86/mm: Make flush_tlb_mm_range() more predictable
x86/mm: Remove flush_tlb() and flush_tlb_current_task()
x86/vm86/32: Switch to flush_tlb_mm_range() in mark_screen_rdonly()
x86/mm/64: Fix crash in remove_pagetable()
Revert "x86/mm/gup: Switch GUP to the generic get_user_page_fast() implementation"
x86/boot/e820: Remove a redundant self assignment
x86/mm: Fix dump pagetables for 4 levels of page tables
x86/mpx, selftests: Only check bounds-vs-shadow when we keep shadow
x86/mpx: Correctly report do_mpx_bt_fault() failures to user-space
Revert "x86/mm/numa: Remove numa_nodemask_from_meminfo()"
x86/espfix: Add support for 5-level paging
x86/kasan: Extend KASAN to support 5-level paging
x86/mm: Add basic defines/helpers for CONFIG_X86_5LEVEL=y
x86/paravirt: Add 5-level support to the paravirt code
x86/mm: Define virtual memory map for 5-level paging
x86/asm: Remove __VIRTUAL_MASK_SHIFT==47 assert
x86/boot: Detect 5-level paging support
x86/mm/numa: Remove numa_nodemask_from_meminfo()
...
Diffstat (limited to 'arch/x86/entry')
-rw-r--r-- | arch/x86/entry/entry_64.S | 7 | ||||
-rw-r--r-- | arch/x86/entry/vdso/vma.c | 2 |
2 files changed, 3 insertions, 6 deletions
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index d2b2a2948ffe..607d72c4a485 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S | |||
@@ -265,12 +265,9 @@ return_from_SYSCALL_64: | |||
265 | * | 265 | * |
266 | * If width of "canonical tail" ever becomes variable, this will need | 266 | * If width of "canonical tail" ever becomes variable, this will need |
267 | * to be updated to remain correct on both old and new CPUs. | 267 | * to be updated to remain correct on both old and new CPUs. |
268 | * | ||
269 | * Change top 16 bits to be the sign-extension of 47th bit | ||
268 | */ | 270 | */ |
269 | .ifne __VIRTUAL_MASK_SHIFT - 47 | ||
270 | .error "virtual address width changed -- SYSRET checks need update" | ||
271 | .endif | ||
272 | |||
273 | /* Change top 16 bits to be the sign-extension of 47th bit */ | ||
274 | shl $(64 - (__VIRTUAL_MASK_SHIFT+1)), %rcx | 271 | shl $(64 - (__VIRTUAL_MASK_SHIFT+1)), %rcx |
275 | sar $(64 - (__VIRTUAL_MASK_SHIFT+1)), %rcx | 272 | sar $(64 - (__VIRTUAL_MASK_SHIFT+1)), %rcx |
276 | 273 | ||
diff --git a/arch/x86/entry/vdso/vma.c b/arch/x86/entry/vdso/vma.c index faf80fdeeacc..139ad7726e10 100644 --- a/arch/x86/entry/vdso/vma.c +++ b/arch/x86/entry/vdso/vma.c | |||
@@ -361,7 +361,7 @@ static void vgetcpu_cpu_init(void *arg) | |||
361 | d.p = 1; /* Present */ | 361 | d.p = 1; /* Present */ |
362 | d.d = 1; /* 32-bit */ | 362 | d.d = 1; /* 32-bit */ |
363 | 363 | ||
364 | write_gdt_entry(get_cpu_gdt_table(cpu), GDT_ENTRY_PER_CPU, &d, DESCTYPE_S); | 364 | write_gdt_entry(get_cpu_gdt_rw(cpu), GDT_ENTRY_PER_CPU, &d, DESCTYPE_S); |
365 | } | 365 | } |
366 | 366 | ||
367 | static int vgetcpu_online(unsigned int cpu) | 367 | static int vgetcpu_online(unsigned int cpu) |