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

KVM: arm64: selftests: Move finalize_vcpu back to run_test

No functional changes. Just move the finalize_vcpu call back to
run_test and do weak function trick to prepare for the opration
in riscv.

Suggested-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Haibo Xu <haibo1.xu@intel.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Signed-off-by: Anup Patel <anup@brainfault.org>

authored by

Haibo Xu and committed by
Anup Patel
e8566033 90a6bcbc

+21 -17
+13
tools/testing/selftests/kvm/aarch64/get-reg-list.c
··· 84 84 return err == EPERM; 85 85 } 86 86 87 + void finalize_vcpu(struct kvm_vcpu *vcpu, struct vcpu_reg_list *c) 88 + { 89 + struct vcpu_reg_sublist *s; 90 + int feature; 91 + 92 + for_each_sublist(c, s) { 93 + if (s->finalize) { 94 + feature = s->feature; 95 + vcpu_ioctl(vcpu, KVM_ARM_VCPU_FINALIZE, &feature); 96 + } 97 + } 98 + } 99 + 87 100 #define REG_MASK (KVM_REG_ARCH_MASK | KVM_REG_SIZE_MASK | KVM_REG_ARM_COPROC_MASK) 88 101 89 102 #define CORE_REGS_XX_NR_WORDS 2
+5 -17
tools/testing/selftests/kvm/get-reg-list.c
··· 34 34 extern struct vcpu_reg_list *vcpu_configs[]; 35 35 extern int vcpu_configs_n; 36 36 37 - #define for_each_sublist(c, s) \ 38 - for ((s) = &(c)->sublists[0]; (s)->regs; ++(s)) 39 - 40 37 #define for_each_reg(i) \ 41 38 for ((i) = 0; (i) < reg_list->n; ++(i)) 42 39 ··· 106 109 return true; 107 110 } 108 111 112 + void __weak finalize_vcpu(struct kvm_vcpu *vcpu, struct vcpu_reg_list *c) 113 + { 114 + } 115 + 109 116 #ifdef __aarch64__ 110 117 static void prepare_vcpu_init(struct vcpu_reg_list *c, struct kvm_vcpu_init *init) 111 118 { ··· 120 119 init->features[s->feature / 32] |= 1 << (s->feature % 32); 121 120 } 122 121 123 - static void finalize_vcpu(struct kvm_vcpu *vcpu, struct vcpu_reg_list *c) 124 - { 125 - struct vcpu_reg_sublist *s; 126 - int feature; 127 - 128 - for_each_sublist(c, s) { 129 - if (s->finalize) { 130 - feature = s->feature; 131 - vcpu_ioctl(vcpu, KVM_ARM_VCPU_FINALIZE, &feature); 132 - } 133 - } 134 - } 135 - 136 122 static struct kvm_vcpu *vcpu_config_get_vcpu(struct vcpu_reg_list *c, struct kvm_vm *vm) 137 123 { 138 124 struct kvm_vcpu_init init = { .target = -1, }; ··· 128 140 prepare_vcpu_init(c, &init); 129 141 vcpu = __vm_vcpu_add(vm, 0); 130 142 aarch64_vcpu_setup(vcpu, &init); 131 - finalize_vcpu(vcpu, c); 132 143 133 144 return vcpu; 134 145 } ··· 167 180 168 181 vm = vm_create_barebones(); 169 182 vcpu = vcpu_config_get_vcpu(c, vm); 183 + finalize_vcpu(vcpu, c); 170 184 171 185 reg_list = vcpu_get_reg_list(vcpu); 172 186
+3
tools/testing/selftests/kvm/include/kvm_util_base.h
··· 141 141 struct vcpu_reg_sublist sublists[]; 142 142 }; 143 143 144 + #define for_each_sublist(c, s) \ 145 + for ((s) = &(c)->sublists[0]; (s)->regs; ++(s)) 146 + 144 147 #define kvm_for_each_vcpu(vm, i, vcpu) \ 145 148 for ((i) = 0; (i) <= (vm)->last_vcpu_id; (i)++) \ 146 149 if (!((vcpu) = vm->vcpus[i])) \