Message ID | 1549876849-32680-1-git-send-email-pmorel@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] s390: vsie: Use effective CRYCBD.31 to check CRYCBD validity | expand |
On Mon, 11 Feb 2019 10:20:49 +0100 Pierre Morel <pmorel@linux.ibm.com> wrote: > 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 facility.76 is present in the s/even/even if/ > 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> > --- > arch/s390/kvm/vsie.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c > index a153257..d62fa14 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) > scb_s->crycbd = 0; > > apie_h = vcpu->arch.sie_block->eca & ECA_APIE; > - if (!apie_h && !key_msk) > + if (!apie_h && (!key_msk || fmt_o == CRYCB_FORMAT0)) > return 0; > > if (!crycb_addr) Acked-by: Cornelia Huck <cohuck@redhat.com>
On 11/02/2019 10:47, Cornelia Huck wrote: > On Mon, 11 Feb 2019 10:20:49 +0100 > Pierre Morel <pmorel@linux.ibm.com> wrote: > >> 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 facility.76 is present in the > > s/even/even if/ yes > >> 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> >> --- >> arch/s390/kvm/vsie.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c >> index a153257..d62fa14 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) >> scb_s->crycbd = 0; >> >> apie_h = vcpu->arch.sie_block->eca & ECA_APIE; >> - if (!apie_h && !key_msk) >> + if (!apie_h && (!key_msk || fmt_o == CRYCB_FORMAT0)) >> return 0; >> >> if (!crycb_addr) > > Acked-by: Cornelia Huck <cohuck@redhat.com> > Thanks Pierre
On 11.02.2019 10:20, Pierre Morel wrote: > 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 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> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> thanks applied. > --- > arch/s390/kvm/vsie.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c > index a153257..d62fa14 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) > scb_s->crycbd = 0; > > apie_h = vcpu->arch.sie_block->eca & ECA_APIE; > - if (!apie_h && !key_msk) > + if (!apie_h && (!key_msk || fmt_o == CRYCB_FORMAT0)) > return 0; > > if (!crycb_addr) >
diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c index a153257..d62fa14 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) scb_s->crycbd = 0; apie_h = vcpu->arch.sie_block->eca & ECA_APIE; - if (!apie_h && !key_msk) + if (!apie_h && (!key_msk || fmt_o == CRYCB_FORMAT0)) return 0; if (!crycb_addr)