linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] s390/kvm: VSIE: fix prefixing and MSO for MVPG
@ 2021-03-22 14:05 Claudio Imbrenda
  2021-03-22 14:05 ` [PATCH v2 1/2] s390/kvm: split kvm_s390_real_to_abs Claudio Imbrenda
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ 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

The guest real address needs to pass through prefixing in order to yield
the absolute address.

The absolute address needs to be offset by the MSO in order to get the
host virtual address.

v1->v2
* use the MSO from the shadow SIE page instead of the original one
* reuse src and dest variabled to improve readability

Claudio Imbrenda (2):
  s390/kvm: split kvm_s390_real_to_abs
  s390/kvm: VSIE: fix MVPG handling for prefixing and MSO

 arch/s390/kvm/gaccess.h | 23 +++++++++++++++++------
 arch/s390/kvm/vsie.c    |  6 +++++-
 2 files changed, 22 insertions(+), 7 deletions(-)

-- 
2.26.2


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v2 1/2] s390/kvm: split kvm_s390_real_to_abs
  2021-03-22 14:05 [PATCH v2 0/2] s390/kvm: VSIE: fix prefixing and MSO for MVPG Claudio Imbrenda
@ 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
  2021-03-23 10:49 ` [PATCH v2 0/2] s390/kvm: VSIE: fix prefixing and MSO for MVPG Christian Borntraeger
  2 siblings, 1 reply; 12+ 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] 12+ messages in thread

* [PATCH v2 2/2] s390/kvm: VSIE: fix MVPG handling for prefixing and MSO
  2021-03-22 14:05 [PATCH v2 0/2] s390/kvm: VSIE: fix prefixing and MSO for MVPG Claudio Imbrenda
  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
  2021-03-23 10:49 ` [PATCH v2 0/2] s390/kvm: VSIE: fix prefixing and MSO for MVPG Christian Borntraeger
  2 siblings, 2 replies; 12+ 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] 12+ messages in thread

* Re: [PATCH v2 0/2] s390/kvm: VSIE: fix prefixing and MSO for MVPG
  2021-03-22 14:05 [PATCH v2 0/2] s390/kvm: VSIE: fix prefixing and MSO for MVPG Claudio Imbrenda
  2021-03-22 14:05 ` [PATCH v2 1/2] s390/kvm: split kvm_s390_real_to_abs Claudio Imbrenda
  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:49 ` Christian Borntraeger
  2 siblings, 0 replies; 12+ messages in thread
From: Christian Borntraeger @ 2021-03-23 10:49 UTC (permalink / raw)
  To: Claudio Imbrenda, linux-kernel; +Cc: frankja, david, cohuck, kvm, linux-s390

On 22.03.21 15:05, Claudio Imbrenda wrote:
> The guest real address needs to pass through prefixing in order to yield
> the absolute address.
> 
> The absolute address needs to be offset by the MSO in order to get the
> host virtual address.
> 
> v1->v2
> * use the MSO from the shadow SIE page instead of the original one
> * reuse src and dest variabled to improve readability
> 
> Claudio Imbrenda (2):
>    s390/kvm: split kvm_s390_real_to_abs
>    s390/kvm: VSIE: fix MVPG handling for prefixing and MSO
> 
>   arch/s390/kvm/gaccess.h | 23 +++++++++++++++++------
>   arch/s390/kvm/vsie.c    |  6 +++++-
>   2 files changed, 22 insertions(+), 7 deletions(-)
> 

I picked both for internal CI and staging.
RBs or acks can still be send.

^ permalink raw reply	[flat|nested] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ 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; 12+ 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] 12+ messages in thread

end of thread, other threads:[~2021-03-23 15:36 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-22 14:05 [PATCH v2 0/2] s390/kvm: VSIE: fix prefixing and MSO for MVPG Claudio Imbrenda
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
2021-03-23 10:49 ` [PATCH v2 0/2] s390/kvm: VSIE: fix prefixing and MSO for MVPG 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).