* [PATCH v2 1/2] s390/kvm: split kvm_s390_real_to_abs [not found] <20210322140559.500716-1-imbrenda@linux.ibm.com> @ 2021-03-22 14:05 ` Claudio Imbrenda 2021-03-23 15:01 ` Christian Borntraeger 2021-03-22 14:05 ` [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO Claudio Imbrenda 1 sibling, 1 reply; 10+ messages in thread From: Claudio Imbrenda @ 2021-03-22 14:05 UTC (permalink / raw) To: linux-kernel Cc: borntraeger, frankja, david, cohuck, kvm, linux-s390, stable, Thomas Huth A new function _kvm_s390_real_to_abs will apply prefixing to a real address with a given prefix value. The old kvm_s390_real_to_abs becomes now a wrapper around the new function. This is needed to avoid code duplication in vSIE. Cc: stable@vger.kernel.org Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Reviewed-by: David Hildenbrand <david@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> --- arch/s390/kvm/gaccess.h | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/arch/s390/kvm/gaccess.h b/arch/s390/kvm/gaccess.h index daba10f76936..7c72a5e3449f 100644 --- a/arch/s390/kvm/gaccess.h +++ b/arch/s390/kvm/gaccess.h @@ -18,17 +18,14 @@ /** * kvm_s390_real_to_abs - convert guest real address to guest absolute address - * @vcpu - guest virtual cpu + * @prefix - guest prefix * @gra - guest real address * * Returns the guest absolute address that corresponds to the passed guest real - * address @gra of a virtual guest cpu by applying its prefix. + * address @gra of by applying the given prefix. */ -static inline unsigned long kvm_s390_real_to_abs(struct kvm_vcpu *vcpu, - unsigned long gra) +static inline unsigned long _kvm_s390_real_to_abs(u32 prefix, unsigned long gra) { - unsigned long prefix = kvm_s390_get_prefix(vcpu); - if (gra < 2 * PAGE_SIZE) gra += prefix; else if (gra >= prefix && gra < prefix + 2 * PAGE_SIZE) @@ -36,6 +33,20 @@ static inline unsigned long kvm_s390_real_to_abs(struct kvm_vcpu *vcpu, return gra; } +/** + * kvm_s390_real_to_abs - convert guest real address to guest absolute address + * @vcpu - guest virtual cpu + * @gra - guest real address + * + * Returns the guest absolute address that corresponds to the passed guest real + * address @gra of a virtual guest cpu by applying its prefix. + */ +static inline unsigned long kvm_s390_real_to_abs(struct kvm_vcpu *vcpu, + unsigned long gra) +{ + return _kvm_s390_real_to_abs(kvm_s390_get_prefix(vcpu), gra); +} + /** * _kvm_s390_logical_to_effective - convert guest logical to effective address * @psw: psw of the guest -- 2.26.2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/2] s390/kvm: split kvm_s390_real_to_abs 2021-03-22 14:05 ` [PATCH v2 1/2] s390/kvm: split kvm_s390_real_to_abs Claudio Imbrenda @ 2021-03-23 15:01 ` Christian Borntraeger 0 siblings, 0 replies; 10+ messages in thread From: Christian Borntraeger @ 2021-03-23 15:01 UTC (permalink / raw) To: Claudio Imbrenda, linux-kernel Cc: frankja, david, cohuck, kvm, linux-s390, stable, Thomas Huth On 22.03.21 15:05, Claudio Imbrenda wrote: > A new function _kvm_s390_real_to_abs will apply prefixing to a real address > with a given prefix value. > > The old kvm_s390_real_to_abs becomes now a wrapper around the new function. > > This is needed to avoid code duplication in vSIE. > > Cc: stable@vger.kernel.org > Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > Reviewed-by: David Hildenbrand <david@redhat.com> > Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> > --- > arch/s390/kvm/gaccess.h | 23 +++++++++++++++++------ > 1 file changed, 17 insertions(+), 6 deletions(-) > > diff --git a/arch/s390/kvm/gaccess.h b/arch/s390/kvm/gaccess.h > index daba10f76936..7c72a5e3449f 100644 > --- a/arch/s390/kvm/gaccess.h > +++ b/arch/s390/kvm/gaccess.h > @@ -18,17 +18,14 @@ > > /** > * kvm_s390_real_to_abs - convert guest real address to guest absolute address > - * @vcpu - guest virtual cpu > + * @prefix - guest prefix > * @gra - guest real address > * > * Returns the guest absolute address that corresponds to the passed guest real > - * address @gra of a virtual guest cpu by applying its prefix. > + * address @gra of by applying the given prefix. > */ > -static inline unsigned long kvm_s390_real_to_abs(struct kvm_vcpu *vcpu, > - unsigned long gra) > +static inline unsigned long _kvm_s390_real_to_abs(u32 prefix, unsigned long gra) > { > - unsigned long prefix = kvm_s390_get_prefix(vcpu); > - > if (gra < 2 * PAGE_SIZE) > gra += prefix; > else if (gra >= prefix && gra < prefix + 2 * PAGE_SIZE) > @@ -36,6 +33,20 @@ static inline unsigned long kvm_s390_real_to_abs(struct kvm_vcpu *vcpu, > return gra; > } > > +/** > + * kvm_s390_real_to_abs - convert guest real address to guest absolute address > + * @vcpu - guest virtual cpu > + * @gra - guest real address > + * > + * Returns the guest absolute address that corresponds to the passed guest real > + * address @gra of a virtual guest cpu by applying its prefix. > + */ > +static inline unsigned long kvm_s390_real_to_abs(struct kvm_vcpu *vcpu, > + unsigned long gra) > +{ > + return _kvm_s390_real_to_abs(kvm_s390_get_prefix(vcpu), gra); > +} > + > /** > * _kvm_s390_logical_to_effective - convert guest logical to effective address > * @psw: psw of the guest > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO [not found] <20210322140559.500716-1-imbrenda@linux.ibm.com> 2021-03-22 14:05 ` [PATCH v2 1/2] s390/kvm: split kvm_s390_real_to_abs Claudio Imbrenda @ 2021-03-22 14:05 ` Claudio Imbrenda 2021-03-23 10:50 ` David Hildenbrand 2021-03-23 15:07 ` Christian Borntraeger 1 sibling, 2 replies; 10+ messages in thread From: Claudio Imbrenda @ 2021-03-22 14:05 UTC (permalink / raw) To: linux-kernel; +Cc: borntraeger, frankja, david, cohuck, kvm, linux-s390, stable Prefixing needs to be applied to the guest real address to translate it into a guest absolute address. The value of MSO needs to be added to a guest-absolute address in order to obtain the host-virtual. Fixes: 223ea46de9e79 ("s390/kvm: VSIE: correctly handle MVPG when in VSIE") Cc: stable@vger.kernel.org Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Reported-by: Janosch Frank <frankja@linux.ibm.com> --- arch/s390/kvm/vsie.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c index 48aab6290a77..ac86f11e46dc 100644 --- a/arch/s390/kvm/vsie.c +++ b/arch/s390/kvm/vsie.c @@ -1002,7 +1002,7 @@ static u64 vsie_get_register(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) { struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s; - unsigned long pei_dest, pei_src, src, dest, mask; + unsigned long pei_dest, pei_src, dest, src, mask, mso, prefix; u64 *pei_block = &vsie_page->scb_o->mcic; int edat, rc_dest, rc_src; union ctlreg0 cr0; @@ -1010,9 +1010,13 @@ static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) cr0.val = vcpu->arch.sie_block->gcr[0]; edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8); mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK); + mso = scb_s->mso & ~(1UL << 20); + prefix = scb_s->prefix << GUEST_PREFIX_SHIFT; dest = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 16) & mask; + dest = _kvm_s390_real_to_abs(prefix, dest) + mso; src = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 20) & mask; + src = _kvm_s390_real_to_abs(prefix, src) + mso; rc_dest = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, dest, &pei_dest); rc_src = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, src, &pei_src); -- 2.26.2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO 2021-03-22 14:05 ` [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO Claudio Imbrenda @ 2021-03-23 10:50 ` David Hildenbrand 2021-03-23 15:07 ` Christian Borntraeger 1 sibling, 0 replies; 10+ messages in thread From: David Hildenbrand @ 2021-03-23 10:50 UTC (permalink / raw) To: Claudio Imbrenda, linux-kernel Cc: borntraeger, frankja, cohuck, kvm, linux-s390, stable On 22.03.21 15:05, Claudio Imbrenda wrote: > Prefixing needs to be applied to the guest real address to translate it > into a guest absolute address. > > The value of MSO needs to be added to a guest-absolute address in order to > obtain the host-virtual. > > Fixes: 223ea46de9e79 ("s390/kvm: VSIE: correctly handle MVPG when in VSIE") > Cc: stable@vger.kernel.org > Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > Reported-by: Janosch Frank <frankja@linux.ibm.com> > --- > arch/s390/kvm/vsie.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c > index 48aab6290a77..ac86f11e46dc 100644 > --- a/arch/s390/kvm/vsie.c > +++ b/arch/s390/kvm/vsie.c > @@ -1002,7 +1002,7 @@ static u64 vsie_get_register(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, > static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) > { > struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s; > - unsigned long pei_dest, pei_src, src, dest, mask; > + unsigned long pei_dest, pei_src, dest, src, mask, mso, prefix; > u64 *pei_block = &vsie_page->scb_o->mcic; > int edat, rc_dest, rc_src; > union ctlreg0 cr0; > @@ -1010,9 +1010,13 @@ static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) > cr0.val = vcpu->arch.sie_block->gcr[0]; > edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8); > mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK); > + mso = scb_s->mso & ~(1UL << 20); > + prefix = scb_s->prefix << GUEST_PREFIX_SHIFT; > > dest = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 16) & mask; > + dest = _kvm_s390_real_to_abs(prefix, dest) + mso; > src = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 20) & mask; > + src = _kvm_s390_real_to_abs(prefix, src) + mso; > > rc_dest = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, dest, &pei_dest); > rc_src = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, src, &pei_src); > mso is always confusing, but I think this should be correct. Reviewed-by: David Hildenbrand <david@redhat.com> -- Thanks, David / dhildenb ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO 2021-03-22 14:05 ` [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO Claudio Imbrenda 2021-03-23 10:50 ` David Hildenbrand @ 2021-03-23 15:07 ` Christian Borntraeger 2021-03-23 15:11 ` David Hildenbrand 1 sibling, 1 reply; 10+ messages in thread From: Christian Borntraeger @ 2021-03-23 15:07 UTC (permalink / raw) To: Claudio Imbrenda, linux-kernel Cc: frankja, david, cohuck, kvm, linux-s390, stable On 22.03.21 15:05, Claudio Imbrenda wrote: > Prefixing needs to be applied to the guest real address to translate it > into a guest absolute address. > > The value of MSO needs to be added to a guest-absolute address in order to > obtain the host-virtual. > > Fixes: 223ea46de9e79 ("s390/kvm: VSIE: correctly handle MVPG when in VSIE") > Cc: stable@vger.kernel.org > Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > Reported-by: Janosch Frank <frankja@linux.ibm.com> > --- > arch/s390/kvm/vsie.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c > index 48aab6290a77..ac86f11e46dc 100644 > --- a/arch/s390/kvm/vsie.c > +++ b/arch/s390/kvm/vsie.c > @@ -1002,7 +1002,7 @@ static u64 vsie_get_register(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, > static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) > { > struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s; > - unsigned long pei_dest, pei_src, src, dest, mask; > + unsigned long pei_dest, pei_src, dest, src, mask, mso, prefix; > u64 *pei_block = &vsie_page->scb_o->mcic; > int edat, rc_dest, rc_src; > union ctlreg0 cr0; > @@ -1010,9 +1010,13 @@ static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) > cr0.val = vcpu->arch.sie_block->gcr[0]; > edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8); > mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK); > + mso = scb_s->mso & ~(1UL << 20); shouldnt that be ~((1UL << 20 ) -1) ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO 2021-03-23 15:07 ` Christian Borntraeger @ 2021-03-23 15:11 ` David Hildenbrand 2021-03-23 15:16 ` Christian Borntraeger 0 siblings, 1 reply; 10+ messages in thread From: David Hildenbrand @ 2021-03-23 15:11 UTC (permalink / raw) To: Christian Borntraeger, Claudio Imbrenda, linux-kernel Cc: frankja, cohuck, kvm, linux-s390, stable On 23.03.21 16:07, Christian Borntraeger wrote: > > > On 22.03.21 15:05, Claudio Imbrenda wrote: >> Prefixing needs to be applied to the guest real address to translate it >> into a guest absolute address. >> >> The value of MSO needs to be added to a guest-absolute address in order to >> obtain the host-virtual. >> >> Fixes: 223ea46de9e79 ("s390/kvm: VSIE: correctly handle MVPG when in VSIE") >> Cc: stable@vger.kernel.org >> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> >> Reported-by: Janosch Frank <frankja@linux.ibm.com> >> --- >> arch/s390/kvm/vsie.c | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c >> index 48aab6290a77..ac86f11e46dc 100644 >> --- a/arch/s390/kvm/vsie.c >> +++ b/arch/s390/kvm/vsie.c >> @@ -1002,7 +1002,7 @@ static u64 vsie_get_register(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, >> static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) >> { >> struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s; >> - unsigned long pei_dest, pei_src, src, dest, mask; >> + unsigned long pei_dest, pei_src, dest, src, mask, mso, prefix; >> u64 *pei_block = &vsie_page->scb_o->mcic; >> int edat, rc_dest, rc_src; >> union ctlreg0 cr0; >> @@ -1010,9 +1010,13 @@ static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) >> cr0.val = vcpu->arch.sie_block->gcr[0]; >> edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8); >> mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK); >> + mso = scb_s->mso & ~(1UL << 20); > shouldnt that be ~((1UL << 20 ) -1) > Looking at shadow_scb(), we can simply take scb_s->mso unmodified. -- Thanks, David / dhildenb ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO 2021-03-23 15:11 ` David Hildenbrand @ 2021-03-23 15:16 ` Christian Borntraeger 2021-03-23 15:17 ` David Hildenbrand 2021-03-23 15:21 ` Claudio Imbrenda 0 siblings, 2 replies; 10+ messages in thread From: Christian Borntraeger @ 2021-03-23 15:16 UTC (permalink / raw) To: David Hildenbrand, Claudio Imbrenda, linux-kernel Cc: frankja, cohuck, kvm, linux-s390, stable On 23.03.21 16:11, David Hildenbrand wrote: > On 23.03.21 16:07, Christian Borntraeger wrote: >> >> >> On 22.03.21 15:05, Claudio Imbrenda wrote: >>> Prefixing needs to be applied to the guest real address to translate it >>> into a guest absolute address. >>> >>> The value of MSO needs to be added to a guest-absolute address in order to >>> obtain the host-virtual. >>> >>> Fixes: 223ea46de9e79 ("s390/kvm: VSIE: correctly handle MVPG when in VSIE") >>> Cc: stable@vger.kernel.org >>> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> >>> Reported-by: Janosch Frank <frankja@linux.ibm.com> >>> --- >>> arch/s390/kvm/vsie.c | 6 +++++- >>> 1 file changed, 5 insertions(+), 1 deletion(-) >>> >>> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c >>> index 48aab6290a77..ac86f11e46dc 100644 >>> --- a/arch/s390/kvm/vsie.c >>> +++ b/arch/s390/kvm/vsie.c >>> @@ -1002,7 +1002,7 @@ static u64 vsie_get_register(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, >>> static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) >>> { >>> struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s; >>> - unsigned long pei_dest, pei_src, src, dest, mask; >>> + unsigned long pei_dest, pei_src, dest, src, mask, mso, prefix; >>> u64 *pei_block = &vsie_page->scb_o->mcic; >>> int edat, rc_dest, rc_src; >>> union ctlreg0 cr0; >>> @@ -1010,9 +1010,13 @@ static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) >>> cr0.val = vcpu->arch.sie_block->gcr[0]; >>> edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8); >>> mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK); >>> + mso = scb_s->mso & ~(1UL << 20); >> shouldnt that be ~((1UL << 20 ) -1) >> > > Looking at shadow_scb(), we can simply take scb_s->mso unmodified. Right, I think I can fix this up (and get rid of the local mso variable) when queueing. Or shall Claudio send a new version of the patch? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO 2021-03-23 15:16 ` Christian Borntraeger @ 2021-03-23 15:17 ` David Hildenbrand 2021-03-23 15:21 ` Claudio Imbrenda 1 sibling, 0 replies; 10+ messages in thread From: David Hildenbrand @ 2021-03-23 15:17 UTC (permalink / raw) To: Christian Borntraeger, Claudio Imbrenda, linux-kernel Cc: frankja, cohuck, kvm, linux-s390, stable On 23.03.21 16:16, Christian Borntraeger wrote: > > > On 23.03.21 16:11, David Hildenbrand wrote: >> On 23.03.21 16:07, Christian Borntraeger wrote: >>> >>> >>> On 22.03.21 15:05, Claudio Imbrenda wrote: >>>> Prefixing needs to be applied to the guest real address to translate it >>>> into a guest absolute address. >>>> >>>> The value of MSO needs to be added to a guest-absolute address in order to >>>> obtain the host-virtual. >>>> >>>> Fixes: 223ea46de9e79 ("s390/kvm: VSIE: correctly handle MVPG when in VSIE") >>>> Cc: stable@vger.kernel.org >>>> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> >>>> Reported-by: Janosch Frank <frankja@linux.ibm.com> >>>> --- >>>> arch/s390/kvm/vsie.c | 6 +++++- >>>> 1 file changed, 5 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c >>>> index 48aab6290a77..ac86f11e46dc 100644 >>>> --- a/arch/s390/kvm/vsie.c >>>> +++ b/arch/s390/kvm/vsie.c >>>> @@ -1002,7 +1002,7 @@ static u64 vsie_get_register(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, >>>> static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) >>>> { >>>> struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s; >>>> - unsigned long pei_dest, pei_src, src, dest, mask; >>>> + unsigned long pei_dest, pei_src, dest, src, mask, mso, prefix; >>>> u64 *pei_block = &vsie_page->scb_o->mcic; >>>> int edat, rc_dest, rc_src; >>>> union ctlreg0 cr0; >>>> @@ -1010,9 +1010,13 @@ static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) >>>> cr0.val = vcpu->arch.sie_block->gcr[0]; >>>> edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8); >>>> mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK); >>>> + mso = scb_s->mso & ~(1UL << 20); >>> shouldnt that be ~((1UL << 20 ) -1) >>> >> >> Looking at shadow_scb(), we can simply take scb_s->mso unmodified. > > Right, I think I can fix this up (and get rid of the local mso variable) > when queueing. Or shall Claudio send a new version of the patch? > IMHO, you can just fix it up. -- Thanks, David / dhildenb ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO 2021-03-23 15:16 ` Christian Borntraeger 2021-03-23 15:17 ` David Hildenbrand @ 2021-03-23 15:21 ` Claudio Imbrenda 2021-03-23 15:34 ` Christian Borntraeger 1 sibling, 1 reply; 10+ messages in thread From: Claudio Imbrenda @ 2021-03-23 15:21 UTC (permalink / raw) To: Christian Borntraeger Cc: David Hildenbrand, linux-kernel, frankja, cohuck, kvm, linux-s390, stable On Tue, 23 Mar 2021 16:16:18 +0100 Christian Borntraeger <borntraeger@de.ibm.com> wrote: > On 23.03.21 16:11, David Hildenbrand wrote: > > On 23.03.21 16:07, Christian Borntraeger wrote: > >> > >> > >> On 22.03.21 15:05, Claudio Imbrenda wrote: > >>> Prefixing needs to be applied to the guest real address to > >>> translate it into a guest absolute address. > >>> > >>> The value of MSO needs to be added to a guest-absolute address in > >>> order to obtain the host-virtual. > >>> > >>> Fixes: 223ea46de9e79 ("s390/kvm: VSIE: correctly handle MVPG when > >>> in VSIE") Cc: stable@vger.kernel.org > >>> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > >>> Reported-by: Janosch Frank <frankja@linux.ibm.com> > >>> --- > >>> arch/s390/kvm/vsie.c | 6 +++++- > >>> 1 file changed, 5 insertions(+), 1 deletion(-) > >>> > >>> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c > >>> index 48aab6290a77..ac86f11e46dc 100644 > >>> --- a/arch/s390/kvm/vsie.c > >>> +++ b/arch/s390/kvm/vsie.c > >>> @@ -1002,7 +1002,7 @@ static u64 vsie_get_register(struct > >>> kvm_vcpu *vcpu, struct vsie_page *vsie_page, static int > >>> vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page > >>> *vsie_page) { struct kvm_s390_sie_block *scb_s = > >>> &vsie_page->scb_s; > >>> - unsigned long pei_dest, pei_src, src, dest, mask; > >>> + unsigned long pei_dest, pei_src, dest, src, mask, mso, > >>> prefix; u64 *pei_block = &vsie_page->scb_o->mcic; > >>> int edat, rc_dest, rc_src; > >>> union ctlreg0 cr0; > >>> @@ -1010,9 +1010,13 @@ static int vsie_handle_mvpg(struct > >>> kvm_vcpu *vcpu, struct vsie_page *vsie_page) cr0.val = > >>> vcpu->arch.sie_block->gcr[0]; edat = cr0.edat && > >>> test_kvm_facility(vcpu->kvm, 8); mask = > >>> _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK); > >>> + mso = scb_s->mso & ~(1UL << 20); > >> shouldnt that be ~((1UL << 20 ) -1) oops > > > > Looking at shadow_scb(), we can simply take scb_s->mso unmodified. > > Right, I think I can fix this up (and get rid of the local mso I think that's easier/simpler > variable) when queueing. Or shall Claudio send a new version of the > patch? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO 2021-03-23 15:21 ` Claudio Imbrenda @ 2021-03-23 15:34 ` Christian Borntraeger 0 siblings, 0 replies; 10+ messages in thread From: Christian Borntraeger @ 2021-03-23 15:34 UTC (permalink / raw) To: Claudio Imbrenda Cc: David Hildenbrand, linux-kernel, frankja, cohuck, kvm, linux-s390, stable On 23.03.21 16:21, Claudio Imbrenda wrote: > On Tue, 23 Mar 2021 16:16:18 +0100 > Christian Borntraeger <borntraeger@de.ibm.com> wrote: > >> On 23.03.21 16:11, David Hildenbrand wrote: >>> On 23.03.21 16:07, Christian Borntraeger wrote: >>>> >>>> >>>> On 22.03.21 15:05, Claudio Imbrenda wrote: >>>>> Prefixing needs to be applied to the guest real address to >>>>> translate it into a guest absolute address. >>>>> >>>>> The value of MSO needs to be added to a guest-absolute address in >>>>> order to obtain the host-virtual. >>>>> >>>>> Fixes: 223ea46de9e79 ("s390/kvm: VSIE: correctly handle MVPG when >>>>> in VSIE") Cc: stable@vger.kernel.org >>>>> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> >>>>> Reported-by: Janosch Frank <frankja@linux.ibm.com> >>>>> --- >>>>> arch/s390/kvm/vsie.c | 6 +++++- >>>>> 1 file changed, 5 insertions(+), 1 deletion(-) >>>>> >>>>> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c >>>>> index 48aab6290a77..ac86f11e46dc 100644 >>>>> --- a/arch/s390/kvm/vsie.c >>>>> +++ b/arch/s390/kvm/vsie.c >>>>> @@ -1002,7 +1002,7 @@ static u64 vsie_get_register(struct >>>>> kvm_vcpu *vcpu, struct vsie_page *vsie_page, static int >>>>> vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page >>>>> *vsie_page) { struct kvm_s390_sie_block *scb_s = >>>>> &vsie_page->scb_s; >>>>> - unsigned long pei_dest, pei_src, src, dest, mask; >>>>> + unsigned long pei_dest, pei_src, dest, src, mask, mso, >>>>> prefix; u64 *pei_block = &vsie_page->scb_o->mcic; >>>>> int edat, rc_dest, rc_src; >>>>> union ctlreg0 cr0; >>>>> @@ -1010,9 +1010,13 @@ static int vsie_handle_mvpg(struct >>>>> kvm_vcpu *vcpu, struct vsie_page *vsie_page) cr0.val = >>>>> vcpu->arch.sie_block->gcr[0]; edat = cr0.edat && >>>>> test_kvm_facility(vcpu->kvm, 8); mask = >>>>> _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK); >>>>> + mso = scb_s->mso & ~(1UL << 20); >>>> shouldnt that be ~((1UL << 20 ) -1) > > oops > >>> >>> Looking at shadow_scb(), we can simply take scb_s->mso unmodified. >> >> Right, I think I can fix this up (and get rid of the local mso > > I think that's easier/simpler > >> variable) when queueing. Or shall Claudio send a new version of the >> patch? > queued (with fixup). Please note: can you use "KVM: s390:" instead of "s390/kvm" for the future patches. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2021-03-23 15:36 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <20210322140559.500716-1-imbrenda@linux.ibm.com> 2021-03-22 14:05 ` [PATCH v2 1/2] s390/kvm: split kvm_s390_real_to_abs Claudio Imbrenda 2021-03-23 15:01 ` Christian Borntraeger 2021-03-22 14:05 ` [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO Claudio Imbrenda 2021-03-23 10:50 ` David Hildenbrand 2021-03-23 15:07 ` Christian Borntraeger 2021-03-23 15:11 ` David Hildenbrand 2021-03-23 15:16 ` Christian Borntraeger 2021-03-23 15:17 ` David Hildenbrand 2021-03-23 15:21 ` Claudio Imbrenda 2021-03-23 15:34 ` Christian Borntraeger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).