mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 19:32:19 +00:00
util: virhostdev: add virHostdevIsMdevDevice()
Add the function virHostdevIsMdevDevice() which detects whether a hostdev is a mediated device or not. Also, replace all existing conditionals. Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com> Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com> Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
263e65fd20
commit
2b9690b62d
@ -1928,6 +1928,7 @@ virHostCPUStatsAssign;
|
|||||||
|
|
||||||
# util/virhostdev.h
|
# util/virhostdev.h
|
||||||
virHostdevFindUSBDevice;
|
virHostdevFindUSBDevice;
|
||||||
|
virHostdevIsMdevDevice;
|
||||||
virHostdevIsSCSIDevice;
|
virHostdevIsSCSIDevice;
|
||||||
virHostdevManagerGetDefault;
|
virHostdevManagerGetDefault;
|
||||||
virHostdevPCINodeDeviceDetach;
|
virHostdevPCINodeDeviceDetach;
|
||||||
|
@ -5326,9 +5326,7 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* MDEV */
|
/* MDEV */
|
||||||
if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
|
if (virHostdevIsMdevDevice(hostdev)) {
|
||||||
subsys->type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) {
|
|
||||||
|
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) {
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
_("VFIO PCI device assignment is not "
|
_("VFIO PCI device assignment is not "
|
||||||
|
@ -655,10 +655,10 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev,
|
|||||||
virPCIDevicePtr pciDev;
|
virPCIDevicePtr pciDev;
|
||||||
virPCIDeviceAddressPtr hostAddr = &hostdev->source.subsys.u.pci.addr;
|
virPCIDeviceAddressPtr hostAddr = &hostdev->source.subsys.u.pci.addr;
|
||||||
|
|
||||||
if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
|
if (!virHostdevIsMdevDevice(hostdev) &&
|
||||||
|
(hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
|
||||||
(hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
|
(hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
|
||||||
hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV &&
|
hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST))) {
|
||||||
hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST)) {
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,8 +339,7 @@ qemuHostdevPrepareMediatedDevices(virQEMUDriverPtr driver,
|
|||||||
supportsVFIO = virFileExists("/dev/vfio/vfio");
|
supportsVFIO = virFileExists("/dev/vfio/vfio");
|
||||||
|
|
||||||
for (i = 0; i < nhostdevs; i++) {
|
for (i = 0; i < nhostdevs; i++) {
|
||||||
if (hostdevs[i]->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
|
if (virHostdevIsMdevDevice(hostdevs[i])) {
|
||||||
hostdevs[i]->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) {
|
|
||||||
if (!supportsVFIO) {
|
if (!supportsVFIO) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
_("Mediated host device assignment requires "
|
_("Mediated host device assignment requires "
|
||||||
|
@ -372,6 +372,20 @@ virHostdevIsSCSIDevice(virDomainHostdevDefPtr hostdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virHostdevIsMdevDevice:
|
||||||
|
* @hostdev: host device to check
|
||||||
|
*
|
||||||
|
* Returns true if @hostdev is a Mediated device, false otherwise.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
virHostdevIsMdevDevice(virDomainHostdevDefPtr hostdev)
|
||||||
|
{
|
||||||
|
return hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
|
||||||
|
hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virHostdevNetConfigVirtPortProfile(const char *linkdev, int vf,
|
virHostdevNetConfigVirtPortProfile(const char *linkdev, int vf,
|
||||||
virNetDevVPortProfilePtr virtPort,
|
virNetDevVPortProfilePtr virtPort,
|
||||||
@ -1330,10 +1344,8 @@ virHostdevUpdateActiveMediatedDevices(virHostdevManagerPtr mgr,
|
|||||||
|
|
||||||
mdevsrc = &hostdev->source.subsys.u.mdev;
|
mdevsrc = &hostdev->source.subsys.u.mdev;
|
||||||
|
|
||||||
if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
|
if (!virHostdevIsMdevDevice(hostdev))
|
||||||
hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
if (!(mdev = virMediatedDeviceNew(mdevsrc->uuidstr, mdevsrc->model)))
|
if (!(mdev = virMediatedDeviceNew(mdevsrc->uuidstr, mdevsrc->model)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
@ -1828,9 +1840,7 @@ virHostdevPrepareMediatedDevices(virHostdevManagerPtr mgr,
|
|||||||
virDomainHostdevSubsysMediatedDevPtr src = &hostdev->source.subsys.u.mdev;
|
virDomainHostdevSubsysMediatedDevPtr src = &hostdev->source.subsys.u.mdev;
|
||||||
virMediatedDevicePtr mdev;
|
virMediatedDevicePtr mdev;
|
||||||
|
|
||||||
if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
|
if (!virHostdevIsMdevDevice(hostdev))
|
||||||
continue;
|
|
||||||
if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!(mdev = virMediatedDeviceNew(src->uuidstr, src->model)))
|
if (!(mdev = virMediatedDeviceNew(src->uuidstr, src->model)))
|
||||||
@ -2087,10 +2097,8 @@ virHostdevReAttachMediatedDevices(virHostdevManagerPtr mgr,
|
|||||||
|
|
||||||
mdevsrc = &hostdev->source.subsys.u.mdev;
|
mdevsrc = &hostdev->source.subsys.u.mdev;
|
||||||
|
|
||||||
if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
|
if (!virHostdevIsMdevDevice(hostdev))
|
||||||
hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
if (!(mdev = virMediatedDeviceNew(mdevsrc->uuidstr,
|
if (!(mdev = virMediatedDeviceNew(mdevsrc->uuidstr,
|
||||||
mdevsrc->model)))
|
mdevsrc->model)))
|
||||||
|
@ -191,6 +191,9 @@ virHostdevReAttachDomainDevices(virHostdevManagerPtr mgr,
|
|||||||
bool
|
bool
|
||||||
virHostdevIsSCSIDevice(virDomainHostdevDefPtr hostdev)
|
virHostdevIsSCSIDevice(virDomainHostdevDefPtr hostdev)
|
||||||
ATTRIBUTE_NONNULL(1);
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
bool
|
||||||
|
virHostdevIsMdevDevice(virDomainHostdevDefPtr hostdev)
|
||||||
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
|
||||||
/* functions used by NodeDevDetach/Reattach/Reset */
|
/* functions used by NodeDevDetach/Reattach/Reset */
|
||||||
int virHostdevPCINodeDeviceDetach(virHostdevManagerPtr mgr,
|
int virHostdevPCINodeDeviceDetach(virHostdevManagerPtr mgr,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user