All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cornelia Huck <cohuck@redhat.com>
To: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
Cc: qemu-devel@nongnu.org, qemu-s390x@nongnu.org,
	schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com,
	borntraeger@de.ibm.com, david@redhat.com,
	bjsdjshi@linux.vnet.ibm.com, pmorel@linux.vnet.ibm.com,
	alifm@linux.vnet.ibm.com, mjrosato@linux.vnet.ibm.com,
	jjherne@linux.vnet.ibm.com, pasic@linux.vnet.ibm.com,
	eskultet@redhat.com, berrange@redhat.com,
	alex.williamson@redhat.com, eric.auger@redhat.com,
	pbonzini@redhat.com, peter.maydell@linaro.org, agraf@suse.de,
	rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH v4 4/5] s390x/vfio: ap: Introduce VFIO AP device
Date: Mon, 23 Apr 2018 09:00:20 +0200	[thread overview]
Message-ID: <20180423090020.3af9dbf4.cohuck@redhat.com> (raw)
In-Reply-To: <93f675a5-ff33-d916-49e7-4e13babb419e@linux.vnet.ibm.com>

On Sun, 22 Apr 2018 12:05:44 -0400
Tony Krowiak <akrowiak@linux.vnet.ibm.com> wrote:

> On 04/19/2018 08:03 AM, Cornelia Huck wrote:
> > On Sun, 15 Apr 2018 15:07:23 -0400
> > Tony Krowiak <akrowiak@linux.vnet.ibm.com> wrote:
> >  
> >> Introduces a VFIO based AP device. The device is defined via
> >> the QEMU command line by specifying:
> >>
> >>      -device vfio-ap,sysfsdev=<path-to-mediated-matrix-device>
> >>
> >> There may be only one vfio-ap device configured for a guest.
> >>
> >> The mediated matrix device is created by the VFIO AP device
> >> driver by writing a UUID to a sysfs attribute file (see
> >> docs/vfio-ap.txt). The mediated matrix device will be named
> >> after the UUID. Symbolic links to the $uuid are created in
> >> many places, so the path to the mediated matrix device $uuid
> >> can be specified in any of the following ways:
> >>
> >> /sys/devices/vfio_ap/matrix/$uuid
> >> /sys/devices/vfio_ap/matrix/mdev_supported_types/vfio_ap-passthrough/devices/$uuid
> >> /sys/bus/mdev/devices/$uuid
> >> /sys/bus/mdev/drivers/vfio_mdev/$uuid
> >>
> >> When the vfio-ap device is realized, it acquires and opens the
> >> VFIO iommu group to which the mediated matrix device is
> >> bound. This causes a VFIO group notification event to be
> >> signaled. The vfio_ap device driver's group notification
> >> handler will get called at which time the device driver
> >> will configure the the AP devices to which the guest will
> >> be granted access.
> >>
> >> Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
> >> ---
> >>   default-configs/s390x-softmmu.mak |    1 +
> >>   hw/vfio/Makefile.objs             |    1 +
> >>   hw/vfio/ap.c                      |  191 +++++++++++++++++++++++++++++++++++++
> >>   include/hw/vfio/vfio-common.h     |    1 +
> >>   4 files changed, 194 insertions(+), 0 deletions(-)
> >>   create mode 100644 hw/vfio/ap.c
> >> +static void vfio_ap_realize(DeviceState *dev, Error **errp)
> >> +{
> >> +    VFIODevice *vbasedev;
> >> +    VFIOGroup *vfio_group;
> >> +    APDevice *apdev = DO_UPCAST(APDevice, parent_obj, dev);
> >> +    char *mdevid;
> >> +    Error *local_err = NULL;
> >> +    int ret;
> >> +
> >> +    /*
> >> +     * Since a guest's matrix is configured in its entirety by the mediated
> >> +     * matrix device and hot plug is not currently supported, there is no
> >> +     * need to have more than one vfio-ap device. Check if a vfio-ap device
> >> +     * has already been defined.
> >> +     */
> >> +    if (vfio_apdev) {
> >> +        error_setg(&local_err, "Only one %s device is allowed",
> >> +                   VFIO_AP_DEVICE_TYPE);
> >> +        goto out_err;
> >> +    }
> >> +
> >> +    if (!s390_has_feat(S390_FEAT_AP)) {
> >> +        error_setg(&local_err, "AP support not enabled");
> >> +        goto out_err;
> >> +    }
> >> +
> >> +    vfio_apdev = DO_UPCAST(VFIOAPDevice, apdev, apdev);
> >> +
> >> +    vfio_group = vfio_ap_get_group(vfio_apdev, &local_err);
> >> +    if (!vfio_group) {
> >> +        goto out_err;
> >> +    }
> >> +
> >> +    vfio_apdev->vdev.ops = &vfio_ap_ops;
> >> +    vfio_apdev->vdev.type = VFIO_DEVICE_TYPE_AP;
> >> +    mdevid = basename(vfio_apdev->vdev.sysfsdev);
> >> +    vfio_apdev->vdev.name = g_strdup_printf("%s", mdevid);
> >> +    vfio_apdev->vdev.dev = dev;
> >> +    QLIST_FOREACH(vbasedev, &vfio_group->device_list, next) {
> >> +        if (strcmp(vbasedev->name, vfio_apdev->vdev.name) == 0) {
> >> +            error_setg(&local_err,
> >> +                       "%s: AP device %s has already been realized",
> >> +                       VFIO_AP_DEVICE_TYPE, vfio_apdev->vdev.name);
> >> +            goto out_device_err;
> >> +        }
> >> +    }
> >> +
> >> +    ret = vfio_get_device(vfio_group, mdevid, &vfio_apdev->vdev, &local_err);
> >> +    if (ret) {
> >> +        goto out_device_err;
> >> +    }  
> > Don't you need a put somewhere to avoid memory leaks?  
> 
> There is a call to vfio_put_device in the unrealize function.

I don't think unrealize is called if realize failed, so you need to
clean up in the error cases?

> 
> >  
> >> +
> >> +    return;
> >> +
> >> +
> >> +out_device_err:
> >> +    vfio_put_group(vfio_group);
> >> +out_err:
> >> +    vfio_apdev = NULL;
> >> +    error_propagate(errp, local_err);
> >> +}  
> 
> 

  reply	other threads:[~2018-04-23  7:00 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-15 19:07 [Qemu-devel] [PATCH v4 0/5] s390x: vfio-ap: guest dedicated crypto adapters Tony Krowiak
2018-04-15 19:07 ` [Qemu-devel] [PATCH v4 1/5] linux-headers: linux header updates for AP support Tony Krowiak
2018-04-15 19:07 ` [Qemu-devel] [PATCH v4 2/5] s390x/ap: base Adjunct Processor (AP) object Tony Krowiak
2018-04-18  9:16   ` Pierre Morel
2018-04-22 15:39     ` Tony Krowiak
2018-04-15 19:07 ` [Qemu-devel] [PATCH v4 3/5] s390x/cpumodel: Set up CPU model for AP device support Tony Krowiak
2018-04-16 15:44   ` David Hildenbrand
2018-04-17 18:20     ` Tony Krowiak
2018-04-17 18:21     ` Christian Borntraeger
2018-04-18  7:40       ` Cornelia Huck
2018-04-18  8:59         ` David Hildenbrand
2018-04-22 15:41           ` Tony Krowiak
2018-05-03 14:54           ` Tony Krowiak
2018-04-22 15:40         ` Tony Krowiak
2018-04-18 10:55   ` Halil Pasic
2018-04-18 11:03     ` David Hildenbrand
2018-04-18 11:50       ` Pierre Morel
2018-04-22 15:52       ` Tony Krowiak
2018-04-22 15:43     ` Tony Krowiak
2018-04-22 16:01       ` Halil Pasic
2018-04-22 16:15         ` Tony Krowiak
2018-05-08 10:46         ` Tony Krowiak
2018-04-22 15:52     ` Tony Krowiak
2018-04-22 16:03       ` Halil Pasic
2018-04-15 19:07 ` [Qemu-devel] [PATCH v4 4/5] s390x/vfio: ap: Introduce VFIO AP device Tony Krowiak
2018-04-18  9:11   ` Pierre Morel
2018-04-22 15:55     ` Tony Krowiak
2018-04-19 12:03   ` Cornelia Huck
2018-04-22 16:05     ` Tony Krowiak
2018-04-23  7:00       ` Cornelia Huck [this message]
2018-04-26 14:50         ` Tony Krowiak
2018-04-15 19:07 ` [Qemu-devel] [PATCH v4 5/5] s390: doc: detailed specifications for AP virtualization Tony Krowiak
2018-04-15 19:14 ` [Qemu-devel] [PATCH v4 0/5] s390x: vfio-ap: guest dedicated crypto adapters no-reply
2018-04-19 11:51 ` Cornelia Huck
2018-04-22 16:17   ` Tony Krowiak
2018-04-23  7:01     ` 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=20180423090020.3af9dbf4.cohuck@redhat.com \
    --to=cohuck@redhat.com \
    --cc=agraf@suse.de \
    --cc=akrowiak@linux.vnet.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=alifm@linux.vnet.ibm.com \
    --cc=berrange@redhat.com \
    --cc=bjsdjshi@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=david@redhat.com \
    --cc=eric.auger@redhat.com \
    --cc=eskultet@redhat.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=jjherne@linux.vnet.ibm.com \
    --cc=mjrosato@linux.vnet.ibm.com \
    --cc=pasic@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=pmorel@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=schwidefsky@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.