
$SUBJ: qemu: Add qemu command-line to generate the nvdimm unarmed property On 12/20/18 4:14 AM, Luyao Zhong wrote:
According to the result parsing from xml, add unarmed property into QEMU command line:
-device nvdimm,...[,unarmed=on/off]
unarmed=on (off is never added)
Signed-off-by: Luyao Zhong <luyao.zhong@intel.com> --- src/qemu/qemu_command.c | 16 ++++++++-- src/qemu/qemu_command.h | 3 +- src/qemu/qemu_hotplug.c | 2 +- ...mory-hotplug-nvdimm-readonly.x86_64-latest.args | 36 ++++++++++++++++++++++ tests/qemuxml2argvtest.c | 1 + 5 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.x86_64-latest.args
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 6a06161..1de3d07 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3567,7 +3567,8 @@ qemuBuildMemoryDimmBackendStr(virBufferPtr buf,
char * -qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem) +qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem, + qemuDomainObjPrivatePtr priv) { virBuffer buf = VIR_BUFFER_INITIALIZER; const char *device; @@ -3595,6 +3596,17 @@ qemuBuildMemoryDeviceStr(virDomainMemoryDefPtr mem) if (mem->labelsize) virBufferAsprintf(&buf, "label-size=%llu,", mem->labelsize * 1024);
+ if (mem->readonly) { + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DEVICE_NVDIMM_UNARMED)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Set readonly for nvdimm, but the corresponding unarmed" + "property is not available with this QEMU binary"));
_("nvdimm readonly property is not available " "with this QEMU binary")); (consistency and no need to confuse the consumer with using 'unarmed').
+ return NULL; + } + virBufferAsprintf(&buf, "unarmed=%s,", + mem->readonly ? "on" : "off");
Similar to previous, we cannot have "off" here, so just go with: virBufferAddLit(&buf, "unarmed=on,"); I can adjust for you, Reviewed-by: John Ferlan <jferlan@redhat.com> John [...]