[libvirt] [PATCH] qemu: Fix mdev checking for VFIO support
Erik Skultety
eskultet at redhat.com
Wed Apr 12 11:22:33 UTC 2017
On Wed, Apr 12, 2017 at 11:35:14AM +0100, Daniel P. Berrange wrote:
> On Wed, Apr 12, 2017 at 12:26:35PM +0200, Erik Skultety wrote:
> > Commit a4a39d90 added a check that checks for VFIO support with mediated
> > devices. The problem is that the hostdev preparing functions behave like
> > a fallthrough if device of that specific type doesn't exist. However,
> > the check for VFIO support was independent of the existence of a mdev
> > device which caused the guest to fail to start with any device to be
> > directly assigned if VFIO was disabled/unavailable in the kernel.
> > The proposed change first ensures that it makes sense to check for VFIO
> > support in the first place, and only then performs the VFIO support check
> > itself.
> >
> > Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1441291
> >
> > Signed-off-by: Erik Skultety <eskultet at redhat.com>
> > ---
> > src/qemu/qemu_hostdev.c | 16 ++++++++++++----
> > 1 file changed, 12 insertions(+), 4 deletions(-)
> >
> > diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c
> > index 685bf5b59..9b5504832 100644
> > --- a/src/qemu/qemu_hostdev.c
> > +++ b/src/qemu/qemu_hostdev.c
> > @@ -330,11 +330,19 @@ qemuHostdevPrepareMediatedDevices(virQEMUDriverPtr driver,
> > int nhostdevs)
> > {
> > virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr;
> > + bool supportsVFIO = qemuHostdevHostSupportsPassthroughVFIO();
> > + size_t i;
> >
> > - if (!qemuHostdevHostSupportsPassthroughVFIO()) {
> > - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> > - _("host doesn't support VFIO PCI interface"));
> > - return -1;
> > + for (i = 0; i < nhostdevs; i++) {
> > + if (hostdevs[i]->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
> > + hostdevs[i]->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) {
> > + if (!supportsVFIO) {
> > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> > + _("host doesn't support VFIO PCI interface"));
>
> BTW, I'd suggest changing that message to
>
> "Mediated host device assignment requires VFIO support"
>
> to make it clear what feature usage is triggering the error
>
> > + return -1;
> > + }
> > + break;
> > + }
> > }
> >
> > return virHostdevPrepareMediatedDevices(hostdev_mgr, QEMU_DRIVER_NAME,
>
> ACK,
Adjusted and pushed, thanks.
Erik
More information about the libvir-list
mailing list