x86/paravirt: Remove set_pte_at() pv-op

On x86 set_pte_at() is now always falling back to set_pte(). So instead
of having this fallback after the paravirt maze just drop the
set_pte_at paravirt operation and let set_pte_at() use the set_pte()
function directly.

Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20200815100641.26362-6-jgross@suse.com

authored by Juergen Gross and committed by Ingo Molnar e1ac3e66 76fdb041

+4 -42
+1 -7
arch/x86/include/asm/paravirt.h
··· 412 PVOP_VCALL2(mmu.set_pte, ptep, pte.pte); 413 } 414 415 - static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, 416 - pte_t *ptep, pte_t pte) 417 - { 418 - PVOP_VCALL4(mmu.set_pte_at, mm, addr, ptep, pte.pte); 419 - } 420 - 421 static inline void set_pmd(pmd_t *pmdp, pmd_t pmd) 422 { 423 PVOP_VCALL2(mmu.set_pmd, pmdp, native_pmd_val(pmd)); ··· 504 static inline void pte_clear(struct mm_struct *mm, unsigned long addr, 505 pte_t *ptep) 506 { 507 - set_pte_at(mm, addr, ptep, __pte(0)); 508 } 509 510 static inline void pmd_clear(pmd_t *pmdp)
··· 412 PVOP_VCALL2(mmu.set_pte, ptep, pte.pte); 413 } 414 415 static inline void set_pmd(pmd_t *pmdp, pmd_t pmd) 416 { 417 PVOP_VCALL2(mmu.set_pmd, pmdp, native_pmd_val(pmd)); ··· 510 static inline void pte_clear(struct mm_struct *mm, unsigned long addr, 511 pte_t *ptep) 512 { 513 + set_pte(ptep, __pte(0)); 514 } 515 516 static inline void pmd_clear(pmd_t *pmdp)
-2
arch/x86/include/asm/paravirt_types.h
··· 242 243 /* Pagetable manipulation functions */ 244 void (*set_pte)(pte_t *ptep, pte_t pteval); 245 - void (*set_pte_at)(struct mm_struct *mm, unsigned long addr, 246 - pte_t *ptep, pte_t pteval); 247 void (*set_pmd)(pmd_t *pmdp, pmd_t pmdval); 248 249 pte_t (*ptep_modify_prot_start)(struct vm_area_struct *vma, unsigned long addr,
··· 242 243 /* Pagetable manipulation functions */ 244 void (*set_pte)(pte_t *ptep, pte_t pteval); 245 void (*set_pmd)(pmd_t *pmdp, pmd_t pmdval); 246 247 pte_t (*ptep_modify_prot_start)(struct vm_area_struct *vma, unsigned long addr,
+3 -4
arch/x86/include/asm/pgtable.h
··· 63 #include <asm/paravirt.h> 64 #else /* !CONFIG_PARAVIRT_XXL */ 65 #define set_pte(ptep, pte) native_set_pte(ptep, pte) 66 - #define set_pte_at(mm, addr, ptep, pte) native_set_pte_at(mm, addr, ptep, pte) 67 68 #define set_pte_atomic(ptep, pte) \ 69 native_set_pte_atomic(ptep, pte) ··· 1032 return res; 1033 } 1034 1035 - static inline void native_set_pte_at(struct mm_struct *mm, unsigned long addr, 1036 - pte_t *ptep , pte_t pte) 1037 { 1038 - native_set_pte(ptep, pte); 1039 } 1040 1041 static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
··· 63 #include <asm/paravirt.h> 64 #else /* !CONFIG_PARAVIRT_XXL */ 65 #define set_pte(ptep, pte) native_set_pte(ptep, pte) 66 67 #define set_pte_atomic(ptep, pte) \ 68 native_set_pte_atomic(ptep, pte) ··· 1033 return res; 1034 } 1035 1036 + static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, 1037 + pte_t *ptep, pte_t pte) 1038 { 1039 + set_pte(ptep, pte); 1040 } 1041 1042 static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
-1
arch/x86/kernel/paravirt.c
··· 360 .mmu.release_p4d = paravirt_nop, 361 362 .mmu.set_pte = native_set_pte, 363 - .mmu.set_pte_at = native_set_pte_at, 364 .mmu.set_pmd = native_set_pmd, 365 366 .mmu.ptep_modify_prot_start = __ptep_modify_prot_start,
··· 360 .mmu.release_p4d = paravirt_nop, 361 362 .mmu.set_pte = native_set_pte, 363 .mmu.set_pmd = native_set_pmd, 364 365 .mmu.ptep_modify_prot_start = __ptep_modify_prot_start,
-8
arch/x86/xen/mmu_pv.c
··· 285 __xen_set_pte(ptep, pteval); 286 } 287 288 - static void xen_set_pte_at(struct mm_struct *mm, unsigned long addr, 289 - pte_t *ptep, pte_t pteval) 290 - { 291 - trace_xen_mmu_set_pte_at(mm, addr, ptep, pteval); 292 - __xen_set_pte(ptep, pteval); 293 - } 294 - 295 pte_t xen_ptep_modify_prot_start(struct vm_area_struct *vma, 296 unsigned long addr, pte_t *ptep) 297 { ··· 2098 .release_pmd = xen_release_pmd_init, 2099 2100 .set_pte = xen_set_pte_init, 2101 - .set_pte_at = xen_set_pte_at, 2102 .set_pmd = xen_set_pmd_hyper, 2103 2104 .ptep_modify_prot_start = __ptep_modify_prot_start,
··· 285 __xen_set_pte(ptep, pteval); 286 } 287 288 pte_t xen_ptep_modify_prot_start(struct vm_area_struct *vma, 289 unsigned long addr, pte_t *ptep) 290 { ··· 2105 .release_pmd = xen_release_pmd_init, 2106 2107 .set_pte = xen_set_pte_init, 2108 .set_pmd = xen_set_pmd_hyper, 2109 2110 .ptep_modify_prot_start = __ptep_modify_prot_start,
-20
include/trace/events/xen.h
··· 153 154 DEFINE_XEN_MMU_SET_PTE(xen_mmu_set_pte); 155 156 - TRACE_EVENT(xen_mmu_set_pte_at, 157 - TP_PROTO(struct mm_struct *mm, unsigned long addr, 158 - pte_t *ptep, pte_t pteval), 159 - TP_ARGS(mm, addr, ptep, pteval), 160 - TP_STRUCT__entry( 161 - __field(struct mm_struct *, mm) 162 - __field(unsigned long, addr) 163 - __field(pte_t *, ptep) 164 - __field(pteval_t, pteval) 165 - ), 166 - TP_fast_assign(__entry->mm = mm; 167 - __entry->addr = addr; 168 - __entry->ptep = ptep; 169 - __entry->pteval = pteval.pte), 170 - TP_printk("mm %p addr %lx ptep %p pteval %0*llx (raw %0*llx)", 171 - __entry->mm, __entry->addr, __entry->ptep, 172 - (int)sizeof(pteval_t) * 2, (unsigned long long)pte_val(native_make_pte(__entry->pteval)), 173 - (int)sizeof(pteval_t) * 2, (unsigned long long)__entry->pteval) 174 - ); 175 - 176 TRACE_DEFINE_SIZEOF(pmdval_t); 177 178 TRACE_EVENT(xen_mmu_set_pmd,
··· 153 154 DEFINE_XEN_MMU_SET_PTE(xen_mmu_set_pte); 155 156 TRACE_DEFINE_SIZEOF(pmdval_t); 157 158 TRACE_EVENT(xen_mmu_set_pmd,