For guests that use <memoryBacking><locked>, our only option
is to remove the memory locking limit altogether.
Partially-resolves:
https://bugzilla.redhat.com/1431793
---
src/qemu/qemu_domain.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index b098626..0e35000 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;
--
2.7.4