diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-08-12 23:46:24 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-08-12 23:46:24 -0400 |
commit | 06e727d2a5d9d889fabad35223ad77205a9bebb9 (patch) | |
tree | 2a2d4ec9ed95c95f044c8d69e87ab47195a1d2ed /arch/x86/xen | |
parent | e68ff9cd15552e46e0f993eace25af0947b1222d (diff) | |
parent | 3ae36655b97a03fa1decf72f04078ef945647c1a (diff) |
Merge branch 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-tip
* 'x86-vdso-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-tip:
x86-64: Rework vsyscall emulation and add vsyscall= parameter
x86-64: Wire up getcpu syscall
x86: Remove unnecessary compile flag tweaks for vsyscall code
x86-64: Add vsyscall:emulate_vsyscall trace event
x86-64: Add user_64bit_mode paravirt op
x86-64, xen: Enable the vvar mapping
x86-64: Work around gold bug 13023
x86-64: Move the "user" vsyscall segment out of the data segment.
x86-64: Pad vDSO to a page boundary
Diffstat (limited to 'arch/x86/xen')
-rw-r--r-- | arch/x86/xen/enlighten.c | 4 | ||||
-rw-r--r-- | arch/x86/xen/mmu.c | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 974a528458a0..e2345af01af0 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -951,6 +951,10 @@ static const struct pv_info xen_info __initconst = { | |||
951 | .paravirt_enabled = 1, | 951 | .paravirt_enabled = 1, |
952 | .shared_kernel_pmd = 0, | 952 | .shared_kernel_pmd = 0, |
953 | 953 | ||
954 | #ifdef CONFIG_X86_64 | ||
955 | .extra_user_64bit_cs = FLAT_USER_CS64, | ||
956 | #endif | ||
957 | |||
954 | .name = "Xen", | 958 | .name = "Xen", |
955 | }; | 959 | }; |
956 | 960 | ||
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index f987bde77c49..8cce339db5e7 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
@@ -1916,6 +1916,7 @@ static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot) | |||
1916 | # endif | 1916 | # endif |
1917 | #else | 1917 | #else |
1918 | case VSYSCALL_LAST_PAGE ... VSYSCALL_FIRST_PAGE: | 1918 | case VSYSCALL_LAST_PAGE ... VSYSCALL_FIRST_PAGE: |
1919 | case VVAR_PAGE: | ||
1919 | #endif | 1920 | #endif |
1920 | case FIX_TEXT_POKE0: | 1921 | case FIX_TEXT_POKE0: |
1921 | case FIX_TEXT_POKE1: | 1922 | case FIX_TEXT_POKE1: |
@@ -1956,7 +1957,8 @@ static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot) | |||
1956 | #ifdef CONFIG_X86_64 | 1957 | #ifdef CONFIG_X86_64 |
1957 | /* Replicate changes to map the vsyscall page into the user | 1958 | /* Replicate changes to map the vsyscall page into the user |
1958 | pagetable vsyscall mapping. */ | 1959 | pagetable vsyscall mapping. */ |
1959 | if (idx >= VSYSCALL_LAST_PAGE && idx <= VSYSCALL_FIRST_PAGE) { | 1960 | if ((idx >= VSYSCALL_LAST_PAGE && idx <= VSYSCALL_FIRST_PAGE) || |
1961 | idx == VVAR_PAGE) { | ||
1960 | unsigned long vaddr = __fix_to_virt(idx); | 1962 | unsigned long vaddr = __fix_to_virt(idx); |
1961 | set_pte_vaddr_pud(level3_user_vsyscall, vaddr, pte); | 1963 | set_pte_vaddr_pud(level3_user_vsyscall, vaddr, pte); |
1962 | } | 1964 | } |