Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

kvm-arm: Cleanup kvm_* wrappers

Now that we have switched to explicit page table routines,
get rid of the obsolete kvm_* wrappers.

Also, kvm_tlb_flush_vmid_by_ipa is now called only on stage2
page tables, hence get rid of the redundant check.

Cc: Marc Zyngier <marc.zyngier@arm.com>
Acked-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>

authored by

Suzuki K Poulose and committed by
Christoffer Dall
8684e701 7a1c831e

+1 -48
-16
arch/arm/include/asm/kvm_mmu.h
··· 136 136 return (pmd_val(*pmd) & L_PMD_S2_RDWR) == L_PMD_S2_RDONLY; 137 137 } 138 138 139 - 140 - /* Open coded p*d_addr_end that can deal with 64bit addresses */ 141 - #define kvm_pgd_addr_end(addr, end) \ 142 - ({ u64 __boundary = ((addr) + PGDIR_SIZE) & PGDIR_MASK; \ 143 - (__boundary - 1 < (end) - 1)? __boundary: (end); \ 144 - }) 145 - 146 - #define kvm_pud_addr_end(addr,end) (end) 147 - 148 - #define kvm_pmd_addr_end(addr, end) \ 149 - ({ u64 __boundary = ((addr) + PMD_SIZE) & PMD_MASK; \ 150 - (__boundary - 1 < (end) - 1)? __boundary: (end); \ 151 - }) 152 - 153 - #define kvm_pgd_index(addr) pgd_index(addr) 154 - 155 139 static inline bool kvm_page_empty(void *ptr) 156 140 { 157 141 struct page *ptr_page = virt_to_page(ptr);
+1 -8
arch/arm/kvm/mmu.c
··· 66 66 67 67 static void kvm_tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa) 68 68 { 69 - /* 70 - * This function also gets called when dealing with HYP page 71 - * tables. As HYP doesn't have an associated struct kvm (and 72 - * the HYP page tables are fairly static), we don't do 73 - * anything there. 74 - */ 75 - if (kvm) 76 - kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, kvm, ipa); 69 + kvm_call_hyp(__kvm_tlb_flush_vmid_ipa, kvm, ipa); 77 70 } 78 71 79 72 /*
-24
arch/arm64/include/asm/kvm_mmu.h
··· 153 153 return (pmd_val(*pmd) & PMD_S2_RDWR) == PMD_S2_RDONLY; 154 154 } 155 155 156 - 157 - #define kvm_pgd_addr_end(addr, end) pgd_addr_end(addr, end) 158 - #define kvm_pud_addr_end(addr, end) pud_addr_end(addr, end) 159 - #define kvm_pmd_addr_end(addr, end) pmd_addr_end(addr, end) 160 - 161 - #define kvm_pgd_index(addr) (((addr) >> PGDIR_SHIFT) & (PTRS_PER_S2_PGD - 1)) 162 - 163 156 static inline void *kvm_get_hwpgd(struct kvm *kvm) 164 157 { 165 158 pgd_t *pgd = kvm->arch.pgd; ··· 224 231 struct page *ptr_page = virt_to_page(ptr); 225 232 return page_count(ptr_page) == 1; 226 233 } 227 - 228 - #define kvm_pte_table_empty(kvm, ptep) kvm_page_empty(ptep) 229 - 230 - #ifdef __PAGETABLE_PMD_FOLDED 231 - #define kvm_pmd_table_empty(kvm, pmdp) (0) 232 - #else 233 - #define kvm_pmd_table_empty(kvm, pmdp) \ 234 - (kvm_page_empty(pmdp) && (!(kvm) || KVM_PREALLOC_LEVEL < 2)) 235 - #endif 236 - 237 - #ifdef __PAGETABLE_PUD_FOLDED 238 - #define kvm_pud_table_empty(kvm, pudp) (0) 239 - #else 240 - #define kvm_pud_table_empty(kvm, pudp) \ 241 - (kvm_page_empty(pudp) && (!(kvm) || KVM_PREALLOC_LEVEL < 1)) 242 - #endif 243 - 244 234 245 235 #define hyp_pte_table_empty(ptep) kvm_page_empty(ptep) 246 236