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

kvm-arm: Replace kvm_pmd_huge with pmd_thp_or_huge

Both arm and arm64 now provides a helper, pmd_thp_or_huge()
to check if the given pmd represents a huge page. Use that
instead of our own custom check.

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Acked-by: 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
bbb3b6b3 0dbd3b18

+8 -9
+8 -9
arch/arm/kvm/mmu.c
··· 45 45 46 46 #define hyp_pgd_order get_order(PTRS_PER_PGD * sizeof(pgd_t)) 47 47 48 - #define kvm_pmd_huge(_x) (pmd_huge(_x) || pmd_trans_huge(_x)) 49 48 #define kvm_pud_huge(_x) pud_huge(_x) 50 49 51 50 #define KVM_S2PTE_FLAG_IS_IOMAP (1UL << 0) ··· 114 115 */ 115 116 static void stage2_dissolve_pmd(struct kvm *kvm, phys_addr_t addr, pmd_t *pmd) 116 117 { 117 - if (!kvm_pmd_huge(*pmd)) 118 + if (!pmd_thp_or_huge(*pmd)) 118 119 return; 119 120 120 121 pmd_clear(pmd); ··· 176 177 static void clear_pmd_entry(struct kvm *kvm, pmd_t *pmd, phys_addr_t addr) 177 178 { 178 179 pte_t *pte_table = pte_offset_kernel(pmd, 0); 179 - VM_BUG_ON(kvm_pmd_huge(*pmd)); 180 + VM_BUG_ON(pmd_thp_or_huge(*pmd)); 180 181 pmd_clear(pmd); 181 182 kvm_tlb_flush_vmid_ipa(kvm, addr); 182 183 pte_free_kernel(NULL, pte_table); ··· 239 240 do { 240 241 next = kvm_pmd_addr_end(addr, end); 241 242 if (!pmd_none(*pmd)) { 242 - if (kvm_pmd_huge(*pmd)) { 243 + if (pmd_thp_or_huge(*pmd)) { 243 244 pmd_t old_pmd = *pmd; 244 245 245 246 pmd_clear(pmd); ··· 325 326 do { 326 327 next = kvm_pmd_addr_end(addr, end); 327 328 if (!pmd_none(*pmd)) { 328 - if (kvm_pmd_huge(*pmd)) 329 + if (pmd_thp_or_huge(*pmd)) 329 330 kvm_flush_dcache_pmd(*pmd); 330 331 else 331 332 stage2_flush_ptes(kvm, pmd, addr, next); ··· 1049 1050 do { 1050 1051 next = kvm_pmd_addr_end(addr, end); 1051 1052 if (!pmd_none(*pmd)) { 1052 - if (kvm_pmd_huge(*pmd)) { 1053 + if (pmd_thp_or_huge(*pmd)) { 1053 1054 if (!kvm_s2pmd_readonly(pmd)) 1054 1055 kvm_set_s2pmd_readonly(pmd); 1055 1056 } else { ··· 1330 1331 if (!pmd || pmd_none(*pmd)) /* Nothing there */ 1331 1332 goto out; 1332 1333 1333 - if (kvm_pmd_huge(*pmd)) { /* THP, HugeTLB */ 1334 + if (pmd_thp_or_huge(*pmd)) { /* THP, HugeTLB */ 1334 1335 *pmd = pmd_mkyoung(*pmd); 1335 1336 pfn = pmd_pfn(*pmd); 1336 1337 pfn_valid = true; ··· 1554 1555 if (!pmd || pmd_none(*pmd)) /* Nothing there */ 1555 1556 return 0; 1556 1557 1557 - if (kvm_pmd_huge(*pmd)) { /* THP, HugeTLB */ 1558 + if (pmd_thp_or_huge(*pmd)) { /* THP, HugeTLB */ 1558 1559 if (pmd_young(*pmd)) { 1559 1560 *pmd = pmd_mkold(*pmd); 1560 1561 return 1; ··· 1584 1585 if (!pmd || pmd_none(*pmd)) /* Nothing there */ 1585 1586 return 0; 1586 1587 1587 - if (kvm_pmd_huge(*pmd)) /* THP, HugeTLB */ 1588 + if (pmd_thp_or_huge(*pmd)) /* THP, HugeTLB */ 1588 1589 return pmd_young(*pmd); 1589 1590 1590 1591 pte = pte_offset_kernel(pmd, gpa);