mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
x86/paravirt: Avoid needless paravirt step clearing page table entries
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
This commit is contained in:
parent
e1ac3e66d3
commit
7c9f80cb76
1 changed files with 6 additions and 6 deletions
|
@ -448,7 +448,7 @@ static inline pudval_t pud_val(pud_t pud)
|
||||||
|
|
||||||
static inline void pud_clear(pud_t *pudp)
|
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)
|
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)
|
} while (0)
|
||||||
|
|
||||||
#define pgd_clear(pgdp) do { \
|
#define pgd_clear(pgdp) do { \
|
||||||
if (pgtable_l5_enabled()) \
|
if (pgtable_l5_enabled()) \
|
||||||
set_pgd(pgdp, __pgd(0)); \
|
set_pgd(pgdp, native_make_pgd(0)); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#endif /* CONFIG_PGTABLE_LEVELS == 5 */
|
#endif /* CONFIG_PGTABLE_LEVELS == 5 */
|
||||||
|
|
||||||
static inline void p4d_clear(p4d_t *p4dp)
|
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)
|
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,
|
static inline void pte_clear(struct mm_struct *mm, unsigned long addr,
|
||||||
pte_t *ptep)
|
pte_t *ptep)
|
||||||
{
|
{
|
||||||
set_pte(ptep, __pte(0));
|
set_pte(ptep, native_make_pte(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void pmd_clear(pmd_t *pmdp)
|
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
|
#define __HAVE_ARCH_START_CONTEXT_SWITCH
|
||||||
|
|
Loading…
Reference in a new issue