diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c index 330a391de4151bd2d8a8e738fc3421d4a25e3c8f..ade2033e273c8386b0a12e41716462ac0cb5a9a4 100644 --- a/src/qemu/qemu_alias.c +++ b/src/qemu/qemu_alias.c @@ -401,6 +401,26 @@ qemuAssignDeviceRNGAlias(virDomainDefPtr def, } +int +qemuAssignDeviceMemoryAlias(virDomainDefPtr def, + virDomainMemoryDefPtr mem) +{ + size_t i; + int maxidx = 0; + int idx; + + for (i = 0; i < def->nmems; i++) { + if ((idx = qemuDomainDeviceAliasIndex(&def->mems[i]->info, "dimm")) >= maxidx) + maxidx = idx + 1; + } + + if (virAsprintf(&mem->info.alias, "dimm%d", maxidx) < 0) + return -1; + + return 0; +} + + int qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCapsPtr qemuCaps) { diff --git a/src/qemu/qemu_alias.h b/src/qemu/qemu_alias.h index f09466d77ebf891d1f09925261b2488522c1df40..2d7bc9b376c50652d5a304d116ffd58698f5ec8c 100644 --- a/src/qemu/qemu_alias.h +++ b/src/qemu/qemu_alias.h @@ -57,6 +57,9 @@ int qemuAssignDeviceRedirdevAlias(virDomainDefPtr def, int qemuAssignDeviceRNGAlias(virDomainDefPtr def, virDomainRNGDefPtr rng); +int qemuAssignDeviceMemoryAlias(virDomainDefPtr def, + virDomainMemoryDefPtr mems); + int qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCapsPtr qemuCaps); int qemuDomainDeviceAliasIndex(const virDomainDeviceInfo *info, diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index b9a8b51594633f0b29a2df55e06dd410774d7198..bd1a128090bfb981e040f149b59c225f056be6b1 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1751,7 +1751,7 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver, if (qemuDomainDefValidateMemoryHotplug(vm->def, priv->qemuCaps, mem) < 0) goto cleanup; - if (virAsprintf(&mem->info.alias, "dimm%zu", vm->def->nmems) < 0) + if (qemuAssignDeviceMemoryAlias(vm->def, mem) < 0) goto cleanup; if (virAsprintf(&objalias, "mem%s", mem->info.alias) < 0)