From: Andrea Bolognani Date: Wed, 22 Mar 2017 12:44:13 +0000 (+0100) Subject: qemu: Fix memory locking limit calculation X-Git-Tag: v3.2.0-rc2~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7e667664d28f90bf6916604a55ebad7e2d85305b;p=thirdparty%2Flibvirt.git qemu: Fix memory locking limit calculation For guests that use , our only option is to remove the memory locking limit altogether. Partially-resolves: https://bugzilla.redhat.com/1431793 --- diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index ed7f199143..458bb5f9a4 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -6223,10 +6223,13 @@ qemuDomainGetMemLockLimitBytes(virDomainDefPtr def) goto done; } - if (def->mem.locked) { - memKB = virDomainDefGetMemoryTotal(def) + 1024 * 1024; - goto done; - } + /* If the guest wants its memory to be locked, we need to raise the memory + * locking limit so that the OS will not refuse allocation requests; + * however, there is no reliable way for us to figure out how much memory + * the QEMU process will allocate for its own use, so our only way out is + * to remove the limit altogether. Use with extreme care */ + if (def->mem.locked) + return VIR_DOMAIN_MEMORY_PARAM_UNLIMITED; if (ARCH_IS_PPC64(def->os.arch) && def->virtType == VIR_DOMAIN_VIRT_KVM) { unsigned long long maxMemory;