All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Borntraeger <borntraeger@de.ibm.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: KVM <kvm@vger.kernel.org>,
	Janosch Frank <frankja@linux.vnet.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Claudio Imbrenda <imbrenda@linux.ibm.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Michael Mueller <mimu@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Ulrich Weigand <uweigand@de.ibm.com>,
	linux-s390 <linux-s390@vger.kernel.org>,
	Heiko Carstens <heiko.carstens@de.ibm.com>
Subject: [GIT PULL 12/36] KVM: s390: protvirt: Handle SE notification interceptions
Date: Mon,  9 Mar 2020 09:51:02 +0100	[thread overview]
Message-ID: <20200309085126.3334302-13-borntraeger@de.ibm.com> (raw)
In-Reply-To: <20200309085126.3334302-1-borntraeger@de.ibm.com>

From: Janosch Frank <frankja@linux.ibm.com>

Since there is no interception for load control and load psw
instruction in the protected mode, we need a new way to get notified
whenever we can inject an IRQ right after the guest has just enabled
the possibility for receiving them.

The new interception codes solve that problem by providing a
notification for changes to IRQ enablement relevant bits in CRs 0, 6
and 14, as well a the machine check mask bit in the PSW.

No special handling is needed for these interception codes, the KVM
pre-run code will consult all necessary CRs and PSW bits and inject
IRQs the guest is enabled for.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
[borntraeger@de.ibm.com: patch merging, splitting, fixing]
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
---
 arch/s390/include/asm/kvm_host.h |  2 ++
 arch/s390/kvm/intercept.c        | 11 ++++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/arch/s390/include/asm/kvm_host.h b/arch/s390/include/asm/kvm_host.h
index 1aa2382fe363..fdc6ceff6397 100644
--- a/arch/s390/include/asm/kvm_host.h
+++ b/arch/s390/include/asm/kvm_host.h
@@ -215,6 +215,8 @@ struct kvm_s390_sie_block {
 #define ICPT_PARTEXEC	0x38
 #define ICPT_IOINST	0x40
 #define ICPT_KSS	0x5c
+#define ICPT_MCHKREQ	0x60
+#define ICPT_INT_ENABLE	0x64
 	__u8	icptcode;		/* 0x0050 */
 	__u8	icptstatus;		/* 0x0051 */
 	__u16	ihcpu;			/* 0x0052 */
diff --git a/arch/s390/kvm/intercept.c b/arch/s390/kvm/intercept.c
index a389fa85cca2..9090f29ae822 100644
--- a/arch/s390/kvm/intercept.c
+++ b/arch/s390/kvm/intercept.c
@@ -2,7 +2,7 @@
 /*
  * in-kernel handling for sie intercepts
  *
- * Copyright IBM Corp. 2008, 2014
+ * Copyright IBM Corp. 2008, 2020
  *
  *    Author(s): Carsten Otte <cotte@de.ibm.com>
  *               Christian Borntraeger <borntraeger@de.ibm.com>
@@ -480,6 +480,15 @@ int kvm_handle_sie_intercept(struct kvm_vcpu *vcpu)
 	case ICPT_KSS:
 		rc = kvm_s390_skey_check_enable(vcpu);
 		break;
+	case ICPT_MCHKREQ:
+	case ICPT_INT_ENABLE:
+		/*
+		 * PSW bit 13 or a CR (0, 6, 14) changed and we might
+		 * now be able to deliver interrupts. The pre-run code
+		 * will take care of this.
+		 */
+		rc = 0;
+		break;
 	default:
 		return -EOPNOTSUPP;
 	}
-- 
2.24.1

  parent reply	other threads:[~2020-03-09  8:51 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-09  8:50 [GIT PULL 00/36] KVM: s390: Features and Enhancements for 5.7 part1 Christian Borntraeger
2020-03-09  8:50 ` [GIT PULL 01/36] s390/protvirt: introduce host side setup Christian Borntraeger
2020-03-09  8:50 ` [GIT PULL 02/36] s390/protvirt: add ultravisor initialization Christian Borntraeger
2020-03-09  8:50 ` [GIT PULL 03/36] s390/mm: provide memory management functions for protected KVM guests Christian Borntraeger
2020-03-09  8:50 ` [GIT PULL 04/36] s390/mm: add (non)secure page access exceptions handlers Christian Borntraeger
2020-03-09  8:50 ` [GIT PULL 05/36] s390/protvirt: Add sysfs firmware interface for Ultravisor information Christian Borntraeger
2020-03-09  8:50 ` [GIT PULL 06/36] KVM: s390/interrupt: do not pin adapter interrupt pages Christian Borntraeger
2020-03-09  8:50 ` [GIT PULL 07/36] KVM: s390: protvirt: Add UV debug trace Christian Borntraeger
2020-03-09  8:50 ` [GIT PULL 08/36] KVM: s390: add new variants of UV CALL Christian Borntraeger
2020-03-09  8:50 ` [GIT PULL 09/36] KVM: s390: protvirt: Add initial vm and cpu lifecycle handling Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 10/36] KVM: s390: protvirt: Secure memory is not mergeable Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 11/36] KVM: s390/mm: Make pages accessible before destroying the guest Christian Borntraeger
2020-03-09  8:51 ` Christian Borntraeger [this message]
2020-03-09  8:51 ` [GIT PULL 13/36] KVM: s390: protvirt: Instruction emulation Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 14/36] KVM: s390: protvirt: Implement interrupt injection Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 15/36] KVM: s390: protvirt: Add SCLP interrupt handling Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 16/36] KVM: s390: protvirt: Handle spec exception loops Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 17/36] KVM: s390: protvirt: Add new gprs location handling Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 18/36] KVM: S390: protvirt: Introduce instruction data area bounce buffer Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 19/36] KVM: s390: protvirt: handle secure guest prefix pages Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 20/36] KVM: s390/mm: handle guest unpin events Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 21/36] KVM: s390: protvirt: Write sthyi data to instruction data area Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 22/36] KVM: s390: protvirt: STSI handling Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 23/36] KVM: s390: protvirt: disallow one_reg Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 24/36] KVM: s390: protvirt: Do only reset registers that are accessible Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 25/36] KVM: s390: protvirt: Only sync fmt4 registers Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 26/36] KVM: s390: protvirt: Add program exception injection Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 27/36] KVM: s390: protvirt: UV calls in support of diag308 0, 1 Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 28/36] KVM: s390: protvirt: Report CPU state to Ultravisor Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 29/36] KVM: s390: protvirt: Support cmd 5 operation state Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 30/36] KVM: s390: protvirt: Mask PSW interrupt bits for interception 104 and 112 Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 31/36] KVM: s390: protvirt: do not inject interrupts after start Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 32/36] KVM: s390: protvirt: Add UV cpu reset calls Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 33/36] DOCUMENTATION: Protected virtual machine introduction and IPL Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 34/36] KVM: s390: protvirt: introduce and enable KVM_CAP_S390_PROTECTED Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 35/36] KVM: s390: protvirt: Add KVM api documentation Christian Borntraeger
2020-03-09  8:51 ` [GIT PULL 36/36] KVM: s390: introduce module parameter kvm.use_gisa Christian Borntraeger
2020-03-10 16:21 ` [GIT PULL 00/36] KVM: s390: Features and Enhancements for 5.7 part1 Christian Borntraeger
2020-03-14 15:58 ` Christian Borntraeger
2020-03-15 18:15   ` Paolo Bonzini

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=20200309085126.3334302-13-borntraeger@de.ibm.com \
    --to=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=frankja@linux.vnet.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mimu@linux.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=uweigand@de.ibm.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.