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@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list