All of lore.kernel.org
 help / color / mirror / Atom feed
From: Janosch Frank <frankja@linux.ibm.com>
To: kvm@vger.kernel.org
Cc: thuth@redhat.com, borntraeger@de.ibm.com, david@redhat.com,
	cohuck@redhat.com, linux-s390@vger.kernel.org
Subject: [PATCH v10 1/6] KVM: s390: do not clobber registers during guest reset/store status
Date: Fri, 31 Jan 2020 05:02:00 -0500	[thread overview]
Message-ID: <20200131100205.74720-2-frankja@linux.ibm.com> (raw)
In-Reply-To: <20200131100205.74720-1-frankja@linux.ibm.com>

From: Christian Borntraeger <borntraeger@de.ibm.com>

The initial CPU reset clobbers the userspace fpc and the store status
ioctl clobbers the guest acrs + fpr.  As these calls are only done via
ioctl (and not via vcpu_run), no CPU context is loaded, so we can (and
must) act directly on the sync regs, not on the thread context.

Cc: stable@kernel.org
Fixes: e1788bb995be ("KVM: s390: handle floating point registers in the run ioctl not in vcpu_put/load")
Fixes: 31d8b8d41a7e ("KVM: s390: handle access registers in the run ioctl not in vcpu_put/load")
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
---
 arch/s390/kvm/kvm-s390.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index d9e6bf3d54f0..876802894b35 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -2860,9 +2860,7 @@ static void kvm_s390_vcpu_initial_reset(struct kvm_vcpu *vcpu)
 	vcpu->arch.sie_block->gcr[14] = CR14_UNUSED_32 |
 					CR14_UNUSED_33 |
 					CR14_EXTERNAL_DAMAGE_SUBMASK;
-	/* make sure the new fpc will be lazily loaded */
-	save_fpu_regs();
-	current->thread.fpu.fpc = 0;
+	vcpu->run->s.regs.fpc = 0;
 	vcpu->arch.sie_block->gbea = 1;
 	vcpu->arch.sie_block->pp = 0;
 	vcpu->arch.sie_block->fpf &= ~FPF_BPBC;
@@ -4351,7 +4349,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
 	switch (ioctl) {
 	case KVM_S390_STORE_STATUS:
 		idx = srcu_read_lock(&vcpu->kvm->srcu);
-		r = kvm_s390_vcpu_store_status(vcpu, arg);
+		r = kvm_s390_store_status_unloaded(vcpu, arg);
 		srcu_read_unlock(&vcpu->kvm->srcu, idx);
 		break;
 	case KVM_S390_SET_INITIAL_PSW: {
-- 
2.20.1

  reply	other threads:[~2020-01-31 10:02 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-31 10:01 [PATCH v10 0/6] KVM: s390: Add new reset vcpu API Janosch Frank
2020-01-31 10:02 ` Janosch Frank [this message]
2020-01-31 11:24   ` [PATCH v10 1/6] KVM: s390: do not clobber registers during guest reset/store status Christian Borntraeger
2020-01-31 10:02 ` [PATCH v10 2/6] KVM: s390: Cleanup initial cpu reset Janosch Frank
2020-01-31 11:31   ` Christian Borntraeger
2020-01-31 10:02 ` [PATCH v10 3/6] KVM: s390: Add new reset vcpu API Janosch Frank
2020-01-31 11:44   ` Thomas Huth
2020-01-31 11:50   ` Christian Borntraeger
2020-01-31 10:02 ` [PATCH v10 4/6] selftests: KVM: Add fpu and one reg set/get library functions Janosch Frank
2020-01-31 11:43   ` Christian Borntraeger
2020-01-31 13:59     ` Paolo Bonzini
2020-01-31 12:18   ` Christian Borntraeger
2020-01-31 10:02 ` [PATCH v10 5/6] selftests: KVM: s390x: Add reset tests Janosch Frank
2020-01-31 12:18   ` Christian Borntraeger
2020-01-31 10:02 ` [PATCH v10 6/6] selftests: KVM: testing the local IRQs resets Janosch Frank
2020-01-31 10:16   ` Cornelia Huck
2020-01-31 11:47   ` Thomas Huth
2020-01-31 12:47   ` Christian Borntraeger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200131100205.74720-2-frankja@linux.ibm.com \
    --to=frankja@linux.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.