tree: https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git 5.1-fixes head: 4c6b77dd0036d42268cc1e6c5ab5a9e9d98cae65 commit: 4c6b77dd0036d42268cc1e6c5ab5a9e9d98cae65 [6/6] KVM: arm/arm64: Fix handling of stage2 huge mappings config: arm-axm55xx_defconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout 4c6b77dd0036d42268cc1e6c5ab5a9e9d98cae65 # save the attached .config to linux build tree GCC_VERSION=7.2.0 make.cross ARCH=arm All errors (new ones prefixed by >>): arch/arm/kvm/../../../virt/kvm/arm/mmu.c: In function 'stage2_set_pud_huge': >> arch/arm/kvm/../../../virt/kvm/arm/mmu.c:1154:35: error: 'S2_PUD_MASK' undeclared (first use in this function); did you mean 'S2_PMD_MASK'? unmap_stage2_range(kvm, addr & S2_PUD_MASK, S2_PUD_SIZE); ^~~~~~~~~~~ S2_PMD_MASK arch/arm/kvm/../../../virt/kvm/arm/mmu.c:1154:35: note: each undeclared identifier is reported only once for each function it appears in >> arch/arm/kvm/../../../virt/kvm/arm/mmu.c:1154:48: error: 'S2_PUD_SIZE' undeclared (first use in this function); did you mean 'S2_PMD_SIZE'? unmap_stage2_range(kvm, addr & S2_PUD_MASK, S2_PUD_SIZE); ^~~~~~~~~~~ S2_PMD_SIZE In file included from arch/arm/include/asm/bug.h:60:0, from include/linux/bug.h:5, from include/linux/mmdebug.h:5, from include/linux/mm.h:9, from include/linux/mman.h:5, from arch/arm/kvm/../../../virt/kvm/arm/mmu.c:19: >> arch/arm/kvm/../../../virt/kvm/arm/mmu.c:1157:17: error: implicit declaration of function 'pud_pfn'; did you mean 'pmd_pfn'? [-Werror=implicit-function-declaration] WARN_ON_ONCE(pud_pfn(old_pud) != pud_pfn(*new_pudp)); ^ include/asm-generic/bug.h:148:27: note: in definition of macro 'WARN_ON_ONCE' int __ret_warn_once = !!(condition); \ ^~~~~~~~~ cc1: some warnings being treated as errors vim +1154 arch/arm/kvm/../../../virt/kvm/arm/mmu.c 1128 1129 static int stage2_set_pud_huge(struct kvm *kvm, struct kvm_mmu_memory_cache *cache, 1130 phys_addr_t addr, const pud_t *new_pudp) 1131 { 1132 pud_t *pudp, old_pud; 1133 1134 retry: 1135 pudp = stage2_get_pud(kvm, cache, addr); 1136 VM_BUG_ON(!pudp); 1137 1138 old_pud = *pudp; 1139 1140 /* 1141 * A large number of vcpus faulting on the same stage 2 entry, 1142 * can lead to a refault due to the stage2_pud_clear()/tlb_flush(). 1143 * Skip updating the page tables if there is no change. 1144 */ 1145 if (pud_val(old_pud) == pud_val(*new_pudp)) 1146 return 0; 1147 1148 if (stage2_pud_present(kvm, old_pud)) { 1149 /* 1150 * If we already have table level mapping for this block, unmap 1151 * the range for this block and retry. 1152 */ 1153 if (!stage2_pud_huge(kvm, old_pud)) { > 1154 unmap_stage2_range(kvm, addr & S2_PUD_MASK, S2_PUD_SIZE); 1155 goto retry; 1156 } else { > 1157 WARN_ON_ONCE(pud_pfn(old_pud) != pud_pfn(*new_pudp)); 1158 stage2_pud_clear(kvm, pudp); 1159 kvm_tlb_flush_vmid_ipa(kvm, addr); 1160 } 1161 } else { 1162 get_page(virt_to_page(pudp)); 1163 } 1164 1165 kvm_set_pud(pudp, *new_pudp); 1166 return 0; 1167 } 1168 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip
_______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm