diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-24 19:17:41 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-24 19:17:41 -0400 |
commit | 7be141d0554921751db103b54e9f794956aa4f65 (patch) | |
tree | b4355211d0000cfac547f1357104e62c96f3ac14 /arch | |
parent | 44744bb344abe032b387d361209038d2956e8c75 (diff) | |
parent | 80b304fd00e8b667775ff791121b61ecd7cd0c03 (diff) |
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Ingo Molnar:
"A couple of EFI fixes, plus misc fixes all around the map"
* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
efi/arm64: Store Runtime Services revision
firmware: Do not use WARN_ON(!spin_is_locked())
x86_32, entry: Clean up sysenter_badsys declaration
x86/doc: Fix the 'tlb_single_page_flush_ceiling' sysconfig path
x86/mm: Fix sparse 'tlb_single_page_flush_ceiling' warning and make the variable read-mostly
x86/mm: Fix RCU splat from new TLB tracepoints
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm64/kernel/efi.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/entry_32.S | 2 | ||||
-rw-r--r-- | arch/x86/mm/tlb.c | 10 |
3 files changed, 11 insertions, 3 deletions
diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c index 24f0c6fb61d8..03aaa99e1ea0 100644 --- a/arch/arm64/kernel/efi.c +++ b/arch/arm64/kernel/efi.c | |||
@@ -465,6 +465,8 @@ static int __init arm64_enter_virtual_mode(void) | |||
465 | efi_native_runtime_setup(); | 465 | efi_native_runtime_setup(); |
466 | set_bit(EFI_RUNTIME_SERVICES, &efi.flags); | 466 | set_bit(EFI_RUNTIME_SERVICES, &efi.flags); |
467 | 467 | ||
468 | efi.runtime_version = efi.systab->hdr.revision; | ||
469 | |||
468 | return 0; | 470 | return 0; |
469 | 471 | ||
470 | err_unmap: | 472 | err_unmap: |
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index 47c410d99f5d..4b0e1dfa2226 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
@@ -683,7 +683,7 @@ END(syscall_badsys) | |||
683 | sysenter_badsys: | 683 | sysenter_badsys: |
684 | movl $-ENOSYS,%eax | 684 | movl $-ENOSYS,%eax |
685 | jmp sysenter_after_call | 685 | jmp sysenter_after_call |
686 | END(syscall_badsys) | 686 | END(sysenter_badsys) |
687 | CFI_ENDPROC | 687 | CFI_ENDPROC |
688 | 688 | ||
689 | .macro FIXUP_ESPFIX_STACK | 689 | .macro FIXUP_ESPFIX_STACK |
diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c index 1fe33987de02..ee61c36d64f8 100644 --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c | |||
@@ -49,7 +49,13 @@ void leave_mm(int cpu) | |||
49 | if (cpumask_test_cpu(cpu, mm_cpumask(active_mm))) { | 49 | if (cpumask_test_cpu(cpu, mm_cpumask(active_mm))) { |
50 | cpumask_clear_cpu(cpu, mm_cpumask(active_mm)); | 50 | cpumask_clear_cpu(cpu, mm_cpumask(active_mm)); |
51 | load_cr3(swapper_pg_dir); | 51 | load_cr3(swapper_pg_dir); |
52 | trace_tlb_flush(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL); | 52 | /* |
53 | * This gets called in the idle path where RCU | ||
54 | * functions differently. Tracing normally | ||
55 | * uses RCU, so we have to call the tracepoint | ||
56 | * specially here. | ||
57 | */ | ||
58 | trace_tlb_flush_rcuidle(TLB_FLUSH_ON_TASK_SWITCH, TLB_FLUSH_ALL); | ||
53 | } | 59 | } |
54 | } | 60 | } |
55 | EXPORT_SYMBOL_GPL(leave_mm); | 61 | EXPORT_SYMBOL_GPL(leave_mm); |
@@ -174,7 +180,7 @@ void flush_tlb_current_task(void) | |||
174 | * | 180 | * |
175 | * This is in units of pages. | 181 | * This is in units of pages. |
176 | */ | 182 | */ |
177 | unsigned long tlb_single_page_flush_ceiling = 33; | 183 | static unsigned long tlb_single_page_flush_ceiling __read_mostly = 33; |
178 | 184 | ||
179 | void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start, | 185 | void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start, |
180 | unsigned long end, unsigned long vmflag) | 186 | unsigned long end, unsigned long vmflag) |