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
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;
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
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