Re: [PATCH v4 22/36] KVM: s390: protvirt: STSI handling

David Hildenbrand
2020-02-24T19:00:56Z

On 24.02.20 12:40, Christian Borntraeger wrote:
> From: Janosch Frank <frankja@linux.ibm.com>
>
> Save response to sidad and disable address checking for protected
> guests.
>
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
> Reviewed-by: Thomas Huth <thuth@redhat.com>
> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
> [borntraeger@de.ibm.com: patch merging, splitting, fixing]
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
> arch/s390/kvm/priv.c | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c
> index ed52ffa8d5d4..69a824f9ef0b 100644
> --- a/arch/s390/kvm/priv.c
> +++ b/arch/s390/kvm/priv.c
> @@ -2,7 +2,7 @@
> /*
> * handling privileged instructions
> *
> - * Copyright IBM Corp. 2008, 2018
> + * Copyright IBM Corp. 2008, 2020
> *
> * Author(s): Carsten Otte <cotte@de.ibm.com>
> * Christian Borntraeger <borntraeger@de.ibm.com>
> @@ -872,7 +872,7 @@ static int handle_stsi(struct kvm_vcpu *vcpu)
>
> operand2 = kvm_s390_get_base_disp_s(vcpu, &ar);
>
> - if (operand2 & 0xfff)
> + if (!kvm_s390_pv_cpu_is_protected(vcpu) && (operand2 & 0xfff))
> return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
>
> switch (fc) {
> @@ -893,8 +893,13 @@ static int handle_stsi(struct kvm_vcpu *vcpu)
> handle_stsi_3_2_2(vcpu, (void *) mem);
> break;
> }
> -
> - rc = write_guest(vcpu, operand2, ar, (void *)mem, PAGE_SIZE);
> + if (kvm_s390_pv_cpu_is_protected(vcpu)) {
> + memcpy((void *)sida_origin(vcpu->arch.sie_block), (void *)mem,
> + PAGE_SIZE);
> + rc = 0;
> + } else {
> + rc = write_guest(vcpu, operand2, ar, (void *)mem, PAGE_SIZE);
> + }
> if (rc) {
> rc = kvm_s390_inject_prog_cond(vcpu, rc);
> goto out;
>

Reviewed-by: David Hildenbrand <david@redhat.com>

--
Thanks,

David / dhildenb