[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [qemu-s390x] [PULL 6/8] s390x/vfio: ap: Introduce VFIO AP device

From: Peter Maydell
Subject: Re: [qemu-s390x] [PULL 6/8] s390x/vfio: ap: Introduce VFIO AP device
Date: Tue, 16 Oct 2018 12:36:18 +0100

On 12 October 2018 at 11:00, Cornelia Huck <address@hidden> wrote:
> From: Tony Krowiak <address@hidden>
> 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 <address@hidden>
> Tested-by: Pierre Morel <address@hidden>
> Acked-by: Halil Pasic <address@hidden>
> Tested-by: Pierre Morel <address@hidden>
> Tested-by: Christian Borntraeger <address@hidden>
> Message-Id: <address@hidden>
> Reviewed-by: Thomas Huth <address@hidden>
> [CH: added missing g_free and device category]
> Signed-off-by: Cornelia Huck <address@hidden>

Hi; Coverity has pointed out a bug in this function
(CID 1396176):

> +static void vfio_ap_reset(DeviceState *dev)
> +{
> +    int ret;
> +    APDevice *apdev = AP_DEVICE(dev);
> +    VFIOAPDevice *vapdev = VFIO_AP_DEVICE(apdev);
> +
> +    ret = ioctl(vapdev->vdev.fd, VFIO_DEVICE_RESET);
> +    if (ret) {
> +        error_report("%s: failed to reset %s device: %s", __func__,
> +                     vapdev->vdev.name, strerror(ret));

ioctl returns -1 and sets errno, so "strerror(ret)" is
the wrong thing here; we want "strerror(errno)".

-- PMM

reply via email to

[Prev in Thread] Current Thread [Next in Thread]