7a3408
From 7b6d887931845fb14f04bdfd997d61de940a0cff Mon Sep 17 00:00:00 2001
7a3408
Message-Id: <7b6d887931845fb14f04bdfd997d61de940a0cff@dist-git>
7a3408
From: Peter Krempa <pkrempa@redhat.com>
7a3408
Date: Tue, 22 Sep 2015 16:59:47 +0200
7a3408
Subject: [PATCH] qemu: ppc64: Align memory sizes to 256MiB blocks
7a3408
7a3408
For some machine types ppc64 machines now require that memory sizes are
7a3408
aligned to 256MiB increments (due to the dynamically reconfigurable
7a3408
memory). As now we treat existing configs reasonably in regards to
7a3408
migration, we can round all the sizes unconditionally. The only drawback
7a3408
will be that the memory size of a VM can potentially increase by
7a3408
(256MiB - 1byte) * number_of_NUMA_nodes.
7a3408
7a3408
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1249006
7a3408
(cherry picked from commit bd874b6c422283ff9c07ee28b042b424e85a2398)
7a3408
7a3408
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
7a3408
---
7a3408
 src/qemu/qemu_domain.c                                      | 7 ++++++-
7a3408
 tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args | 2 +-
7a3408
 2 files changed, 7 insertions(+), 2 deletions(-)
7a3408
7a3408
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
7a3408
index 77f3d6a..a47535e 100644
7a3408
--- a/src/qemu/qemu_domain.c
7a3408
+++ b/src/qemu/qemu_domain.c
7a3408
@@ -3159,8 +3159,13 @@ qemuDomainAgentAvailable(virDomainObjPtr vm,
7a3408
 
7a3408
 
7a3408
 static unsigned long long
7a3408
-qemuDomainGetMemorySizeAlignment(virDomainDefPtr def ATTRIBUTE_UNUSED)
7a3408
+qemuDomainGetMemorySizeAlignment(virDomainDefPtr def)
7a3408
 {
7a3408
+    /* PPC requires the memory sizes to be rounded to 256MiB increments, so
7a3408
+     * round them to the size always. */
7a3408
+    if (ARCH_IS_PPC64(def->os.arch))
7a3408
+        return 256 * 1024;
7a3408
+
7a3408
     /* Align memory size. QEMU requires rounding to next 4KiB block.
7a3408
      * We'll take the "traditional" path and round it to 1MiB*/
7a3408
 
7a3408
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args
7a3408
index 64df406..305e924 100644
7a3408
--- a/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args
7a3408
+++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-cpu-compat.args
7a3408
@@ -1,7 +1,7 @@
7a3408
 LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test \
7a3408
 QEMU_AUDIO_DRV=none /usr/bin/qemu-system-ppc64 -S -M pseries \
7a3408
 -cpu host,compat=power7 \
7a3408
--m 214 -smp 4 -nographic -nodefconfig -nodefaults \
7a3408
+-m 256 -smp 4 -nographic -nodefconfig -nodefaults \
7a3408
 -chardev socket,id=charmonitor,path=/tmp/test-monitor,server,nowait \
7a3408
 -mon chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c -usb \
7a3408
 -chardev pty,id=charserial0 \
7a3408
-- 
7a3408
2.5.3
7a3408