mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: Don't generate '-machine memory-backend' and '-numa memdev'
In 88957116c9 I've switched to -machine memory-backend=ID and -object memory-backend-* because QEMU is obsoleting -mem-path and -mem-prealloc. However, what I did not foresee was that using -machine memory-backend in combination with -numa is not allowed in QEMU. This was reported upstream and fortunately not released yet. The problem is that if domain has NUMA nodes then we will generate memory-backend-* objects for NUMA nodes (because if QEMU is new enough to expose default RAM ID it also supports -numa memdev=) and adding non-NUMA memory backend is wrong. Reported-by: Masayoshi Mizuma <msys.mizuma@gmail.com> Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
parent
6ddb1f803e
commit
0c8ab47847
@ -6829,7 +6829,6 @@ qemuBuildMachineCommandLine(virCommandPtr cmd,
|
|||||||
virTristateSwitch vmport = def->features[VIR_DOMAIN_FEATURE_VMPORT];
|
virTristateSwitch vmport = def->features[VIR_DOMAIN_FEATURE_VMPORT];
|
||||||
virTristateSwitch smm = def->features[VIR_DOMAIN_FEATURE_SMM];
|
virTristateSwitch smm = def->features[VIR_DOMAIN_FEATURE_SMM];
|
||||||
virCPUDefPtr cpu = def->cpu;
|
virCPUDefPtr cpu = def->cpu;
|
||||||
const char *defaultRAMid = NULL;
|
|
||||||
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
@ -7046,11 +7045,24 @@ qemuBuildMachineCommandLine(virCommandPtr cmd,
|
|||||||
if (virDomainNumaHasHMAT(def->numa))
|
if (virDomainNumaHasHMAT(def->numa))
|
||||||
virBufferAddLit(&buf, ",hmat=on");
|
virBufferAddLit(&buf, ",hmat=on");
|
||||||
|
|
||||||
defaultRAMid = virQEMUCapsGetMachineDefaultRAMid(qemuCaps,
|
if (!virDomainNumaGetNodeCount(def->numa)) {
|
||||||
def->virtType,
|
const char *defaultRAMid = NULL;
|
||||||
def->os.machine);
|
|
||||||
if (defaultRAMid)
|
/* QEMU is obsoleting -mem-path and -mem-prealloc. That means we have
|
||||||
virBufferAsprintf(&buf, ",memory-backend=%s", defaultRAMid);
|
* to switch to memory-backend-* even for regular RAM and to keep
|
||||||
|
* domain migratable we have to set the same ID as older QEMUs would.
|
||||||
|
* If domain has no NUMA nodes and QEMU is new enough to expose ID of
|
||||||
|
* the default RAM we want to use it for default RAM (construct
|
||||||
|
* memory-backend-* with corresponding attributes instead of obsolete
|
||||||
|
* -mem-path and -mem-prealloc).
|
||||||
|
* This generates only reference for the memory-backend-* object added
|
||||||
|
* later in qemuBuildMemCommandLine() */
|
||||||
|
defaultRAMid = virQEMUCapsGetMachineDefaultRAMid(qemuCaps,
|
||||||
|
def->virtType,
|
||||||
|
def->os.machine);
|
||||||
|
if (defaultRAMid)
|
||||||
|
virBufferAsprintf(&buf, ",memory-backend=%s", defaultRAMid);
|
||||||
|
}
|
||||||
|
|
||||||
virCommandAddArgBuffer(cmd, &buf);
|
virCommandAddArgBuffer(cmd, &buf);
|
||||||
|
|
||||||
@ -7216,7 +7228,13 @@ qemuBuildMemCommandLine(virCommandPtr cmd,
|
|||||||
def->os.machine);
|
def->os.machine);
|
||||||
|
|
||||||
if (defaultRAMid) {
|
if (defaultRAMid) {
|
||||||
qemuBuildMemCommandLineMemoryDefaultBackend(cmd, def, priv, defaultRAMid);
|
/* As documented in qemuBuildMachineCommandLine() if QEMU is new enough
|
||||||
|
* to expose default RAM ID we must use memory-backend-* even for
|
||||||
|
* regular memory because -mem-path and -mem-prealloc are obsolete.
|
||||||
|
* However, if domain has one or more NUMA nodes then there is no
|
||||||
|
* default RAM and we mustn't generate the memory object. */
|
||||||
|
if (!virDomainNumaGetNodeCount(def->numa))
|
||||||
|
qemuBuildMemCommandLineMemoryDefaultBackend(cmd, def, priv, defaultRAMid);
|
||||||
} else {
|
} else {
|
||||||
if (def->mem.allocation == VIR_DOMAIN_MEMORY_ALLOCATION_IMMEDIATE) {
|
if (def->mem.allocation == VIR_DOMAIN_MEMORY_ALLOCATION_IMMEDIATE) {
|
||||||
virCommandAddArgList(cmd, "-mem-prealloc", NULL);
|
virCommandAddArgList(cmd, "-mem-prealloc", NULL);
|
||||||
|
@ -12,13 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on,\
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on \
|
||||||
memory-backend=pc.ram \
|
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m size=1048576k,slots=16,maxmem=1099511627776k \
|
-m size=1048576k,slots=16,maxmem=1099511627776k \
|
||||||
-object memory-backend-file,id=pc.ram,\
|
|
||||||
mem-path=/dev/hugepages2M/libvirt/qemu/-1-QEMUGuest1,share=yes,prealloc=yes,\
|
|
||||||
size=1073741824 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
||||||
-object memory-backend-file,id=ram-node0,\
|
-object memory-backend-file,id=ram-node0,\
|
||||||
|
@ -12,12 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-instance-00000092/master-key.aes \
|
file=/tmp/lib/domain--1-instance-00000092/master-key.aes \
|
||||||
-machine pc-i440fx-2.3,accel=kvm,usb=off,dump-guest-core=off,\
|
-machine pc-i440fx-2.3,accel=kvm,usb=off,dump-guest-core=off \
|
||||||
memory-backend=pc.ram \
|
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m 14336 \
|
-m 14336 \
|
||||||
-object memory-backend-memfd,id=pc.ram,hugetlb=yes,hugetlbsize=2097152,\
|
|
||||||
share=yes,prealloc=yes,size=15032385536 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 8,sockets=1,dies=1,cores=8,threads=1 \
|
-smp 8,sockets=1,dies=1,cores=8,threads=1 \
|
||||||
-object memory-backend-memfd,id=ram-node0,hugetlb=yes,hugetlbsize=2097152,\
|
-object memory-backend-memfd,id=ram-node0,hugetlb=yes,hugetlbsize=2097152,\
|
||||||
|
@ -12,12 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-instance-00000092/master-key.aes \
|
file=/tmp/lib/domain--1-instance-00000092/master-key.aes \
|
||||||
-machine pc-i440fx-2.3,accel=kvm,usb=off,dump-guest-core=off,\
|
-machine pc-i440fx-2.3,accel=kvm,usb=off,dump-guest-core=off \
|
||||||
memory-backend=pc.ram \
|
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m 14336 \
|
-m 14336 \
|
||||||
-object memory-backend-memfd,id=pc.ram,hugetlb=yes,hugetlbsize=2097152,\
|
|
||||||
share=yes,prealloc=yes,size=15032385536 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 8,sockets=1,dies=1,cores=8,threads=1 \
|
-smp 8,sockets=1,dies=1,cores=8,threads=1 \
|
||||||
-object memory-backend-memfd,id=ram-node0,hugetlb=yes,hugetlbsize=2097152,\
|
-object memory-backend-memfd,id=ram-node0,hugetlb=yes,hugetlbsize=2097152,\
|
||||||
|
@ -12,11 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on,\
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on \
|
||||||
memory-backend=pc.ram \
|
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m size=219136k,slots=16,maxmem=1099511627776k \
|
-m size=219136k,slots=16,maxmem=1099511627776k \
|
||||||
-object memory-backend-ram,id=pc.ram,size=224395264 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
||||||
-object memory-backend-ram,id=ram-node0,size=224395264 \
|
-object memory-backend-ram,id=ram-node0,size=224395264 \
|
||||||
|
@ -12,11 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on,\
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on \
|
||||||
memory-backend=pc.ram \
|
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m size=219136k,slots=16,maxmem=1099511627776k \
|
-m size=219136k,slots=16,maxmem=1099511627776k \
|
||||||
-object memory-backend-ram,id=pc.ram,size=224395264 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
||||||
-object memory-backend-ram,id=ram-node0,size=224395264 \
|
-object memory-backend-ram,id=ram-node0,size=224395264 \
|
||||||
|
@ -12,11 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on,\
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on \
|
||||||
memory-backend=pc.ram \
|
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m size=219136k,slots=16,maxmem=1099511627776k \
|
-m size=219136k,slots=16,maxmem=1099511627776k \
|
||||||
-object memory-backend-ram,id=pc.ram,size=224395264 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
||||||
-object memory-backend-ram,id=ram-node0,size=224395264 \
|
-object memory-backend-ram,id=ram-node0,size=224395264 \
|
||||||
|
@ -12,11 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on,\
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on \
|
||||||
memory-backend=pc.ram \
|
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m size=219136k,slots=16,maxmem=1099511627776k \
|
-m size=219136k,slots=16,maxmem=1099511627776k \
|
||||||
-object memory-backend-ram,id=pc.ram,size=224395264 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
||||||
-object memory-backend-ram,id=ram-node0,size=224395264 \
|
-object memory-backend-ram,id=ram-node0,size=224395264 \
|
||||||
|
@ -12,11 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on,\
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on \
|
||||||
memory-backend=pc.ram \
|
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m size=219136k,slots=16,maxmem=1099511627776k \
|
-m size=219136k,slots=16,maxmem=1099511627776k \
|
||||||
-object memory-backend-ram,id=pc.ram,size=224395264 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
||||||
-object memory-backend-ram,id=ram-node0,size=224395264 \
|
-object memory-backend-ram,id=ram-node0,size=224395264 \
|
||||||
|
@ -12,11 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on,\
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off,nvdimm=on \
|
||||||
memory-backend=pc.ram \
|
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m size=1048576k,slots=16,maxmem=1099511627776k \
|
-m size=1048576k,slots=16,maxmem=1099511627776k \
|
||||||
-object memory-backend-ram,id=pc.ram,size=1073741824 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
-smp 2,sockets=2,dies=1,cores=1,threads=1 \
|
||||||
-object memory-backend-ram,id=ram-node0,size=1073741824 \
|
-object memory-backend-ram,id=ram-node0,size=1073741824 \
|
||||||
|
@ -12,11 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-QEMUGuest/master-key.aes \
|
file=/tmp/lib/domain--1-QEMUGuest/master-key.aes \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,hmat=on,\
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off,hmat=on \
|
||||||
memory-backend=pc.ram \
|
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m 12288 \
|
-m 12288 \
|
||||||
-object memory-backend-ram,id=pc.ram,size=12884901888 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 12,sockets=12,cores=1,threads=1 \
|
-smp 12,sockets=12,cores=1,threads=1 \
|
||||||
-object memory-backend-ram,id=ram-node0,size=2147483648 \
|
-object memory-backend-ram,id=ram-node0,size=2147483648 \
|
||||||
|
@ -12,11 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-guest/master-key.aes \
|
file=/tmp/lib/domain--1-guest/master-key.aes \
|
||||||
-machine pc,accel=kvm,usb=off,dump-guest-core=off,memory-backend=pc.ram \
|
-machine pc,accel=kvm,usb=off,dump-guest-core=off \
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m 14336 \
|
-m 14336 \
|
||||||
-object memory-backend-file,id=pc.ram,\
|
|
||||||
mem-path=/var/lib/libvirt/qemu/ram/-1-guest/pc.ram,share=yes,size=15032385536 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 2,sockets=2,cores=1,threads=1 \
|
-smp 2,sockets=2,cores=1,threads=1 \
|
||||||
-object memory-backend-file,id=ram-node0,\
|
-object memory-backend-file,id=ram-node0,\
|
||||||
|
@ -12,12 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-guest/master-key.aes \
|
file=/tmp/lib/domain--1-guest/master-key.aes \
|
||||||
-machine q35,accel=tcg,usb=off,dump-guest-core=off,memory-backend=pc.ram \
|
-machine q35,accel=tcg,usb=off,dump-guest-core=off \
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m 2048 \
|
-m 2048 \
|
||||||
-object memory-backend-file,id=pc.ram,\
|
|
||||||
mem-path=/dev/hugepages2M/libvirt/qemu/-1-guest,share=yes,prealloc=yes,\
|
|
||||||
size=2147483648 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 2,sockets=2,cores=1,threads=1 \
|
-smp 2,sockets=2,cores=1,threads=1 \
|
||||||
-object memory-backend-file,id=ram-node0,\
|
-object memory-backend-file,id=ram-node0,\
|
||||||
|
@ -12,10 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,memory-backend=pc.ram \
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off \
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m 214 \
|
-m 214 \
|
||||||
-object memory-backend-memfd,id=pc.ram,share=yes,size=224395264 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 1,sockets=1,cores=1,threads=1 \
|
-smp 1,sockets=1,cores=1,threads=1 \
|
||||||
-object memory-backend-memfd,id=ram-node0,share=yes,size=224395264 \
|
-object memory-backend-memfd,id=ram-node0,share=yes,size=224395264 \
|
||||||
|
@ -12,10 +12,9 @@ QEMU_AUDIO_DRV=none \
|
|||||||
-S \
|
-S \
|
||||||
-object secret,id=masterKey0,format=raw,\
|
-object secret,id=masterKey0,format=raw,\
|
||||||
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,memory-backend=pc.ram \
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off \
|
||||||
-cpu qemu64 \
|
-cpu qemu64 \
|
||||||
-m 214 \
|
-m 214 \
|
||||||
-object memory-backend-memfd,id=pc.ram,share=yes,size=224395264 \
|
|
||||||
-overcommit mem-lock=off \
|
-overcommit mem-lock=off \
|
||||||
-smp 1,sockets=1,cores=1,threads=1 \
|
-smp 1,sockets=1,cores=1,threads=1 \
|
||||||
-object memory-backend-memfd,id=ram-node0,share=yes,size=224395264 \
|
-object memory-backend-memfd,id=ram-node0,share=yes,size=224395264 \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user