}
for (i = 0; i < def->cpu->ncells; i++) {
+ virDomainHugePagePtr hugepage = NULL;
unsigned long long cellmem = VIR_DIV_UP(def->cpu->cells[i].mem, 1024);
def->cpu->cells[i].mem = cellmem * 1024;
virMemAccess memAccess = def->cpu->cells[i].memAccess;
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) ||
virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) {
virDomainNumatuneMemMode mode;
- virDomainHugePagePtr hugepage = NULL;
const char *policy = NULL;
mode = virDomainNumatuneGetMode(def->numatune, i);
virBufferAsprintf(&buf, ",policy=%s", policy);
}
- virCommandAddArg(cmd, "-object");
- virCommandAddArgBuffer(cmd, &buf);
+ if (hugepage || nodemask) {
+ virCommandAddArg(cmd, "-object");
+ virCommandAddArgBuffer(cmd, &buf);
+ } else {
+ virBufferFreeAndReset(&buf);
+ }
} else {
if (memAccess) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
virBufferAdd(&buf, tmpmask, -1);
}
- if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) ||
- virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE)) {
+ if (hugepage || nodemask)
virBufferAsprintf(&buf, ",memdev=ram-node%zu", i);
- } else {
+ else
virBufferAsprintf(&buf, ",mem=%llu", cellmem);
- }
virCommandAddArgBuffer(cmd, &buf);
}
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
/usr/bin/qemu -S -M pc -m 1024 -smp 2 \
--object memory-backend-ram,size=256M,id=ram-node0 \
--numa node,nodeid=0,cpus=0,memdev=ram-node0 \
+-numa node,nodeid=0,cpus=0,mem=256 \
-object memory-backend-file,prealloc=yes,\
mem-path=/dev/hugepages1G/libvirt/qemu,size=768M,id=ram-node1 \
-numa node,nodeid=1,cpus=1,memdev=ram-node1 \
/usr/bin/kvm -S -M pc -m 64 -smp 2 \
-object memory-backend-ram,size=32M,id=ram-node0,host-nodes=3,policy=preferred \
-numa node,nodeid=0,cpus=0,memdev=ram-node0 \
--object memory-backend-ram,size=32M,id=ram-node1 \
--numa node,nodeid=1,cpus=1,memdev=ram-node1 \
+-numa node,nodeid=1,cpus=1,mem=32 \
-nographic -monitor unix:/tmp/test-monitor,server,nowait \
-no-acpi -boot c -usb -net none -serial none -parallel none