Skip to content

Commit cbc0daa

Browse files
xiaobo55xavpatel
authored andcommitted
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 <[email protected]> Signed-off-by: Haibo Xu <[email protected]> Reviewed-by: Andrew Jones <[email protected]> Signed-off-by: Anup Patel <[email protected]>
1 parent c474677 commit cbc0daa

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

tools/testing/selftests/kvm/get-reg-list.c

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ static void run_test(struct vcpu_reg_list *c)
163163
{
164164
int new_regs = 0, missing_regs = 0, i, n;
165165
int failed_get = 0, failed_set = 0, failed_reject = 0;
166+
int skipped_set = 0;
166167
struct kvm_vcpu *vcpu;
167168
struct kvm_vm *vm;
168169
struct vcpu_reg_sublist *s;
@@ -216,7 +217,7 @@ static void run_test(struct vcpu_reg_list *c)
216217
.id = reg_list->reg[i],
217218
.addr = (__u64)&addr,
218219
};
219-
bool reject_reg = false;
220+
bool reject_reg = false, skip_reg = false;
220221
int ret;
221222

222223
ret = __vcpu_get_reg(vcpu, reg_list->reg[i], &addr);
@@ -227,8 +228,8 @@ static void run_test(struct vcpu_reg_list *c)
227228
++failed_get;
228229
}
229230

230-
/* rejects_set registers are rejected after KVM_ARM_VCPU_FINALIZE */
231231
for_each_sublist(c, s) {
232+
/* rejects_set registers are rejected for set operation */
232233
if (s->rejects_set && find_reg(s->rejects_set, s->rejects_set_n, reg.id)) {
233234
reject_reg = true;
234235
ret = __vcpu_ioctl(vcpu, KVM_SET_ONE_REG, &reg);
@@ -240,9 +241,16 @@ static void run_test(struct vcpu_reg_list *c)
240241
}
241242
break;
242243
}
244+
245+
/* skips_set registers are skipped for set operation */
246+
if (s->skips_set && find_reg(s->skips_set, s->skips_set_n, reg.id)) {
247+
skip_reg = true;
248+
++skipped_set;
249+
break;
250+
}
243251
}
244252

245-
if (!reject_reg) {
253+
if (!reject_reg && !skip_reg) {
246254
ret = __vcpu_ioctl(vcpu, KVM_SET_ONE_REG, &reg);
247255
if (ret) {
248256
printf("%s: Failed to set ", config_name(c));
@@ -287,9 +295,9 @@ static void run_test(struct vcpu_reg_list *c)
287295
}
288296

289297
TEST_ASSERT(!missing_regs && !failed_get && !failed_set && !failed_reject,
290-
"%s: There are %d missing registers; "
291-
"%d registers failed get; %d registers failed set; %d registers failed reject",
292-
config_name(c), missing_regs, failed_get, failed_set, failed_reject);
298+
"%s: There are %d missing registers; %d registers failed get; "
299+
"%d registers failed set; %d registers failed reject; %d registers skipped set",
300+
config_name(c), missing_regs, failed_get, failed_set, failed_reject, skipped_set);
293301

294302
pr_info("%s: PASS\n", config_name(c));
295303
blessed_n = 0;

tools/testing/selftests/kvm/include/kvm_util_base.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ struct vcpu_reg_sublist {
134134
__u64 regs_n;
135135
__u64 *rejects_set;
136136
__u64 rejects_set_n;
137+
__u64 *skips_set;
138+
__u64 skips_set_n;
137139
};
138140

139141
struct vcpu_reg_list {

0 commit comments

Comments
 (0)