2022-02-15 14:36:26

by Thomas Huth

[permalink] [raw]
Subject: [PATCH] selftests: kvm: Check whether SIDA memop fails for normal guests

Commit 2c212e1baedc ("KVM: s390: Return error on SIDA memop on normal
guest") fixed the behavior of the SIDA memops for normal guests. It
would be nice to have a way to test whether the current kernel has
the fix applied or not. Thus add a check to the KVM selftests for
these two memops.

Signed-off-by: Thomas Huth <[email protected]>
---
tools/testing/selftests/kvm/s390x/memop.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)

diff --git a/tools/testing/selftests/kvm/s390x/memop.c b/tools/testing/selftests/kvm/s390x/memop.c
index 9f49ead380ab..d19c3ffdea3f 100644
--- a/tools/testing/selftests/kvm/s390x/memop.c
+++ b/tools/testing/selftests/kvm/s390x/memop.c
@@ -160,6 +160,21 @@ int main(int argc, char *argv[])
run->psw_mask &= ~(3UL << (63 - 17)); /* Disable AR mode */
vcpu_run(vm, VCPU_ID); /* Run to sync new state */

+ /* Check that the SIDA calls are rejected for non-protected guests */
+ ksmo.gaddr = 0;
+ ksmo.flags = 0;
+ ksmo.size = 8;
+ ksmo.op = KVM_S390_MEMOP_SIDA_READ;
+ ksmo.buf = (uintptr_t)mem1;
+ ksmo.sida_offset = 0x1c0;
+ rv = _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo);
+ TEST_ASSERT(rv == -1 && errno == EINVAL,
+ "ioctl does not reject SIDA_READ in non-protected mode");
+ ksmo.op = KVM_S390_MEMOP_SIDA_WRITE;
+ rv = _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo);
+ TEST_ASSERT(rv == -1 && errno == EINVAL,
+ "ioctl does not reject SIDA_WRITE in non-protected mode");
+
kvm_vm_free(vm);

return 0;
--
2.27.0


2022-02-15 14:48:30

by Christian Borntraeger

[permalink] [raw]
Subject: Re: [PATCH] selftests: kvm: Check whether SIDA memop fails for normal guests

Am 15.02.22 um 08:48 schrieb Thomas Huth:
> Commit 2c212e1baedc ("KVM: s390: Return error on SIDA memop on normal
> guest") fixed the behavior of the SIDA memops for normal guests. It
> would be nice to have a way to test whether the current kernel has
> the fix applied or not. Thus add a check to the KVM selftests for
> these two memops.
>
> Signed-off-by: Thomas Huth <[email protected]>

Thanks, applied.
> ---
> tools/testing/selftests/kvm/s390x/memop.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/tools/testing/selftests/kvm/s390x/memop.c b/tools/testing/selftests/kvm/s390x/memop.c
> index 9f49ead380ab..d19c3ffdea3f 100644
> --- a/tools/testing/selftests/kvm/s390x/memop.c
> +++ b/tools/testing/selftests/kvm/s390x/memop.c
> @@ -160,6 +160,21 @@ int main(int argc, char *argv[])
> run->psw_mask &= ~(3UL << (63 - 17)); /* Disable AR mode */
> vcpu_run(vm, VCPU_ID); /* Run to sync new state */
>
> + /* Check that the SIDA calls are rejected for non-protected guests */
> + ksmo.gaddr = 0;
> + ksmo.flags = 0;
> + ksmo.size = 8;
> + ksmo.op = KVM_S390_MEMOP_SIDA_READ;
> + ksmo.buf = (uintptr_t)mem1;
> + ksmo.sida_offset = 0x1c0;
> + rv = _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo);
> + TEST_ASSERT(rv == -1 && errno == EINVAL,
> + "ioctl does not reject SIDA_READ in non-protected mode");
> + ksmo.op = KVM_S390_MEMOP_SIDA_WRITE;
> + rv = _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo);
> + TEST_ASSERT(rv == -1 && errno == EINVAL,
> + "ioctl does not reject SIDA_WRITE in non-protected mode");
> +
> kvm_vm_free(vm);
>
> return 0;

2022-02-15 17:53:42

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH] selftests: kvm: Check whether SIDA memop fails for normal guests

