tree: https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git kvm-arm64/nv-wip-v5.0-rc1 head: 688c386ca096f2c1f2eee386697586c88df5d5bc commit: 4d8a6cc25603cc92352d861970f1a678411af963 [46/75] KVM: arm64: nv: Move last_vcpu_ran to be per s2 mmu 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 4d8a6cc25603cc92352d861970f1a678411af963 # save the attached .config to linux build tree GCC_VERSION=7.2.0 make.cross ARCH=arm
All error/warnings (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:2: 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:354: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:354: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:354: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:354: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:354: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:354: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:354: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:354: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:354: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:354: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:361:39: error: 'struct
kvm_vcpu_arch' has no member named 'hw_mmu'
u64 vttbr = kvm_get_vttbr(vcpu->arch.hw_mmu);
^
arch/arm/kvm/../../../virt/kvm/arm/arm.c: In function 'kvm_arch_vcpu_put':
arch/arm/kvm/../../../virt/kvm/arm/arm.c:389:2: 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
'kvm_arch_vcpu_ioctl_run':
arch/arm/kvm/../../../virt/kvm/arm/arm.c:672: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:721: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:956: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:956:15: note: each undeclared
identifier is reported only once for each function it appears in
arch/arm/kvm/../../../virt/kvm/arm/arm.c:959: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))
^~~~~~~~~~~~~~~~~~~
cpu_have_feature
arch/arm/kvm/../../../virt/kvm/arm/arm.c:959:28: error:
'ARM64_HAS_NESTED_VIRT' undeclared (first use in this function); did you mean
'KVM_ARM_VCPU_NESTED_VIRT'?
if (!cpus_have_const_cap(ARM64_HAS_NESTED_VIRT))
^~~~~~~~~~~~~~~~~~~~~
KVM_ARM_VCPU_NESTED_VIRT
arch/arm/kvm/../../../virt/kvm/arm/arm.c:962:9: error: implicit declaration
of function 'kvm_vcpu_init_nested'; did you mean 'kvm_vcpu_initialized'?
[-Werror=implicit-function-declaration]
ret = kvm_vcpu_init_nested(vcpu);
^~~~~~~~~~~~~~~~~~~~
kvm_vcpu_initialized
arch/arm/kvm/../../../virt/kvm/arm/arm.c: In function
'kvm_arch_vcpu_ioctl_vcpu_init':
arch/arm/kvm/../../../virt/kvm/arm/arm.c:986:3: error: implicit declaration
of function 'kvm_nested_s2_clear'; did you mean '__nodes_clear'?
[-Werror=implicit-function-declaration]
kvm_nested_s2_clear(vcpu->kvm);
^~~~~~~~~~~~~~~~~~~
__nodes_clear
cc1: some warnings being treated as errors
vim +125 arch/arm/kvm/../../../virt/kvm/arm/arm.c
> 23 #include <linux/kvm_host.h>
24 #include <linux/list.h>
25 #include <linux/module.h>
26 #include <linux/vmalloc.h>
27 #include <linux/fs.h>
28 #include <linux/mman.h>
29 #include <linux/sched.h>
30 #include <linux/kvm.h>
31 #include <linux/kvm_irqfd.h>
32 #include <linux/irqbypass.h>
33 #include <linux/sched/stat.h>
34 #include <trace/events/kvm.h>
35 #include <kvm/arm_pmu.h>
36 #include <kvm/arm_psci.h>
37
38 #define CREATE_TRACE_POINTS
39 #include "trace.h"
40
41 #include <linux/uaccess.h>
42 #include <asm/ptrace.h>
43 #include <asm/mman.h>
44 #include <asm/tlbflush.h>
45 #include <asm/cacheflush.h>
46 #include <asm/cpufeature.h>
47 #include <asm/virt.h>
48 #include <asm/kvm_arm.h>
49 #include <asm/kvm_asm.h>
50 #include <asm/kvm_mmu.h>
51 #include <asm/kvm_emulate.h>
52 #include <asm/kvm_coproc.h>
53 #include <asm/sections.h>
54
55 #ifdef REQUIRES_VIRT
56 __asm__(".arch_extension virt");
57 #endif
58
59 DEFINE_PER_CPU(kvm_cpu_context_t, kvm_host_cpu_state);
60 static DEFINE_PER_CPU(unsigned long, kvm_arm_hyp_stack_page);
61
62 /* Per-CPU variable containing the currently running vcpu. */
63 static DEFINE_PER_CPU(struct kvm_vcpu *, kvm_arm_running_vcpu);
64
65 /* The VMID used in the VTTBR */
66 static atomic64_t kvm_vmid_gen = ATOMIC64_INIT(1);
67 static u32 kvm_next_vmid;
68 static DEFINE_SPINLOCK(kvm_vmid_lock);
69
70 static bool vgic_present;
71
72 static DEFINE_PER_CPU(unsigned char, kvm_arm_hardware_enabled);
73
74 static void kvm_arm_set_running_vcpu(struct kvm_vcpu *vcpu)
75 {
76 __this_cpu_write(kvm_arm_running_vcpu, vcpu);
77 }
78
79 DEFINE_STATIC_KEY_FALSE(userspace_irqchip_in_use);
80
81 /**
82 * kvm_arm_get_running_vcpu - get the vcpu running on the current CPU.
83 * Must be called from non-preemptible context
84 */
85 struct kvm_vcpu *kvm_arm_get_running_vcpu(void)
86 {
87 return __this_cpu_read(kvm_arm_running_vcpu);
88 }
89
90 /**
91 * kvm_arm_get_running_vcpus - get the per-CPU array of currently
running vcpus.
92 */
93 struct kvm_vcpu * __percpu *kvm_get_running_vcpus(void)
94 {
95 return &kvm_arm_running_vcpu;
96 }
97
98 int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu)
99 {
100 return kvm_vcpu_exiting_guest_mode(vcpu) == IN_GUEST_MODE;
101 }
102
103 int kvm_arch_hardware_setup(void)
104 {
105 return 0;
106 }
107
108 void kvm_arch_check_processor_compat(void *rtn)
109 {
110 *(int *)rtn = 0;
111 }
112
113 /**
114 * kvm_arch_init_vm - initializes a VM data structure
115 * @kvm: pointer to the KVM struct
116 */
117 int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)
118 {
119 int ret;
120
121 ret = kvm_arm_setup_stage2(kvm, type);
122 if (ret)
123 return ret;
124
> 125 ret = kvm_init_stage2_mmu(kvm, &kvm->arch.mmu);
126 if (ret)
127 return ret;
128
129 kvm->arch.nested_mmus = NULL;
130 kvm->arch.nested_mmus_size = 0;
131
132 ret = create_hyp_mappings(kvm, kvm + 1, PAGE_HYP);
133 if (ret)
134 goto out_free_stage2_pgd;
135
136 kvm_vgic_early_init(kvm);
137
138 /* The maximum number of VCPUs is limited by the host's GIC
model */
139 kvm->arch.max_vcpus = vgic_present ?
140 kvm_vgic_get_max_vcpus() :
KVM_MAX_VCPUS;
141
142 return ret;
143 out_free_stage2_pgd:
144 kvm_free_stage2_pgd(&kvm->arch.mmu);
145 return ret;
146 }
147
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip
_______________________________________________ kvmarm mailing list [email protected] https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
