diff options
| -rw-r--r-- | Documentation/x86/tlb.txt | 2 | ||||
| -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 | ||||
| -rw-r--r-- | drivers/firmware/efi/vars.c | 8 |
5 files changed, 16 insertions, 8 deletions
diff --git a/Documentation/x86/tlb.txt b/Documentation/x86/tlb.txt index 2b3a82e69151..39d172326703 100644 --- a/Documentation/x86/tlb.txt +++ b/Documentation/x86/tlb.txt | |||
| @@ -35,7 +35,7 @@ invlpg instruction (or instructions _near_ it) show up high in | |||
| 35 | profiles. If you believe that individual invalidations being | 35 | profiles. If you believe that individual invalidations being |
| 36 | called too often, you can lower the tunable: | 36 | called too often, you can lower the tunable: |
| 37 | 37 | ||
| 38 | /sys/debug/kernel/x86/tlb_single_page_flush_ceiling | 38 | /sys/kernel/debug/x86/tlb_single_page_flush_ceiling |
| 39 | 39 | ||
| 40 | This will cause us to do the global flush for more cases. | 40 | This will cause us to do the global flush for more cases. |
| 41 | Lowering it to 0 will disable the use of the individual flushes. | 41 | Lowering it to 0 will disable the use of the individual flushes. |
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) |
diff --git a/drivers/firmware/efi/vars.c b/drivers/firmware/efi/vars.c index f0a43646a2f3..5abe943e3404 100644 --- a/drivers/firmware/efi/vars.c +++ b/drivers/firmware/efi/vars.c | |||
| @@ -481,7 +481,7 @@ EXPORT_SYMBOL_GPL(efivar_entry_remove); | |||
| 481 | */ | 481 | */ |
| 482 | static void efivar_entry_list_del_unlock(struct efivar_entry *entry) | 482 | static void efivar_entry_list_del_unlock(struct efivar_entry *entry) |
| 483 | { | 483 | { |
| 484 | WARN_ON(!spin_is_locked(&__efivars->lock)); | 484 | lockdep_assert_held(&__efivars->lock); |
| 485 | 485 | ||
| 486 | list_del(&entry->list); | 486 | list_del(&entry->list); |
| 487 | spin_unlock_irq(&__efivars->lock); | 487 | spin_unlock_irq(&__efivars->lock); |
| @@ -507,7 +507,7 @@ int __efivar_entry_delete(struct efivar_entry *entry) | |||
| 507 | const struct efivar_operations *ops = __efivars->ops; | 507 | const struct efivar_operations *ops = __efivars->ops; |
| 508 | efi_status_t status; | 508 | efi_status_t status; |
| 509 | 509 | ||
| 510 | WARN_ON(!spin_is_locked(&__efivars->lock)); | 510 | lockdep_assert_held(&__efivars->lock); |
| 511 | 511 | ||
| 512 | status = ops->set_variable(entry->var.VariableName, | 512 | status = ops->set_variable(entry->var.VariableName, |
| 513 | &entry->var.VendorGuid, | 513 | &entry->var.VendorGuid, |
| @@ -667,7 +667,7 @@ struct efivar_entry *efivar_entry_find(efi_char16_t *name, efi_guid_t guid, | |||
| 667 | int strsize1, strsize2; | 667 | int strsize1, strsize2; |
| 668 | bool found = false; | 668 | bool found = false; |
| 669 | 669 | ||
| 670 | WARN_ON(!spin_is_locked(&__efivars->lock)); | 670 | lockdep_assert_held(&__efivars->lock); |
| 671 | 671 | ||
| 672 | list_for_each_entry_safe(entry, n, head, list) { | 672 | list_for_each_entry_safe(entry, n, head, list) { |
| 673 | strsize1 = ucs2_strsize(name, 1024); | 673 | strsize1 = ucs2_strsize(name, 1024); |
| @@ -739,7 +739,7 @@ int __efivar_entry_get(struct efivar_entry *entry, u32 *attributes, | |||
| 739 | const struct efivar_operations *ops = __efivars->ops; | 739 | const struct efivar_operations *ops = __efivars->ops; |
| 740 | efi_status_t status; | 740 | efi_status_t status; |
| 741 | 741 | ||
| 742 | WARN_ON(!spin_is_locked(&__efivars->lock)); | 742 | lockdep_assert_held(&__efivars->lock); |
| 743 | 743 | ||
| 744 | status = ops->get_variable(entry->var.VariableName, | 744 | status = ops->get_variable(entry->var.VariableName, |
| 745 | &entry->var.VendorGuid, | 745 | &entry->var.VendorGuid, |
