All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Borntraeger <borntraeger@de.ibm.com>
To: Janosch Frank <frankja@linux.vnet.ibm.com>
Cc: KVM <kvm@vger.kernel.org>, "Cornelia Huck" <cohuck@redhat.com>,
	"Christian Borntraeger" <borntraeger@de.ibm.com>,
	"David Hildenbrand" <david@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Radim Krčmář" <rkrcmar@redhat.com>,
	"Collin Walling" <walling@linux.ibm.com>,
	"Jason J . Herne" <jjherne@linux.ibm.com>
Subject: [PATCH v2 4/7] KVM: s390: enable MSA9 keywrapping functions depending on cpu model
Date: Wed, 17 Apr 2019 20:29:25 +0200	[thread overview]
Message-ID: <20190417182925.50744-1-borntraeger@de.ibm.com> (raw)
In-Reply-To: <20190417152842.71730-5-borntraeger@de.ibm.com>

Instead of adding a new machine option to disable/enable the keywrapping
options of pckmo (like for AES and DEA) we can now use the CPU model to
decide.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
---
v1->v2: - enable vsie
	- also check if the host has the pckmo functions
 arch/s390/include/asm/kvm_host.h | 1 +
 arch/s390/kvm/kvm-s390.c         | 7 +++++++
 arch/s390/kvm/vsie.c             | 5 ++++-
 3 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 c47e22bba87fa..e224246ff93c6 100644
--- a/arch/s390/include/asm/kvm_host.h
+++ b/arch/s390/include/asm/kvm_host.h
@@ -278,6 +278,7 @@ struct kvm_s390_sie_block {
 #define ECD_HOSTREGMGMT	0x20000000
 #define ECD_MEF		0x08000000
 #define ECD_ETOKENF	0x02000000
+#define ECD_ECC		0x00200000
 	__u32	ecd;			/* 0x01c8 */
 	__u8	reserved1cc[18];	/* 0x01cc */
 	__u64	pp;			/* 0x01de */
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 0dad61ccde3d6..9869d785677f1 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -2933,6 +2933,13 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
 		VCPU_EVENT(vcpu, 3, "AIV gisa format-%u enabled for cpu %03u",
 			   vcpu->arch.sie_block->gd & 0x3, vcpu->vcpu_id);
 	}
+	/*
+	 * if any of 32,33,34,40,41 is active in host AND guest,
+	 * we enable pckmo for ecc
+	 */
+	if ((vcpu->kvm->arch.model.subfuncs.pckmo[4] & kvm_s390_available_subfunc.pckmo[4] & 0xe0) ||
+	    (vcpu->kvm->arch.model.subfuncs.pckmo[5] & kvm_s390_available_subfunc.pckmo[5] & 0xc0))
+		vcpu->arch.sie_block->ecd |= ECD_ECC;
 	vcpu->arch.sie_block->sdnxo = ((unsigned long) &vcpu->run->s.regs.sdnx)
 					| SDNXC;
 	vcpu->arch.sie_block->riccbd = (unsigned long) &vcpu->run->s.regs.riccb;
diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c
index d62fa148558b9..c6983d962abfd 100644
--- a/arch/s390/kvm/vsie.c
+++ b/arch/s390/kvm/vsie.c
@@ -288,6 +288,7 @@ static int shadow_crycb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
 	const u32 crycb_addr = crycbd_o & 0x7ffffff8U;
 	unsigned long *b1, *b2;
 	u8 ecb3_flags;
+	u32 ecd_flags;
 	int apie_h;
 	int key_msk = test_kvm_facility(vcpu->kvm, 76);
 	int fmt_o = crycbd_o & CRYCB_FORMAT_MASK;
@@ -320,7 +321,8 @@ static int shadow_crycb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
 	/* we may only allow it if enabled for guest 2 */
 	ecb3_flags = scb_o->ecb3 & vcpu->arch.sie_block->ecb3 &
 		     (ECB3_AES | ECB3_DEA);
-	if (!ecb3_flags)
+	ecd_flags = scb_o->ecd & vcpu->arch.sie_block->ecd & ECD_ECC;
+	if (!ecb3_flags && !ecd_flags)
 		goto end;
 
 	/* copy only the wrapping keys */
@@ -329,6 +331,7 @@ static int shadow_crycb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
 		return set_validity_icpt(scb_s, 0x0035U);
 
 	scb_s->ecb3 |= ecb3_flags;
+	scb_s->ecd |= ecd_flags;
 
 	/* xor both blocks in one run */
 	b1 = (unsigned long *) vsie_page->crycb.dea_wrapping_key_mask;
-- 
2.19.1


  parent reply	other threads:[~2019-04-17 18:29 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-17 15:28 [PATCH 0/7] KVM: s390: new guest facilities Christian Borntraeger
2019-04-17 15:28 ` [PATCH 1/7] KVM: s390: add vector enhancements facility 2 to cpumodel Christian Borntraeger
2019-04-17 15:34   ` David Hildenbrand
2019-04-17 15:28 ` [PATCH 2/7] KVM: s390: add vector BCD enhancements facility " Christian Borntraeger
2019-04-17 15:34   ` David Hildenbrand
2019-04-17 15:28 ` [PATCH 3/7] KVM: s390: add MSA9 " Christian Borntraeger
2019-04-17 15:37   ` David Hildenbrand
2019-04-17 15:28 ` [PATCH 4/7] KVM: s390: enable MSA9 keywrapping functions depending on cpu model Christian Borntraeger
2019-04-17 15:38   ` David Hildenbrand
2019-04-17 15:48     ` Christian Borntraeger
2019-04-17 16:25       ` Christian Borntraeger
2019-04-17 15:47   ` David Hildenbrand
2019-04-17 15:50     ` Christian Borntraeger
2019-04-17 16:16     ` Christian Borntraeger
2019-04-17 18:29   ` Christian Borntraeger [this message]
2019-04-18  7:35     ` [PATCH v2 " Christian Borntraeger
2019-04-18  7:49       ` David Hildenbrand
2019-04-18  7:54     ` David Hildenbrand
2019-04-18  8:58       ` Christian Borntraeger
2019-04-18  9:13         ` David Hildenbrand
2019-04-18 10:17           ` Christian Borntraeger
2019-04-18 10:31             ` David Hildenbrand
2019-04-18 10:40               ` Christian Borntraeger
2019-04-18 10:46                 ` Christian Borntraeger
2019-04-17 15:28 ` [PATCH 5/7] KVM: s390: provide query function for instructions returning 32 byte Christian Borntraeger
2019-04-17 15:42   ` David Hildenbrand
2019-04-17 15:43     ` Christian Borntraeger
2019-04-17 15:45       ` David Hildenbrand
2019-04-17 15:28 ` [PATCH 6/7] KVM: s390: add enhanced sort facilty to cpu model Christian Borntraeger
2019-04-17 15:44   ` David Hildenbrand
2019-04-17 15:28 ` [PATCH 7/7] KVM: s390: add deflate conversion " Christian Borntraeger
2019-04-17 15:44   ` David Hildenbrand

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=20190417182925.50744-1-borntraeger@de.ibm.com \
    --to=borntraeger@de.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=frankja@linux.vnet.ibm.com \
    --cc=jjherne@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=walling@linux.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.