diff options
author | Dan Williams <dan.j.williams@intel.com> | 2018-12-04 13:37:21 -0800 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2018-12-05 09:03:06 +0100 |
commit | 0a9fe8ca844d43f3f547f0e166122b6048121c8f (patch) | |
tree | 2560d196ef1166c200d2be0a6509a9098b005a66 /include/asm-generic/pgtable-nop4d.h | |
parent | 4369deaa2f022ef92da45a0e7eec8a4a52e8e8a4 (diff) | |
download | linux-stable-0a9fe8ca844d43f3f547f0e166122b6048121c8f.tar.gz linux-stable-0a9fe8ca844d43f3f547f0e166122b6048121c8f.tar.bz2 linux-stable-0a9fe8ca844d43f3f547f0e166122b6048121c8f.zip |
x86/mm: Validate kernel_physical_mapping_init() PTE population
The usage of __flush_tlb_all() in the kernel_physical_mapping_init()
path is not necessary. In general flushing the TLB is not required when
updating an entry from the !present state. However, to give confidence
in the future removal of TLB flushing in this path, use the new
set_pte_safe() family of helpers to assert that the !present assumption
is true in this path.
[ mingo: Minor readability edits. ]
Suggested-by: Peter Zijlstra <peterz@infradead.org>
Suggested-by: Dave Hansen <dave.hansen@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Rik van Riel <riel@surriel.com>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/154395944177.32119.8524957429632012270.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include/asm-generic/pgtable-nop4d.h')
-rw-r--r-- | include/asm-generic/pgtable-nop4d.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/asm-generic/pgtable-nop4d.h b/include/asm-generic/pgtable-nop4d.h index 04cb913797bc..aebab905e6cd 100644 --- a/include/asm-generic/pgtable-nop4d.h +++ b/include/asm-generic/pgtable-nop4d.h @@ -26,6 +26,7 @@ static inline void pgd_clear(pgd_t *pgd) { } #define p4d_ERROR(p4d) (pgd_ERROR((p4d).pgd)) #define pgd_populate(mm, pgd, p4d) do { } while (0) +#define pgd_populate_safe(mm, pgd, p4d) do { } while (0) /* * (p4ds are folded into pgds so this doesn't get actually called, * but the define is needed for a generic inline function.) |