From: Cornelia Huck <cohuck@redhat.com>
To: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
Cc: linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
kvm@vger.kernel.org, freude@de.ibm.com, schwidefsky@de.ibm.com,
heiko.carstens@de.ibm.com, borntraeger@de.ibm.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, qemu-s390x@nongnu.org,
jjherne@linux.vnet.ibm.com, thuth@redhat.com,
pasic@linux.vnet.ibm.com
Subject: Re: [RFC 06/19] s390/zcrypt: register matrix device with VFIO mediated device framework
Date: Tue, 14 Nov 2017 14:14:21 +0100 [thread overview]
Message-ID: <20171114141421.584811d9.cohuck@redhat.com> (raw)
In-Reply-To: <1507916344-3896-7-git-send-email-akrowiak@linux.vnet.ibm.com>
On Fri, 13 Oct 2017 13:38:51 -0400
Tony Krowiak <akrowiak@linux.vnet.ibm.com> wrote:
> Registers the matrix device created by the AP matrix bus with
> the VFIO mediated device framework. Registering the matrix
> device will create the sysfs structures needed to create
> mediated matrix devices that can be configured with a matrix
> of adapters, usage domains and control domains for a guest
> machine.
>
> Registering the matrix device with the VFIO mediated device
> framework will create the following sysfs structures:
>
> /sys/devices/ap_matrix
> ... [matrix]
> ...... [mdev_supported_types]
> ......... [ap_matrix-passthrough]
> ............ available_instances
> ............ create
> ............ device_api
> ............ [devices]
> ............ name
>
> To create a mediated device for the AP matrix device, write a UUID
> to the create file:
>
> uuidgen > create
>
> A symbolic link to the mediated device's directory will be created in the
> devices subdirectory named after the generated $uuid:
>
> /sys/devices/ap_matrix
> ... [matrix]
> ...... [mdev_supported_types]
> ......... [ap_matrix-passthrough]
> ............ [devices]
> ............... [$uuid]
>
> Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
> ---
> MAINTAINERS | 1 +
> drivers/s390/crypto/Makefile | 2 +-
> drivers/s390/crypto/ap_matrix_bus.c | 1 +
> drivers/s390/crypto/ap_matrix_bus.h | 4 +
> drivers/s390/crypto/vfio_ap_matrix_drv.c | 5 +
> drivers/s390/crypto/vfio_ap_matrix_ops.c | 172 ++++++++++++++++++++++++++
> drivers/s390/crypto/vfio_ap_matrix_private.h | 3 +
> include/uapi/linux/vfio.h | 1 +
> 8 files changed, 188 insertions(+), 1 deletions(-)
> create mode 100644 drivers/s390/crypto/vfio_ap_matrix_ops.c
>
> diff --git a/drivers/s390/crypto/ap_matrix_bus.c b/drivers/s390/crypto/ap_matrix_bus.c
> index 66bfa54..418c23b 100644
> --- a/drivers/s390/crypto/ap_matrix_bus.c
> +++ b/drivers/s390/crypto/ap_matrix_bus.c
> @@ -61,6 +61,7 @@ static int ap_matrix_dev_create(void)
> matrix->device.bus = &ap_matrix_bus_type;
> matrix->device.parent = ap_matrix_root_device;
> matrix->device.release = ap_matrix_dev_release;
> + INIT_LIST_HEAD(&matrix->queues);
Don't you also need to init the spin lock?
>
> ret = device_register(&matrix->device);
> if (ret) {
> diff --git a/drivers/s390/crypto/ap_matrix_bus.h b/drivers/s390/crypto/ap_matrix_bus.h
> index c2aff23..3eccc36 100644
> --- a/drivers/s390/crypto/ap_matrix_bus.h
> +++ b/drivers/s390/crypto/ap_matrix_bus.h
> @@ -12,8 +12,12 @@
>
> #include <linux/device.h>
>
> +#include "ap_bus.h"
Why do you need this include now? (IOW, does that need to go into
another patch?)
> +
> struct ap_matrix {
> struct device device;
> + spinlock_t qlock;
> + struct list_head queues;
> };
>
> struct ap_matrix *ap_matrix_get_device(void);
> diff --git a/drivers/s390/crypto/vfio_ap_matrix_ops.c b/drivers/s390/crypto/vfio_ap_matrix_ops.c
> new file mode 100644
> index 0000000..7d01f18
> --- /dev/null
> +++ b/drivers/s390/crypto/vfio_ap_matrix_ops.c
> @@ -0,0 +1,172 @@
> +/*
> + * Adjunct processor matrix VFIO device driver callbacks.
> + *
> + * Copyright IBM Corp. 2017
> + * Author(s): Tony Krowiak <akrowiak@linux.vnet.ibm.com>
> + *
> + */
> +#include <asm/ap-config.h>
> +#include <linux/string.h>
> +#include <linux/vfio.h>
> +#include <linux/mdev.h>
> +#include <linux/device.h>
> +#include <linux/list.h>
> +#include <linux/ctype.h>
> +
> +#include "vfio_ap_matrix_private.h"
> +
> +#define AP_MATRIX_MDEV_TYPE_HWVIRT "passthrough"
> +#define AP_MATRIX_MDEV_NAME_HWVIRT "AP Matrix Passthrough Device"
> +
> +#define AP_MATRIX_MAX_AVAILABLE_INSTANCES 255
> +
> +struct ap_matrix_mdev {
> + struct mdev_device *mdev;
> + struct list_head node;
> +};
> +
> +struct ap_matrix *matrix;
> +struct mutex mdev_devices_lock;
> +struct list_head mdev_devices;
> +int available_instances;
Having this as a global variable feels wrong. I see that vfio-ccw keeps
things like this in driver data attached to its parent. Can you do
something like that as well?
> +
> +static struct ap_matrix_mdev *ap_matrix_mdev_find_by_uuid(uuid_le uuid)
> +{
> + struct ap_matrix_mdev *matrix_mdev;
> +
> + list_for_each_entry(matrix_mdev, &mdev_devices, node) {
> + if (uuid_le_cmp(mdev_uuid(matrix_mdev->mdev), uuid) == 0)
> + return matrix_mdev;
> + }
> +
> + return NULL;
> +}
(...)
> +int ap_matrix_mdev_register(struct ap_matrix *ap_matrix)
> +{
> + int ret;
> + struct device *dev = &ap_matrix->device;
> +
> + ret = mdev_register_device(dev, &vfio_ap_matrix_ops);
> + if (ret)
> + return ret;
> +
> + matrix = ap_matrix;
I'd just grab the (one) matrix device here...
> + mutex_init(&mdev_devices_lock);
> + INIT_LIST_HEAD(&mdev_devices);
> + available_instances = AP_MATRIX_MAX_AVAILABLE_INSTANCES;
> +
> + return 0;
> +}
> +
> +void ap_matrix_mdev_unregister(struct ap_matrix *ap_matrix)
> +{
> + struct device *dev;
> +
> + if (ap_matrix == matrix) {
...and lose this extra if.
> + dev = &matrix->device;
> + available_instances--;
> + mdev_unregister_device(dev);
> + }
> +}
next prev parent reply other threads:[~2017-11-14 13:14 UTC|newest]
Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-13 17:38 [RFC 00/19] KVM: s390/crypto/vfio: guest dedicated crypto adapters Tony Krowiak
2017-10-13 17:38 ` [RFC 01/19] KVM: s390: SIE considerations for AP Queue virtualization Tony Krowiak
2017-11-02 11:54 ` Christian Borntraeger
2017-11-02 19:53 ` Tony Krowiak
2017-10-13 17:38 ` [RFC 02/19] KVM: s390: refactor crypto initialization Tony Krowiak
2017-11-02 12:41 ` Christian Borntraeger
2017-11-14 11:50 ` Cornelia Huck
2017-11-14 15:53 ` Tony Krowiak
2017-10-13 17:38 ` [RFC 03/19] s390/zcrypt: new AP matrix bus Tony Krowiak
2017-10-16 8:47 ` Martin Schwidefsky
2017-10-16 15:02 ` Tony Krowiak
2017-11-14 11:58 ` Cornelia Huck
2017-11-14 13:19 ` Tony Krowiak
2017-11-14 15:54 ` Tony Krowiak
2017-11-14 16:07 ` Tony Krowiak
2017-10-13 17:38 ` [RFC 04/19] s390/zcrypt: create an AP matrix device on the " Tony Krowiak
2017-10-18 16:20 ` Cornelia Huck
2017-10-18 17:54 ` Tony Krowiak
2017-10-13 17:38 ` [RFC 05/19] s390/zcrypt: base implementation of AP matrix device driver Tony Krowiak
2017-10-16 8:59 ` Martin Schwidefsky
2017-10-16 15:56 ` Tony Krowiak
2017-11-14 12:40 ` Cornelia Huck
2017-11-14 16:37 ` Tony Krowiak
2017-11-14 17:00 ` Cornelia Huck
2017-11-14 18:15 ` Tony Krowiak
2017-11-15 10:31 ` Cornelia Huck
2017-11-16 12:02 ` Pierre Morel
2017-11-16 12:35 ` Cornelia Huck
2017-11-16 14:25 ` Tony Krowiak
2017-11-16 16:47 ` Cornelia Huck
2017-11-17 21:13 ` Tony Krowiak
2017-11-20 17:15 ` Cornelia Huck
2017-11-16 14:25 ` Pierre Morel
2017-10-13 17:38 ` [RFC 06/19] s390/zcrypt: register matrix device with VFIO mediated device framework Tony Krowiak
2017-10-16 9:03 ` Martin Schwidefsky
2017-10-16 16:09 ` Tony Krowiak
2017-11-14 13:14 ` Cornelia Huck [this message]
2017-11-16 15:37 ` Tony Krowiak
2017-10-13 17:38 ` [RFC 07/19] KVM: s390: introduce AP matrix configuration interface Tony Krowiak
2017-10-16 9:10 ` Martin Schwidefsky
2017-10-16 16:26 ` Tony Krowiak
2017-11-14 13:16 ` Cornelia Huck
2017-11-16 15:41 ` Tony Krowiak
2017-10-13 17:38 ` [RFC 08/19] s390/zcrypt: support for assigning adapters to matrix mdev Tony Krowiak
2017-11-14 13:22 ` Cornelia Huck
2017-11-16 23:53 ` Tony Krowiak
2017-11-17 9:50 ` Cornelia Huck
2017-10-13 17:38 ` [RFC 09/19] s390/zcrypt: validate adapter assignment Tony Krowiak
2017-10-13 17:38 ` [RFC 10/19] s390/zcrypt: sysfs interfaces supporting AP domain assignment Tony Krowiak
2017-10-13 17:38 ` [RFC 11/19] s390/zcrypt: validate " Tony Krowiak
2017-10-13 17:38 ` [RFC 12/19] s390/zcrypt: sysfs support for control " Tony Krowiak
2017-10-13 17:38 ` [RFC 13/19] s390/zcrypt: validate " Tony Krowiak
2017-10-16 9:13 ` Martin Schwidefsky
2017-10-13 17:38 ` [RFC 14/19] KVM: s390: Connect the AP mediated matrix device to KVM Tony Krowiak
2017-10-13 17:39 ` [RFC 15/19] s390/zcrypt: introduce ioctl access to VFIO AP Matrix driver Tony Krowiak
2017-10-13 17:39 ` [RFC 16/19] KVM: s390: interface to configure KVM guest's AP matrix Tony Krowiak
2017-10-16 20:22 ` Tony Krowiak
2017-11-14 13:46 ` Cornelia Huck
2017-10-13 17:39 ` [RFC 17/19] KVM: s390: validate input to AP matrix config interface Tony Krowiak
2017-10-13 17:39 ` [RFC 18/19] KVM: s390: New ioctl to configure KVM guest's AP matrix Tony Krowiak
2017-11-02 18:55 ` Tony Krowiak
2017-10-13 17:39 ` [RFC 19/19] s390/facilities: enable AP facilities needed by guest Tony Krowiak
2017-10-16 9:25 ` Martin Schwidefsky
2017-11-02 12:08 ` Christian Borntraeger
2017-11-02 12:23 ` Halil Pasic
[not found] ` <af1bb867-f9a0-458b-b7b2-c0bb9456eb7f@linux.vnet.ibm.com>
2017-11-02 15:53 ` Christian Borntraeger
2017-11-02 18:49 ` Tony Krowiak
2017-11-03 8:47 ` Christian Borntraeger
2017-12-02 1:30 ` Tony Krowiak
2017-12-05 7:52 ` Harald Freudenberger
2017-12-05 14:04 ` Cornelia Huck
2017-12-05 14:23 ` Pierre Morel
2017-12-05 14:30 ` Cornelia Huck
2017-12-05 14:47 ` Pierre Morel
2017-12-05 15:14 ` Tony Krowiak
2017-12-05 15:01 ` Tony Krowiak
2017-12-06 9:15 ` Pierre Morel
2017-12-06 10:15 ` Cornelia Huck
2017-12-05 14:14 ` Tony Krowiak
[not found] ` <OF182217F7.6A47A64E-ON002581CD.002BCF58-C12581CD.002D4127@notes.na.collabserv.com>
2017-11-03 8:49 ` Christian Borntraeger
2017-10-16 9:27 ` [RFC 00/19] KVM: s390/crypto/vfio: guest dedicated crypto adapters Martin Schwidefsky
2017-10-16 10:06 ` Christian Borntraeger
2017-10-16 16:30 ` Tony Krowiak
2017-10-16 10:05 ` Cornelia Huck
2017-10-16 16:27 ` Tony Krowiak
2017-10-18 16:43 ` Christian Borntraeger
2017-10-29 11:11 ` Cornelia Huck
2017-10-30 8:57 ` Christian Borntraeger
2017-10-30 8:57 ` [Qemu-devel] " Christian Borntraeger
2017-10-30 15:34 ` Tony Krowiak
2017-10-30 19:04 ` Tony Krowiak
2017-10-30 19:04 ` [Qemu-devel] " Tony Krowiak
2017-10-31 19:39 ` Tony Krowiak
2017-11-14 13:57 ` Cornelia Huck
2017-11-16 15:23 ` Tony Krowiak
2017-11-16 16:06 ` Pierre Morel
2017-11-16 17:03 ` Cornelia Huck
2017-11-16 20:25 ` Pierre Morel
2017-11-16 23:35 ` Tony Krowiak
2017-11-17 7:07 ` Pierre Morel
2017-11-17 10:07 ` Cornelia Huck
2017-11-17 10:07 ` Cornelia Huck
2017-11-17 20:28 ` Tony Krowiak
2017-11-20 17:13 ` Cornelia Huck
2017-11-21 16:08 ` Tony Krowiak
2017-11-22 13:47 ` Cornelia Huck
2017-11-28 0:39 ` Tony Krowiak
2017-12-05 14:06 ` Cornelia Huck
2017-12-05 15:09 ` Tony Krowiak
2017-11-16 16:49 ` Cornelia Huck
2017-11-16 23:41 ` Tony Krowiak
2017-11-17 9:49 ` 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=20171114141421.584811d9.cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=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=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-kernel@vger.kernel.org \
--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 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.