$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(a)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(a)redhat.com>
John
[...]