On Fri, Jan 30, 2015 at 02:21:03PM +0100, Peter Krempa wrote:
When using 'acpi-dimm' memory devices with qemu, some of the
information
like the slot number and base address need to be reloaded from qemu
after process start so that it reflects the actual state. The state then
allows to use memory devices across migrations.
---
src/qemu/qemu_domain.c | 43 ++++++++++++++++
src/qemu/qemu_domain.h | 4 ++
src/qemu/qemu_monitor.c | 45 +++++++++++++++++
src/qemu/qemu_monitor.h | 14 ++++++
src/qemu/qemu_monitor_json.c | 116 +++++++++++++++++++++++++++++++++++++++++++
src/qemu/qemu_monitor_json.h | 5 ++
src/qemu/qemu_process.c | 4 ++
7 files changed, 231 insertions(+)
diff --git a/src/qemu/qemu_monitor_json.c
b/src/qemu/qemu_monitor_json.c
index da5c14d..333a69a 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -6569,3 +6569,119 @@ qemuMonitorJSONGetIOThreads(qemuMonitorPtr mon,
virJSONValueFree(reply);
return ret;
}
+
+
+int
+qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitorPtr mon,
+ virHashTablePtr info)
+{
+ int ret = -1;
+ virJSONValuePtr cmd;
+ virJSONValuePtr reply = NULL;
+ virJSONValuePtr data = NULL;
+ qemuMonitorMemoryDeviceInfoPtr meminfo = NULL;
+ ssize_t n;
+ size_t i;
+
+ if (!(cmd = qemuMonitorJSONMakeCommand("query-memory-devices", NULL)))
+ return -1;
+
+ ret = qemuMonitorJSONCommand(mon, cmd, &reply);
+
+ if (ret == 0)
+ ret = qemuMonitorJSONCheckError(cmd, reply);
Missing check for a missing command.
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index b0f7b1c..ba7c8e2 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -4871,6 +4871,10 @@ int qemuProcessStart(virConnectPtr conn,
if (qemuDomainUpdateDeviceList(driver, vm, asyncJob) < 0)
goto cleanup;
+ VIR_DEBUG("Updating info of memory devices");
+ if (qemuDomainUpdateMemoryDeviceInfo(driver, vm, asyncJob) < 0)
+ goto cleanup;
Return value of -2 should not be fatal.
Jan
+
/* Technically, qemuProcessStart can be called from inside
* QEMU_ASYNC_JOB_MIGRATION_IN, but we are okay treating this like
* a sync job since no other job can call into the domain until
--
2.2.2
--
libvir-list mailing list
libvir-list(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list