aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Morel <pmorel@linux.ibm.com>2019-02-11 04:20:49 -0500
committerChristian Borntraeger <borntraeger@de.ibm.com>2019-02-11 07:19:20 -0500
commitb10bd9a256aec504c14a7c9b6fccb6301ecf290a (patch)
treeca2c0bbc5b1750d152e64314ecc46e47142a1aa7
parentbfeffd155283772bbe78c6a05dec7c0128ee500c (diff)
s390: vsie: Use effective CRYCBD.31 to check CRYCBD validity
When facility.76 MSAX3 is present for the guest we must issue a validity interception if the CRYCBD is not valid. The bit CRYCBD.31 is an effective field and tested at each guest level and has for effect to mask the facility.76 It follows that if CRYCBD.31 is clear and AP is not in use we do not have to test the CRYCBD validatity even if facility.76 is present in the host. Fixes: 6ee74098201b ("KVM: s390: vsie: allow CRYCB FORMAT-0") Cc: stable@vger.kernel.org Signed-off-by: Pierre Morel <pmorel@linux.ibm.com> Reported-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Acked-by: David Hildenbrand <david@redhat.com> Acked-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> Message-Id: <1549876849-32680-1-git-send-email-pmorel@linux.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-rw-r--r--arch/s390/kvm/vsie.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c
index a153257bf7d9..d62fa148558b 100644
--- a/arch/s390/kvm/vsie.c
+++ b/arch/s390/kvm/vsie.c
@@ -297,7 +297,7 @@ static int shadow_crycb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
297 scb_s->crycbd = 0; 297 scb_s->crycbd = 0;
298 298
299 apie_h = vcpu->arch.sie_block->eca & ECA_APIE; 299 apie_h = vcpu->arch.sie_block->eca & ECA_APIE;
300 if (!apie_h && !key_msk) 300 if (!apie_h && (!key_msk || fmt_o == CRYCB_FORMAT0))
301 return 0; 301 return 0;
302 302
303 if (!crycb_addr) 303 if (!crycb_addr)