1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

qemu: prepare domain for vhost-user GPU

Call qemuExtVhostUserGPUPrepareDomain() to fill the domain with the
location of the vhost-user binary to start.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Marc-André Lureau 2019-09-23 14:44:40 +04:00 committed by Cole Robinson
parent 06049e9f73
commit 638f066b73
3 changed files with 38 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#include <config.h>
#include "qemu_extdevice.h"
#include "qemu_vhost_user_gpu.h"
#include "qemu_domain.h"
#include "qemu_tpm.h"
#include "qemu_slirp.h"
@ -78,6 +79,34 @@ qemuExtDevicesInitPaths(virQEMUDriverPtr driver,
}
/*
* qemuExtDevicesPrepareDomain:
*
* @driver: QEMU driver
* @vm: domain
*
* Code that modifies live XML of a domain which is about to start.
*/
int
qemuExtDevicesPrepareDomain(virQEMUDriverPtr driver,
virDomainObjPtr vm)
{
int ret = 0;
size_t i;
for (i = 0; i < vm->def->nvideos; i++) {
virDomainVideoDefPtr video = vm->def->videos[i];
if (video->backend == VIR_DOMAIN_VIDEO_BACKEND_TYPE_VHOSTUSER) {
if ((ret = qemuExtVhostUserGPUPrepareDomain(driver, video)) < 0)
break;
}
}
return ret;
}
/*
* qemuExtDevicesPrepareHost:
*

View File

@ -30,6 +30,11 @@ int qemuExtDeviceLogCommand(virQEMUDriverPtr driver,
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4)
ATTRIBUTE_RETURN_CHECK;
int qemuExtDevicesPrepareDomain(virQEMUDriverPtr driver,
virDomainObjPtr vm)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
ATTRIBUTE_RETURN_CHECK;
int qemuExtDevicesPrepareHost(virQEMUDriverPtr driver,
virDomainObjPtr vm)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)

View File

@ -6367,6 +6367,10 @@ qemuProcessPrepareDomain(virQEMUDriverPtr driver,
if (qemuFirmwareFillDomain(driver, vm, flags) < 0)
goto cleanup;
VIR_DEBUG("Preparing external devices");
if (qemuExtDevicesPrepareDomain(driver, vm) < 0)
goto cleanup;
for (i = 0; i < vm->def->nchannels; i++) {
if (qemuDomainPrepareChannel(vm->def->channels[i],
priv->channelTargetDir) < 0)