On 04.09.19 10:52, Thomas Huth wrote: > Now that we disallow invalid bits in kvm_valid_regs and kvm_dirty_regs > on s390x, too, we should also check this condition in the selftests. > The code has been taken from the x86-version of the sync_regs_test. > > Reviewed-by: Janosch Frank <frankja@xxxxxxxxxxxxx> > Reviewed-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> > Reviewed-by: Cornelia Huck <cohuck@xxxxxxxxxx> > Signed-off-by: Thomas Huth <thuth@xxxxxxxxxx> > --- > .../selftests/kvm/s390x/sync_regs_test.c | 30 +++++++++++++++++++ > 1 file changed, 30 insertions(+) > > diff --git a/tools/testing/selftests/kvm/s390x/sync_regs_test.c b/tools/testing/selftests/kvm/s390x/sync_regs_test.c > index bbc93094519b..d5290b4ad636 100644 > --- a/tools/testing/selftests/kvm/s390x/sync_regs_test.c > +++ b/tools/testing/selftests/kvm/s390x/sync_regs_test.c > @@ -85,6 +85,36 @@ int main(int argc, char *argv[]) > > run = vcpu_state(vm, VCPU_ID); > > + /* Request reading invalid register set from VCPU. */ > + run->kvm_valid_regs = INVALID_SYNC_FIELD; > + rv = _vcpu_run(vm, VCPU_ID); > + TEST_ASSERT(rv < 0 && errno == EINVAL, > + "Invalid kvm_valid_regs did not cause expected KVM_RUN error: %d\n", > + rv); > + vcpu_state(vm, VCPU_ID)->kvm_valid_regs = 0; > + > + run->kvm_valid_regs = INVALID_SYNC_FIELD | TEST_SYNC_FIELDS; > + rv = _vcpu_run(vm, VCPU_ID); > + TEST_ASSERT(rv < 0 && errno == EINVAL, > + "Invalid kvm_valid_regs did not cause expected KVM_RUN error: %d\n", > + rv); > + vcpu_state(vm, VCPU_ID)->kvm_valid_regs = 0; > + > + /* Request setting invalid register set into VCPU. */ > + run->kvm_dirty_regs = INVALID_SYNC_FIELD; > + rv = _vcpu_run(vm, VCPU_ID); > + TEST_ASSERT(rv < 0 && errno == EINVAL, > + "Invalid kvm_dirty_regs did not cause expected KVM_RUN error: %d\n", > + rv); > + vcpu_state(vm, VCPU_ID)->kvm_dirty_regs = 0; > + > + run->kvm_dirty_regs = INVALID_SYNC_FIELD | TEST_SYNC_FIELDS; > + rv = _vcpu_run(vm, VCPU_ID); > + TEST_ASSERT(rv < 0 && errno == EINVAL, > + "Invalid kvm_dirty_regs did not cause expected KVM_RUN error: %d\n", > + rv); > + vcpu_state(vm, VCPU_ID)->kvm_dirty_regs = 0; > + > /* Request and verify all valid register sets. */ > run->kvm_valid_regs = TEST_SYNC_FIELDS; > rv = _vcpu_run(vm, VCPU_ID); > Looks sane to me. -- Thanks, David / dhildenb