On 03/17/2015 10:19 AM, Peter Krempa wrote: > Add support to start qemu instance with 'pc-dimm' device. Thanks to the > refactors we are able to reuse the existing function to determine the > parameters. > --- > > Notes: > Version 2: > - dropped the ACPI naming > > src/qemu/qemu_command.c | 130 ++++++++++++++++++++- > src/qemu/qemu_domain.c | 26 ++++- > src/qemu/qemu_domain.h | 1 + > .../qemuxml2argv-memory-hotplug-dimm.args | 11 ++ > tests/qemuxml2argvtest.c | 2 + > tests/qemuxml2xmltest.c | 1 + > 6 files changed, 167 insertions(+), 4 deletions(-) > create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-memory-hotplug-dimm.args > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > index ef8feeb..2d85567 100644 > --- a/src/qemu/qemu_command.c > +++ b/src/qemu/qemu_command.c > @@ -1222,6 +1222,10 @@ qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCapsPtr qemuCaps) > if (virAsprintf(&def->tpm->info.alias, "tpm%d", 0) < 0) > return -1; > } > + for (i = 0; i < def->nmems; i++) { > + if (virAsprintf(&def->mems[i]->info.alias, "dimm%zu", i) < 0) > + return -1; > + } > > return 0; > } > @@ -4612,8 +4616,7 @@ qemuBuildMemoryBackendStr(unsigned long long size, > virDomainHugePagePtr hugepage = NULL; > virDomainNumatuneMemMode mode; > const long system_page_size = virGetSystemPageSizeKB(); > - virNumaMemAccess memAccess = virDomainNumaGetNodeMemoryAccessMode(def->numa, guestNode); > - > + virNumaMemAccess memAccess = VIR_NUMA_MEM_ACCESS_DEFAULT; > size_t i; > char *mem_path = NULL; > virBitmapPtr nodemask = NULL; > @@ -4626,6 +4629,16 @@ qemuBuildMemoryBackendStr(unsigned long long size, > if (!(props = virJSONValueNewObject())) > return -1; > > + /* memory devices could provide a invalid guest node */ > + if (guestNode >= virDomainNumaGetNodeCount(def->numa)) { > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > + _("can't add memory backend for guest node '%d' as " > + "the guest has only '%zu' NUMA nodes configured"), > + guestNode, virDomainNumaGetNodeCount(def->numa)); Coverity points out that 'props' is being leaked here. So probably should go to cleanup or move this entire hunk above the props = line. In my test I just moved these lines above the props fetch and Coverity was happy John > + return -1; > + } > + > + memAccess = virDomainNumaGetNodeMemoryAccessMode(def->numa, guestNode); > mode = virDomainNumatuneGetMode(def->numa, guestNode); > > if (pagesize == 0 || pagesize != system_page_size) { > @@ -4823,6 +4836,95 @@ qemuBuildMemoryCellBackendStr(virDomainDefPtr def, > } > > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list