tree: https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git kvm-arm64/nv-wip-v5.0-rc1 head: 688c386ca096f2c1f2eee386697586c88df5d5bc commit: d9adf257e12e66ab30056a8804b70a24ce0dded3 [68/75] fixup! KVM: arm/arm64: nv: Support multiple nested stage 2 mmu structures 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 d9adf257e12e66ab30056a8804b70a24ce0dded3 # 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/arm.c: In function 'kvm_arch_init_vm': arch/arm/kvm/../../../virt/kvm/arm/arm.c:125:8: error: implicit declaration of function 'kvm_init_stage2_mmu'; did you mean 'kvm_free_stage2_pgd'? [-Werror=implicit-function-declaration] ret = kvm_init_stage2_mmu(kvm, &kvm->arch.mmu); ^~~~~~~~~~~~~~~~~~~ kvm_free_stage2_pgd arch/arm/kvm/../../../virt/kvm/arm/arm.c:125:43: error: 'struct kvm_arch' has no member named 'mmu' ret = kvm_init_stage2_mmu(kvm, &kvm->arch.mmu); ^ arch/arm/kvm/../../../virt/kvm/arm/arm.c:129:11: error: 'struct kvm_arch' has no member named 'nested_mmus' kvm->arch.nested_mmus = NULL; ^ arch/arm/kvm/../../../virt/kvm/arm/arm.c:130:11: error: 'struct kvm_arch' has no member named 'nested_mmus_size' kvm->arch.nested_mmus_size = 0; ^ arch/arm/kvm/../../../virt/kvm/arm/arm.c:144:32: error: 'struct kvm_arch' has no member named 'mmu' kvm_free_stage2_pgd(&kvm->arch.mmu); ^ arch/arm/kvm/../../../virt/kvm/arm/arm.c: In function 'kvm_arch_vcpu_init': arch/arm/kvm/../../../virt/kvm/arm/arm.c:343:12: error: 'struct kvm_vcpu_arch' has no member named 'hw_mmu' vcpu->arch.hw_mmu = &vcpu->kvm->arch.mmu; ^ arch/arm/kvm/../../../virt/kvm/arm/arm.c:343:38: error: 'struct kvm_arch' has no member named 'mmu' vcpu->arch.hw_mmu = &vcpu->kvm->arch.mmu; ^ arch/arm/kvm/../../../virt/kvm/arm/arm.c: In function 'kvm_arch_vcpu_load': >> arch/arm/kvm/../../../virt/kvm/arm/arm.c:352:6: error: implicit declaration of function 'nested_virt_in_use'; did you mean 'isa_virt_to_bus'? [-Werror=implicit-function-declaration] if (nested_virt_in_use(vcpu)) ^~~~~~~~~~~~~~~~~~ isa_virt_to_bus arch/arm/kvm/../../../virt/kvm/arm/arm.c:353:3: error: implicit declaration of function 'kvm_vcpu_load_hw_mmu'; did you mean 'kvm_vcpu_load_sysregs'? [-Werror=implicit-function-declaration] kvm_vcpu_load_hw_mmu(vcpu); ^~~~~~~~~~~~~~~~~~~~ kvm_vcpu_load_sysregs In file included from include/asm-generic/percpu.h:7:0, from arch/arm/include/asm/percpu.h:50, from include/linux/percpu.h:13, from include/linux/context_tracking_state.h:5, from include/linux/vtime.h:5, from include/linux/hardirq.h:8, from include/linux/kvm_host.h:10, from arch/arm/kvm/../../../virt/kvm/arm/arm.c:23: arch/arm/kvm/../../../virt/kvm/arm/arm.c:355:36: error: 'struct kvm_vcpu_arch' has no member named 'hw_mmu' last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); ^ include/linux/percpu-defs.h:219:47: note: in definition of macro '__verify_pcpu_ptr' const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL; \ ^~~ arch/arm/kvm/../../../virt/kvm/arm/arm.c:355:13: note: in expansion of macro 'this_cpu_ptr' last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); ^~~~~~~~~~~~ In file included from include/linux/compiler_types.h:68:0, from <command-line>:0: arch/arm/kvm/../../../virt/kvm/arm/arm.c:355:36: error: 'struct kvm_vcpu_arch' has no member named 'hw_mmu' last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); ^ include/linux/compiler-gcc.h:57:34: note: in definition of macro 'RELOC_HIDE' __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ ^~~ include/linux/percpu-defs.h:249:2: note: in expansion of macro 'SHIFT_PERCPU_PTR' SHIFT_PERCPU_PTR(ptr, my_cpu_offset); \ ^~~~~~~~~~~~~~~~ arch/arm/kvm/../../../virt/kvm/arm/arm.c:355:13: note: in expansion of macro 'this_cpu_ptr' last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); ^~~~~~~~~~~~ arch/arm/kvm/../../../virt/kvm/arm/arm.c:355:36: error: 'struct kvm_vcpu_arch' has no member named 'hw_mmu' last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); ^ include/linux/compiler-gcc.h:57:34: note: in definition of macro 'RELOC_HIDE' __asm__ ("" : "=r"(__ptr) : "0"(ptr)); \ ^~~ include/linux/percpu-defs.h:249:2: note: in expansion of macro 'SHIFT_PERCPU_PTR' SHIFT_PERCPU_PTR(ptr, my_cpu_offset); \ ^~~~~~~~~~~~~~~~ arch/arm/kvm/../../../virt/kvm/arm/arm.c:355:13: note: in expansion of macro 'this_cpu_ptr' last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); ^~~~~~~~~~~~ arch/arm/kvm/../../../virt/kvm/arm/arm.c:355:36: error: 'struct kvm_vcpu_arch' has no member named 'hw_mmu' last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); ^ include/linux/compiler-gcc.h:58:10: note: in definition of macro 'RELOC_HIDE' (typeof(ptr)) (__ptr + (off)); \ ^~~ include/linux/percpu-defs.h:249:2: note: in expansion of macro 'SHIFT_PERCPU_PTR' SHIFT_PERCPU_PTR(ptr, my_cpu_offset); \ ^~~~~~~~~~~~~~~~ arch/arm/kvm/../../../virt/kvm/arm/arm.c:355:13: note: in expansion of macro 'this_cpu_ptr' last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); ^~~~~~~~~~~~ arch/arm/kvm/../../../virt/kvm/arm/arm.c:355:36: error: 'struct kvm_vcpu_arch' has no member named 'hw_mmu' last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); ^ include/linux/compiler-gcc.h:58:10: note: in definition of macro 'RELOC_HIDE' (typeof(ptr)) (__ptr + (off)); \ ^~~ include/linux/percpu-defs.h:249:2: note: in expansion of macro 'SHIFT_PERCPU_PTR' SHIFT_PERCPU_PTR(ptr, my_cpu_offset); \ ^~~~~~~~~~~~~~~~ arch/arm/kvm/../../../virt/kvm/arm/arm.c:355:13: note: in expansion of macro 'this_cpu_ptr' last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); ^~~~~~~~~~~~ arch/arm/kvm/../../../virt/kvm/arm/arm.c: In function 'kvm_arch_vcpu_put': arch/arm/kvm/../../../virt/kvm/arm/arm.c:388:3: error: implicit declaration of function 'kvm_vcpu_put_hw_mmu'; did you mean 'kvm_vcpu_dabt_is_cm'? [-Werror=implicit-function-declaration] kvm_vcpu_put_hw_mmu(vcpu); ^~~~~~~~~~~~~~~~~~~ kvm_vcpu_dabt_is_cm arch/arm/kvm/../../../virt/kvm/arm/arm.c: In function 'check_vcpu_requests': arch/arm/kvm/../../../virt/kvm/arm/arm.c:626:25: error: 'KVM_REQ_GUEST_HYP_IRQ_PENDING' undeclared (first use in this function); did you mean 'KVM_REQ_IRQ_PENDING'? if (kvm_check_request(KVM_REQ_GUEST_HYP_IRQ_PENDING, vcpu)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ KVM_REQ_IRQ_PENDING arch/arm/kvm/../../../virt/kvm/arm/arm.c:626:25: note: each undeclared identifier is reported only once for each function it appears in arch/arm/kvm/../../../virt/kvm/arm/arm.c: In function 'kvm_arch_vcpu_ioctl_run': arch/arm/kvm/../../../virt/kvm/arm/arm.c:676:26: error: 'struct kvm_vcpu_arch' has no member named 'hw_mmu' update_vmid(&vcpu->arch.hw_mmu->vmid); ^ arch/arm/kvm/../../../virt/kvm/arm/arm.c:723:48: error: 'struct kvm_vcpu_arch' has no member named 'hw_mmu' if (ret <= 0 || need_new_vmid_gen(&vcpu->arch.hw_mmu->vmid) || ^ arch/arm/kvm/../../../virt/kvm/arm/arm.c: In function 'kvm_vcpu_set_target': arch/arm/kvm/../../../virt/kvm/arm/arm.c:958:15: error: 'KVM_ARM_VCPU_NESTED_VIRT' undeclared (first use in this function); did you mean 'KVM_ARM_VCPU_TIMER_CTRL'? if (test_bit(KVM_ARM_VCPU_NESTED_VIRT, vcpu->arch.features)) { ^~~~~~~~~~~~~~~~~~~~~~~~ KVM_ARM_VCPU_TIMER_CTRL arch/arm/kvm/../../../virt/kvm/arm/arm.c:961:8: error: implicit declaration of function 'cpus_have_const_cap'; did you mean 'cpu_have_feature'? [-Werror=implicit-function-declaration] if (!cpus_have_const_cap(ARM64_HAS_NESTED_VIRT)) ^~~~~~~~~~~~~~~~~~~ vim +352 arch/arm/kvm/../../../virt/kvm/arm/arm.c 331 332 int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) 333 { 334 /* Force users to call KVM_ARM_VCPU_INIT */ 335 vcpu->arch.target = -1; 336 bitmap_zero(vcpu->arch.features, KVM_VCPU_MAX_FEATURES); 337 338 /* Set up the timer */ 339 kvm_timer_vcpu_init(vcpu); 340 341 kvm_arm_reset_debug_ptr(vcpu); 342 > 343 vcpu->arch.hw_mmu = &vcpu->kvm->arch.mmu; 344 345 return kvm_vgic_vcpu_init(vcpu); 346 } 347 348 void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) 349 { 350 int *last_ran; 351 > 352 if (nested_virt_in_use(vcpu)) 353 kvm_vcpu_load_hw_mmu(vcpu); 354 355 last_ran = this_cpu_ptr(vcpu->arch.hw_mmu->last_vcpu_ran); 356 357 /* 358 * We might get preempted before the vCPU actually runs, but 359 * over-invalidation doesn't affect correctness. 360 */ 361 if (*last_ran != vcpu->vcpu_id) { 362 kvm_call_hyp(__kvm_tlb_flush_local_vmid, vcpu); 363 *last_ran = vcpu->vcpu_id; 364 } 365 366 vcpu->cpu = cpu; 367 vcpu->arch.host_cpu_context = this_cpu_ptr(&kvm_host_cpu_state); 368 369 kvm_arm_set_running_vcpu(vcpu); 370 kvm_timer_vcpu_load(vcpu); 371 kvm_vgic_load(vcpu); 372 kvm_vcpu_load_sysregs(vcpu); 373 kvm_arch_vcpu_load_fp(vcpu); 374 375 if (single_task_running()) 376 vcpu_clear_wfe_traps(vcpu); 377 else 378 vcpu_set_wfe_traps(vcpu); 379 } 380 --- 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