aboutsummaryrefslogtreecommitdiff
path: root/oslib-posix.c
diff options
context:
space:
mode:
authorChristian Borntraeger <borntraeger@de.ibm.com>2012-06-15 05:10:30 +0000
committerAlexander Graf <agraf@suse.de>2012-07-10 18:27:33 +0200
commitfdec9918578ec38738ecf250fa2c2656a44796b5 (patch)
treedf492b5ddd37c0c69d2e63ca9bfa0196a7dbd7ac /oslib-posix.c
parent92336855975805d88c7979f53bc05c2d47abab04 (diff)
s390: autodetect map private
By default qemu will use MAP_PRIVATE for guest pages. This will write protect pages and thus break on s390 systems that dont support this feature. Therefore qemu has a hack to always use MAP_SHARED for s390. But MAP_SHARED has other problems (no dirty pages tracking, a lot more swap overhead etc.) Newer systems allow the distinction via KVM_CAP_S390_COW. With this feature qemu can use the standard qemu alloc if available, otherwise it will use the old s390 hack. Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com> Acked-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'oslib-posix.c')
-rw-r--r--oslib-posix.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/oslib-posix.c b/oslib-posix.c
index 6b7ba646c7..dbeb6272b8 100644
--- a/oslib-posix.c
+++ b/oslib-posix.c
@@ -41,6 +41,9 @@ extern int daemon(int, int);
therefore we need special code which handles running on Valgrind. */
# define QEMU_VMALLOC_ALIGN (512 * 4096)
# define CONFIG_VALGRIND
+#elif defined(__linux__) && defined(__s390x__)
+ /* Use 1 MiB (segment size) alignment so gmap can be used by KVM. */
+# define QEMU_VMALLOC_ALIGN (256 * 4096)
#else
# define QEMU_VMALLOC_ALIGN getpagesize()
#endif