Signed-off-by: Daniel Henrique Barboza <danielhb413(a)gmail.com>
---
src/qemu/qemu_command.c | 11 ++---------
src/qemu/qemu_command.h | 3 +--
src/qemu/qemu_hotplug.c | 2 +-
src/qemu/qemu_validate.c | 19 ++++++++++++++-----
tests/qemuxml2xmltest.c | 3 ++-
5 files changed, 20 insertions(+), 18 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index ed14e1d01f..faa64c28b6 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -3199,8 +3199,7 @@ qemuBuildMemoryDimmBackendStr(virBufferPtr buf,
char *
-qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem,
- qemuDomainObjPrivatePtr priv)
+qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem)
{
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
const char *device;
@@ -3236,12 +3235,6 @@ qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem,
}
if (mem->readonly) {
- if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE_NVDIMM_UNARMED)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("nvdimm readonly property is not available "
- "with this QEMU binary"));
- return NULL;
- }
virBufferAddLit(&buf, "unarmed=on,");
}
@@ -7415,7 +7408,7 @@ qemuBuildMemoryDeviceCommandLine(virCommandPtr cmd,
virCommandAddArg(cmd, "-object");
virCommandAddArgBuffer(cmd, &buf);
- if (!(dimmStr = qemuBuildMemoryDeviceStr(def->mems[i], priv)))
+ if (!(dimmStr = qemuBuildMemoryDeviceStr(def->mems[i])))
return -1;
virCommandAddArgList(cmd, "-device", dimmStr, NULL);
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
index 12014b1451..d452905fdf 100644
--- a/src/qemu/qemu_command.h
+++ b/src/qemu/qemu_command.h
@@ -154,8 +154,7 @@ int qemuBuildMemoryBackendProps(virJSONValuePtr *backendProps,
const virDomainMemoryDef *mem,
bool force);
-char *qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem,
- qemuDomainObjPrivatePtr priv);
+char *qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem);
/* Current, best practice */
char *qemuBuildPCIHostdevDevStr(const virDomainDef *def,
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index fdb3801af0..f76e773f64 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -2384,7 +2384,7 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver,
objalias = g_strdup_printf("mem%s", mem->info.alias);
- if (!(devstr = qemuBuildMemoryDeviceStr(mem, priv)))
+ if (!(devstr = qemuBuildMemoryDeviceStr(mem)))
goto cleanup;
if (qemuBuildMemoryBackendProps(&props, objalias, cfg,
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index a5e3849ae5..0f4cb3c983 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -4509,11 +4509,20 @@ static int
qemuValidateDomainDeviceDefMemory(virDomainMemoryDefPtr mem,
virQEMUCapsPtr qemuCaps)
{
- if (mem->model == VIR_DOMAIN_MEMORY_MODEL_NVDIMM &&
- !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_NVDIMM)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("nvdimm isn't supported by this QEMU binary"));
- return -1;
+ if (mem->model == VIR_DOMAIN_MEMORY_MODEL_NVDIMM) {
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_NVDIMM)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("nvdimm isn't supported by this QEMU
binary"));
+ return -1;
+ }
+
+ if (mem->readonly &&
+ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_NVDIMM_UNARMED)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("nvdimm readonly property is not available "
+ "with this QEMU binary"));
+ return -1;
+ }
}
return 0;
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 1cd57c6bc1..c11f09e04a 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -1284,7 +1284,8 @@ mymain(void)
DO_TEST("memory-hotplug-nvdimm-label", QEMU_CAPS_DEVICE_NVDIMM);
DO_TEST("memory-hotplug-nvdimm-align", QEMU_CAPS_DEVICE_NVDIMM);
DO_TEST("memory-hotplug-nvdimm-pmem", QEMU_CAPS_DEVICE_NVDIMM);
- DO_TEST("memory-hotplug-nvdimm-readonly", QEMU_CAPS_DEVICE_NVDIMM);
+ DO_TEST("memory-hotplug-nvdimm-readonly", QEMU_CAPS_DEVICE_NVDIMM,
+ QEMU_CAPS_DEVICE_NVDIMM_UNARMED);
DO_TEST("memory-hotplug-nvdimm-ppc64",
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
QEMU_CAPS_DEVICE_NVDIMM);
DO_TEST("net-udp", NONE);
--
2.26.2