qemu_command.c: move SHMEM validation to qemu_validate.c
Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
parent
c47b013992
commit
eb42c1313f
@ -8410,13 +8410,6 @@ qemuBuildShmemDevLegacyStr(virDomainDefPtr def,
|
|||||||
{
|
{
|
||||||
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
||||||
|
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_IVSHMEM)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("ivshmem device is not supported "
|
|
||||||
"with this QEMU binary"));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
virBufferAddLit(&buf, "ivshmem");
|
virBufferAddLit(&buf, "ivshmem");
|
||||||
virBufferAsprintf(&buf, ",id=%s", shmem->info.alias);
|
virBufferAsprintf(&buf, ",id=%s", shmem->info.alias);
|
||||||
|
|
||||||
@ -8450,17 +8443,6 @@ qemuBuildShmemDevStr(virDomainDefPtr def,
|
|||||||
{
|
{
|
||||||
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
||||||
|
|
||||||
if ((shmem->model == VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_PLAIN &&
|
|
||||||
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_IVSHMEM_PLAIN)) ||
|
|
||||||
(shmem->model == VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_DOORBELL &&
|
|
||||||
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL))) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
_("shmem model '%s' is not supported "
|
|
||||||
"by this QEMU binary"),
|
|
||||||
virDomainShmemModelTypeToString(shmem->model));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
virBufferAdd(&buf, virDomainShmemModelTypeToString(shmem->model), -1);
|
virBufferAdd(&buf, virDomainShmemModelTypeToString(shmem->model), -1);
|
||||||
virBufferAsprintf(&buf, ",id=%s", shmem->info.alias);
|
virBufferAsprintf(&buf, ",id=%s", shmem->info.alias);
|
||||||
|
|
||||||
|
@ -4398,6 +4398,44 @@ qemuValidateDomainDeviceDefMemory(virDomainMemoryDefPtr mem,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
qemuValidateDomainDeviceDefShmem(virDomainShmemDefPtr shmem,
|
||||||
|
virQEMUCapsPtr qemuCaps)
|
||||||
|
{
|
||||||
|
switch (shmem->model) {
|
||||||
|
case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM:
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_IVSHMEM)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("ivshmem device is not supported "
|
||||||
|
"with this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_PLAIN:
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_IVSHMEM_PLAIN)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
_("shmem model '%s' is not supported "
|
||||||
|
"by this QEMU binary"),
|
||||||
|
virDomainShmemModelTypeToString(shmem->model));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_SHMEM_MODEL_IVSHMEM_DOORBELL:
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
_("shmem model '%s' is not supported "
|
||||||
|
"by this QEMU binary"),
|
||||||
|
virDomainShmemModelTypeToString(shmem->model));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
qemuValidateDomainDeviceDef(const virDomainDeviceDef *dev,
|
qemuValidateDomainDeviceDef(const virDomainDeviceDef *dev,
|
||||||
const virDomainDef *def,
|
const virDomainDef *def,
|
||||||
@ -4512,8 +4550,11 @@ qemuValidateDomainDeviceDef(const virDomainDeviceDef *dev,
|
|||||||
ret = qemuValidateDomainDeviceDefMemory(dev->data.memory, qemuCaps);
|
ret = qemuValidateDomainDeviceDefMemory(dev->data.memory, qemuCaps);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_DEVICE_LEASE:
|
|
||||||
case VIR_DOMAIN_DEVICE_SHMEM:
|
case VIR_DOMAIN_DEVICE_SHMEM:
|
||||||
|
ret = qemuValidateDomainDeviceDefShmem(dev->data.shmem, qemuCaps);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_DEVICE_LEASE:
|
||||||
case VIR_DOMAIN_DEVICE_PANIC:
|
case VIR_DOMAIN_DEVICE_PANIC:
|
||||||
case VIR_DOMAIN_DEVICE_AUDIO:
|
case VIR_DOMAIN_DEVICE_AUDIO:
|
||||||
case VIR_DOMAIN_DEVICE_NONE:
|
case VIR_DOMAIN_DEVICE_NONE:
|
||||||
|
@ -2946,7 +2946,7 @@ mymain(void)
|
|||||||
DO_TEST("shmem-plain-doorbell", QEMU_CAPS_DEVICE_IVSHMEM,
|
DO_TEST("shmem-plain-doorbell", QEMU_CAPS_DEVICE_IVSHMEM,
|
||||||
QEMU_CAPS_DEVICE_IVSHMEM_PLAIN,
|
QEMU_CAPS_DEVICE_IVSHMEM_PLAIN,
|
||||||
QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL);
|
QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL);
|
||||||
DO_TEST_FAILURE("shmem", NONE);
|
DO_TEST_PARSE_ERROR("shmem", NONE);
|
||||||
DO_TEST_FAILURE("shmem-invalid-size",
|
DO_TEST_FAILURE("shmem-invalid-size",
|
||||||
QEMU_CAPS_DEVICE_IVSHMEM);
|
QEMU_CAPS_DEVICE_IVSHMEM);
|
||||||
DO_TEST_FAILURE("shmem-invalid-address",
|
DO_TEST_FAILURE("shmem-invalid-address",
|
||||||
|
@ -1148,7 +1148,7 @@ mymain(void)
|
|||||||
|
|
||||||
DO_TEST("tap-vhost", NONE);
|
DO_TEST("tap-vhost", NONE);
|
||||||
DO_TEST("tap-vhost-incorrect", NONE);
|
DO_TEST("tap-vhost-incorrect", NONE);
|
||||||
DO_TEST("shmem", NONE);
|
DO_TEST("shmem", QEMU_CAPS_DEVICE_IVSHMEM);
|
||||||
DO_TEST("shmem-plain-doorbell",
|
DO_TEST("shmem-plain-doorbell",
|
||||||
QEMU_CAPS_DEVICE_IVSHMEM_PLAIN, QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL);
|
QEMU_CAPS_DEVICE_IVSHMEM_PLAIN, QEMU_CAPS_DEVICE_IVSHMEM_DOORBELL);
|
||||||
DO_TEST("smbios", NONE);
|
DO_TEST("smbios", NONE);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user