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

KVM: selftests: Add skip_set facility to get_reg_list test

Add new skips_set members to vcpu_reg_sublist so as to skip
set operation on some registers.

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
cbc0daa6 c4746771

+16 -6
+14 -6
tools/testing/selftests/kvm/get-reg-list.c
··· 163 163 { 164 164 int new_regs = 0, missing_regs = 0, i, n; 165 165 int failed_get = 0, failed_set = 0, failed_reject = 0; 166 + int skipped_set = 0; 166 167 struct kvm_vcpu *vcpu; 167 168 struct kvm_vm *vm; 168 169 struct vcpu_reg_sublist *s; ··· 217 216 .id = reg_list->reg[i], 218 217 .addr = (__u64)&addr, 219 218 }; 220 - bool reject_reg = false; 219 + bool reject_reg = false, skip_reg = false; 221 220 int ret; 222 221 223 222 ret = __vcpu_get_reg(vcpu, reg_list->reg[i], &addr); ··· 228 227 ++failed_get; 229 228 } 230 229 231 - /* rejects_set registers are rejected after KVM_ARM_VCPU_FINALIZE */ 232 230 for_each_sublist(c, s) { 231 + /* rejects_set registers are rejected for set operation */ 233 232 if (s->rejects_set && find_reg(s->rejects_set, s->rejects_set_n, reg.id)) { 234 233 reject_reg = true; 235 234 ret = __vcpu_ioctl(vcpu, KVM_SET_ONE_REG, &reg); ··· 241 240 } 242 241 break; 243 242 } 243 + 244 + /* skips_set registers are skipped for set operation */ 245 + if (s->skips_set && find_reg(s->skips_set, s->skips_set_n, reg.id)) { 246 + skip_reg = true; 247 + ++skipped_set; 248 + break; 249 + } 244 250 } 245 251 246 - if (!reject_reg) { 252 + if (!reject_reg && !skip_reg) { 247 253 ret = __vcpu_ioctl(vcpu, KVM_SET_ONE_REG, &reg); 248 254 if (ret) { 249 255 printf("%s: Failed to set ", config_name(c)); ··· 295 287 } 296 288 297 289 TEST_ASSERT(!missing_regs && !failed_get && !failed_set && !failed_reject, 298 - "%s: There are %d missing registers; " 299 - "%d registers failed get; %d registers failed set; %d registers failed reject", 300 - config_name(c), missing_regs, failed_get, failed_set, failed_reject); 290 + "%s: There are %d missing registers; %d registers failed get; " 291 + "%d registers failed set; %d registers failed reject; %d registers skipped set", 292 + config_name(c), missing_regs, failed_get, failed_set, failed_reject, skipped_set); 301 293 302 294 pr_info("%s: PASS\n", config_name(c)); 303 295 blessed_n = 0;
+2
tools/testing/selftests/kvm/include/kvm_util_base.h
··· 134 134 __u64 regs_n; 135 135 __u64 *rejects_set; 136 136 __u64 rejects_set_n; 137 + __u64 *skips_set; 138 + __u64 skips_set_n; 137 139 }; 138 140 139 141 struct vcpu_reg_list {