diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3108bdd581..80adf5b716 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7371,6 +7371,7 @@ qemuBuildMemPathStr(const virDomainDef *def, g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(priv->driver); const long system_page_size = virGetSystemPageSizeKB(); g_autofree char *mem_path = NULL; + bool prealloc = false; /* There are two cases where we want to put -mem-path onto * the command line: First one is when there are no guest @@ -7384,19 +7385,22 @@ qemuBuildMemPathStr(const virDomainDef *def, return -1; if (qemuGetDomainHupageMemPath(priv->driver, def, pagesize, &mem_path) < 0) return -1; + prealloc = true; } else if (def->mem.source == VIR_DOMAIN_MEMORY_SOURCE_FILE) { if (qemuGetMemoryBackingPath(priv->driver, def, "ram", &mem_path) < 0) return -1; - } else { - return 0; } - if (def->mem.allocation != VIR_DOMAIN_MEMORY_ALLOCATION_IMMEDIATE) { + if (def->mem.allocation == VIR_DOMAIN_MEMORY_ALLOCATION_IMMEDIATE) + prealloc = true; + + if (prealloc && !priv->memPrealloc) { virCommandAddArgList(cmd, "-mem-prealloc", NULL); priv->memPrealloc = true; } - virCommandAddArgList(cmd, "-mem-path", mem_path, NULL); + if (mem_path) + virCommandAddArgList(cmd, "-mem-path", mem_path, NULL); return 0; } @@ -7462,11 +7466,6 @@ qemuBuildMemCommandLine(virCommand *cmd, if (!virDomainNumaGetNodeCount(def->numa)) qemuBuildMemCommandLineMemoryDefaultBackend(cmd, def, priv, defaultRAMid); } else { - if (def->mem.allocation == VIR_DOMAIN_MEMORY_ALLOCATION_IMMEDIATE) { - virCommandAddArgList(cmd, "-mem-prealloc", NULL); - priv->memPrealloc = true; - } - /* * Add '-mem-path' (and '-mem-prealloc') parameter here if * the hugepages and no numa node is specified. diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology.args b/tests/qemuxml2argvdata/fd-memory-numa-topology.args index f2e0941500..48460f9bc3 100644 --- a/tests/qemuxml2argvdata/fd-memory-numa-topology.args +++ b/tests/qemuxml2argvdata/fd-memory-numa-topology.args @@ -13,10 +13,9 @@ QEMU_AUDIO_DRV=none \ -object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-instance-00000092/master-key.aes \ -machine pc-i440fx-2.3,accel=kvm,usb=off,dump-guest-core=off \ -m 14336 \ --mem-prealloc \ -realtime mlock=off \ -smp 8,sockets=1,cores=8,threads=1 \ --object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=on,size=15032385536 \ +-object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=on,prealloc=on,size=15032385536 \ -numa node,nodeid=0,cpus=0-7,memdev=ram-node0 \ -uuid 126f2720-6f8e-45ab-a886-ec9277079a67 \ -display none \ diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology2.args b/tests/qemuxml2argvdata/fd-memory-numa-topology2.args index e04d814302..e612c6bc54 100644 --- a/tests/qemuxml2argvdata/fd-memory-numa-topology2.args +++ b/tests/qemuxml2argvdata/fd-memory-numa-topology2.args @@ -13,12 +13,11 @@ QEMU_AUDIO_DRV=none \ -object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-instance-00000092/master-key.aes \ -machine pc-i440fx-2.3,accel=kvm,usb=off,dump-guest-core=off \ -m 28672 \ --mem-prealloc \ -realtime mlock=off \ -smp 20,sockets=1,cores=8,threads=1 \ --object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=off,size=15032385536 \ +-object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=off,prealloc=on,size=15032385536 \ -numa node,nodeid=0,cpus=0-7,memdev=ram-node0 \ --object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node1,share=on,size=15032385536 \ +-object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node1,share=on,prealloc=on,size=15032385536 \ -numa node,nodeid=1,cpus=8-15,memdev=ram-node1 \ -uuid 126f2720-6f8e-45ab-a886-ec9277079a67 \ -display none \ diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology3.args b/tests/qemuxml2argvdata/fd-memory-numa-topology3.args index 497eabe58d..63c8db8db7 100644 --- a/tests/qemuxml2argvdata/fd-memory-numa-topology3.args +++ b/tests/qemuxml2argvdata/fd-memory-numa-topology3.args @@ -13,14 +13,13 @@ QEMU_AUDIO_DRV=none \ -object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-instance-00000092/master-key.aes \ -machine pc-i440fx-2.3,accel=kvm,usb=off,dump-guest-core=off \ -m 43008 \ --mem-prealloc \ -realtime mlock=off \ -smp 32,sockets=1,cores=24,threads=1 \ --object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=on,size=15032385536 \ +-object memory-backend-file,id=ram-node0,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node0,share=on,prealloc=on,size=15032385536 \ -numa node,nodeid=0,cpus=0-1,memdev=ram-node0 \ --object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node1,share=on,size=15032385536 \ +-object memory-backend-file,id=ram-node1,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node1,share=on,prealloc=on,size=15032385536 \ -numa node,nodeid=1,cpus=2-3,memdev=ram-node1 \ --object memory-backend-file,id=ram-node2,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node2,share=off,size=15032385536 \ +-object memory-backend-file,id=ram-node2,mem-path=/var/lib/libvirt/qemu/ram/-1-instance-00000092/ram-node2,share=off,prealloc=on,size=15032385536 \ -numa node,nodeid=2,cpus=4-5,memdev=ram-node2 \ -uuid 126f2720-6f8e-45ab-a886-ec9277079a67 \ -display none \ diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology4.x86_64-latest.args b/tests/qemuxml2argvdata/fd-memory-numa-topology4.x86_64-latest.args index 37197efd6e..8e63cacb5a 100644 --- a/tests/qemuxml2argvdata/fd-memory-numa-topology4.x86_64-latest.args +++ b/tests/qemuxml2argvdata/fd-memory-numa-topology4.x86_64-latest.args @@ -15,6 +15,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-pc/.config \ -m 1024 \ -overcommit mem-lock=off \ -smp 2,sockets=2,cores=1,threads=1 \ +-mem-prealloc \ -numa node,nodeid=0,cpus=0-1,mem=1024 \ -uuid bb508b28-d57b-44bd-9e9c-a134cef24b60 \ -display none \