On 2/15/22 12:48 AM, Thomas Huth wrote:
> Commit 2c212e1baedc ("KVM: s390: Return error on SIDA memop on normal
> guest") fixed the behavior of the SIDA memops for normal guests. It
> would be nice to have a way to test whether the current kernel has
> the fix applied or not. Thus add a check to the KVM selftests for
> these two memops.
>
> Signed-off-by: Thomas Huth <[email protected]>
> ---
> tools/testing/selftests/kvm/s390x/memop.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/tools/testing/selftests/kvm/s390x/memop.c b/tools/testing/selftests/kvm/s390x/memop.c
> index 9f49ead380ab..d19c3ffdea3f 100644
> --- a/tools/testing/selftests/kvm/s390x/memop.c
> +++ b/tools/testing/selftests/kvm/s390x/memop.c
> @@ -160,6 +160,21 @@ int main(int argc, char *argv[])
> run->psw_mask &= ~(3UL << (63 - 17)); /* Disable AR mode */
> vcpu_run(vm, VCPU_ID); /* Run to sync new state */
>
> + /* Check that the SIDA calls are rejected for non-protected guests */
> + ksmo.gaddr = 0;
> + ksmo.flags = 0;
> + ksmo.size = 8;
> + ksmo.op = KVM_S390_MEMOP_SIDA_READ;
> + ksmo.buf = (uintptr_t)mem1;
> + ksmo.sida_offset = 0x1c0;
> + rv = _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo);
> + TEST_ASSERT(rv == -1 && errno == EINVAL,
> + "ioctl does not reject SIDA_READ in non-protected mode");

Printing what passed would be a good addition to understand the tests that
get run and expected to pass.

> + ksmo.op = KVM_S390_MEMOP_SIDA_WRITE;
> + rv = _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo);
> + TEST_ASSERT(rv == -1 && errno == EINVAL,
> + "ioctl does not reject SIDA_WRITE in non-protected mode");
> +

Same here.

> kvm_vm_free(vm);
>
> return 0;
>

Something to consider in a follow-on patch and future changes to these tests.

Reviewed-by: Shuah Khan <[email protected]>

thanks,
-- Shuah

2022-02-21 16:43:21

by Thomas Huth

[permalink] [raw]
Subject: Re: [PATCH] selftests: kvm: Check whether SIDA memop fails for normal guests

On 15/02/2022 16.25, Shuah Khan wrote:
> On 2/15/22 12:48 AM, Thomas Huth wrote:
>> Commit 2c212e1baedc ("KVM: s390: Return error on SIDA memop on normal
>> guest") fixed the behavior of the SIDA memops for normal guests. It
>> would be nice to have a way to test whether the current kernel has
>> the fix applied or not. Thus add a check to the KVM selftests for
>> these two memops.
>>
>> Signed-off-by: Thomas Huth <[email protected]>
>> ---
>>   tools/testing/selftests/kvm/s390x/memop.c | 15 +++++++++++++++
>>   1 file changed, 15 insertions(+)
>>
>> diff --git a/tools/testing/selftests/kvm/s390x/memop.c
>> b/tools/testing/selftests/kvm/s390x/memop.c
>> index 9f49ead380ab..d19c3ffdea3f 100644
>> --- a/tools/testing/selftests/kvm/s390x/memop.c
>> +++ b/tools/testing/selftests/kvm/s390x/memop.c
>> @@ -160,6 +160,21 @@ int main(int argc, char *argv[])
>>       run->psw_mask &= ~(3UL << (63 - 17));   /* Disable AR mode */
>>       vcpu_run(vm, VCPU_ID);                  /* Run to sync new state */
>> +    /* Check that the SIDA calls are rejected for non-protected guests */
>> +    ksmo.gaddr = 0;
>> +    ksmo.flags = 0;
>> +    ksmo.size = 8;
>> +    ksmo.op = KVM_S390_MEMOP_SIDA_READ;
>> +    ksmo.buf = (uintptr_t)mem1;
>> +    ksmo.sida_offset = 0x1c0;
>> +    rv = _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo);
>> +    TEST_ASSERT(rv == -1 && errno == EINVAL,
>> +            "ioctl does not reject SIDA_READ in non-protected mode");
>
> Printing what passed would be a good addition to understand the tests that
> get run and expected to pass.

Yes, I agree ... I'll add that for a follow-up patch to my TODO list.

>> +    ksmo.op = KVM_S390_MEMOP_SIDA_WRITE;
>> +    rv = _vcpu_ioctl(vm, VCPU_ID, KVM_S390_MEM_OP, &ksmo);
>> +    TEST_ASSERT(rv == -1 && errno == EINVAL,
>> +            "ioctl does not reject SIDA_WRITE in non-protected mode");
>> +
>
> Same here.
>
>>       kvm_vm_free(vm);
>>       return 0;
>>
>
> Something to consider in a follow-on patch and future changes to these tests.
>
> Reviewed-by: Shuah Khan <[email protected]>

Thanks!

Thomas