From: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
To: linux-s390@vger.kernel.org, qemu-s390x@nongnu.org, kvm@vger.kernel.org
Cc: freude@de.ibm.com, schwidefsky@de.ibm.com,
heiko.carstens@de.ibm.com, borntraeger@de.ibm.com,
cohuck@redhat.com, kwankhede@nvidia.com,
bjsdjshi@linux.vnet.ibm.com, pbonzini@redhat.com,
alex.williamson@redhat.com, pmorel@linux.vnet.ibm.com,
alifm@linux.vnet.ibm.com, mjrosato@linux.vnet.ibm.com,
jjherne@linux.vnet.ibm.com, thuth@redhat.com,
pasic@linux.vnet.ibm.com,
Tony Krowiak <akrowiak@linux.vnet.ibm.com>
Subject: [RFC 3/5] s390x/ap-matrix: Configure AP matrix for KVM guest
Date: Thu, 26 Oct 2017 11:54:52 -0400 [thread overview]
Message-ID: <1509033294-4945-4-git-send-email-akrowiak@linux.vnet.ibm.com> (raw)
In-Reply-To: <1509033294-4945-1-git-send-email-akrowiak@linux.vnet.ibm.com>
The VFIO AP matrix mediated device driver provides an ioctl interface
to configure the APM, ADM and APM fields contained in the
CRYCB referenced by the guest's SIE state description. The mask
values are specified in the mediated AP matrix device's sysfs
attribute files. Configuring a KVM guest's AP matrix grants direct
access to the AP adapters, domains and control domains specified in
the matrix configuration.
Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
---
hw/vfio/ap-matrix.c | 45 ++++++++++++++++++++++++++++++++++++++++++++
| 1 +
2 files changed, 46 insertions(+), 0 deletions(-)
diff --git a/hw/vfio/ap-matrix.c b/hw/vfio/ap-matrix.c
index eeaa439..ce87c05 100644
--- a/hw/vfio/ap-matrix.c
+++ b/hw/vfio/ap-matrix.c
@@ -85,6 +85,35 @@ static VFIOGroup *vfio_ap_matrix_get_group(VFIOAPMatrixDevice *vapmdev,
return vfio_get_group(groupid, &address_space_memory, errp);
}
+static int vfio_ap_matrix_configure(VFIOAPMatrixDevice *vapmdev,
+ APMatrixMasks *masks, Error **errp)
+{
+ size_t i;
+ struct vfio_ap_matrix_config config;
+ int ret;
+
+ config.argsz = sizeof(config);
+ config.flags = 0;
+
+ ret = ioctl(vapmdev->vdev.fd, VFIO_AP_MATRIX_CONFIGURE, &config);
+ if (ret) {
+ error_setg_errno(errp, ret,
+ "%s: Error configuring matrix for device %s",
+ TYPE_VFIO_AP_MATRIX_DEVICE, vapmdev->vdev.name);
+ return -EFAULT;
+ }
+
+ for (i = 0; i < VFIO_AP_MATRIX_MASK_INDICES; i++) {
+ if (i < AP_MATRIX_MASK_INDICES) {
+ masks->apm[i] = config.apm[i];
+ masks->aqm[i] = config.aqm[i];
+ masks->adm[i] = config.adm[i];
+ }
+ }
+
+ return 0;
+}
+
static void vfio_ap_matrix_realize(DeviceState *dev, Error **errp)
{
VFIODevice *vbasedev;
@@ -92,8 +121,11 @@ static void vfio_ap_matrix_realize(DeviceState *dev, Error **errp)
APMatrixDevice *apmdev = DO_UPCAST(APMatrixDevice, parent_obj, dev);
S390APMatrixDevice *sapmdev = DO_UPCAST(S390APMatrixDevice, parent_obj,
apmdev);
+ S390APMatrixDeviceClass *csapmdev =
+ S390_AP_MATRIX_DEVICE_GET_CLASS(sapmdev);
VFIOAPMatrixDevice *vapmdev = DO_UPCAST(VFIOAPMatrixDevice, apmdev,
sapmdev);
+ APMatrixMasks masks;
char *mdevid;
Error *local_err = NULL;
@@ -121,8 +153,21 @@ static void vfio_ap_matrix_realize(DeviceState *dev, Error **errp)
goto out_device_err;
}
+ if (csapmdev->realize) {
+ if (vfio_ap_matrix_configure(vapmdev, &masks, &local_err)) {
+ goto out_realize_err;
+ }
+
+ csapmdev->realize(sapmdev, &masks, &local_err);
+ if (local_err) {
+ goto out_realize_err;
+ }
+ }
+
return;
+out_realize_err:
+ vfio_put_device(vapmdev);
out_device_err:
vfio_put_group(vfio_group);
out_err:
--git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h
index 2d96c57..bf1e25d 100644
--- a/linux-headers/linux/vfio.h
+++ b/linux-headers/linux/vfio.h
@@ -736,6 +736,7 @@ struct vfio_ap_matrix_config {
__u64 aqm[VFIO_AP_MATRIX_MASK_INDICES];
__u64 adm[VFIO_AP_MATRIX_MASK_INDICES];
};
+
/* ***************************************************************** */
#endif /* _UAPIVFIO_H */
--
1.7.1
next prev parent reply other threads:[~2017-10-26 15:54 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-26 15:54 [RFC 0/5] guest dedicated crypto adapters: QEMU usage Tony Krowiak
2017-10-26 15:54 ` [RFC 1/5] s390x/ap-matrix: Adjunct Processor (AP) matrix object model Tony Krowiak
2017-11-14 14:58 ` Cornelia Huck
2017-10-26 15:54 ` [RFC 2/5] s390x/vfio: ap-matrix: Introduce VFIO AP Matrix device Tony Krowiak
2017-11-14 15:03 ` Cornelia Huck
2017-10-26 15:54 ` Tony Krowiak [this message]
2017-11-14 15:07 ` [RFC 3/5] s390x/ap-matrix: Configure AP matrix for KVM guest Cornelia Huck
2017-10-26 15:54 ` [RFC 4/5] s390x/cpumodel: enable AP facilities for guest Tony Krowiak
2017-11-14 15:11 ` Cornelia Huck
2017-11-14 16:23 ` David Hildenbrand
2017-10-26 15:54 ` [RFC 5/5] s390x/docs: documentation for ap-matrix Tony Krowiak
2017-11-14 15:21 ` Cornelia Huck
2017-11-14 15:23 ` [RFC 0/5] guest dedicated crypto adapters: QEMU usage Cornelia Huck
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=1509033294-4945-4-git-send-email-akrowiak@linux.vnet.ibm.com \
--to=akrowiak@linux.vnet.ibm.com \
--cc=alex.williamson@redhat.com \
--cc=alifm@linux.vnet.ibm.com \
--cc=bjsdjshi@linux.vnet.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=freude@de.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=jjherne@linux.vnet.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=linux-s390@vger.kernel.org \
--cc=mjrosato@linux.vnet.ibm.com \
--cc=pasic@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=pmorel@linux.vnet.ibm.com \
--cc=qemu-s390x@nongnu.org \
--cc=schwidefsky@de.ibm.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox