On 12 October 2018 at 11:00, Cornelia Huck <coh...@redhat.com> wrote: > From: Tony Krowiak <akrow...@linux.ibm.com> > > 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 <akrow...@linux.ibm.com> > Tested-by: Pierre Morel <pmo...@linux.ibm.com> > Acked-by: Halil Pasic <pa...@linux.ibm.com> > Tested-by: Pierre Morel <pmo...@linux.ibm.com> > Tested-by: Christian Borntraeger <borntrae...@de.ibm.com> > Message-Id: <20181010170309.12045-6-akrow...@linux.ibm.com> > Reviewed-by: Thomas Huth <th...@redhat.com> > [CH: added missing g_free and device category] > Signed-off-by: Cornelia Huck <coh...@redhat.com>
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)". thanks -- PMM