]> git.baikalelectronics.ru Git - kernel.git/commitdiff
x86/paravirt: Avoid needless paravirt step clearing page table entries
authorJuergen Gross <jgross@suse.com>
Sat, 15 Aug 2020 10:06:41 +0000 (12:06 +0200)
committerIngo Molnar <mingo@kernel.org>
Sat, 15 Aug 2020 11:52:12 +0000 (13:52 +0200)
pte_clear() et al are based on two paravirt steps today: one step to
create a page table entry with all zeroes, and one step to write this
entry value.

Drop the first step as it is completely useless.

Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20200815100641.26362-7-jgross@suse.com
arch/x86/include/asm/paravirt.h

index f0464b88ea1e1ba03522a93c1ce766474fe9c6ed..d25cc6830e895b3142f69684e5758fce2ef84a90 100644 (file)
@@ -448,7 +448,7 @@ static inline pudval_t pud_val(pud_t pud)
 
 static inline void pud_clear(pud_t *pudp)
 {
-       set_pud(pudp, __pud(0));
+       set_pud(pudp, native_make_pud(0));
 }
 
 static inline void set_p4d(p4d_t *p4dp, p4d_t p4d)
@@ -485,15 +485,15 @@ static inline void __set_pgd(pgd_t *pgdp, pgd_t pgd)
 } while (0)
 
 #define pgd_clear(pgdp) do {                                           \
-       if (pgtable_l5_enabled())                                               \
-               set_pgd(pgdp, __pgd(0));                                \
+       if (pgtable_l5_enabled())                                       \
+               set_pgd(pgdp, native_make_pgd(0));                      \
 } while (0)
 
 #endif  /* CONFIG_PGTABLE_LEVELS == 5 */
 
 static inline void p4d_clear(p4d_t *p4dp)
 {
-       set_p4d(p4dp, __p4d(0));
+       set_p4d(p4dp, native_make_p4d(0));
 }
 
 static inline void set_pte_atomic(pte_t *ptep, pte_t pte)
@@ -504,12 +504,12 @@ static inline void set_pte_atomic(pte_t *ptep, pte_t pte)
 static inline void pte_clear(struct mm_struct *mm, unsigned long addr,
                             pte_t *ptep)
 {
-       set_pte(ptep, __pte(0));
+       set_pte(ptep, native_make_pte(0));
 }
 
 static inline void pmd_clear(pmd_t *pmdp)
 {
-       set_pmd(pmdp, __pmd(0));
+       set_pmd(pmdp, native_make_pmd(0));
 }
 
 #define  __HAVE_ARCH_START_CONTEXT_SWITCH