2011-12-14 02:35:41 +01:00
|
|
|
From ac233b323ad7e498c665e8c74df7e44de4a542c0 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Alexander Graf <agraf@suse.de>
|
|
|
|
Date: Wed, 14 Dec 2011 00:33:28 +0100
|
2012-01-10 16:43:02 +01:00
|
|
|
Subject: [PATCH 33/37] linux-user: reserve 4GB of vmem for 32-on-64
|
2011-12-14 02:35:41 +01:00
|
|
|
|
|
|
|
When running 32-on-64 bit guests, we should always reserve as much
|
|
|
|
virtual memory as we possibly can for the guest process, so it can
|
|
|
|
never overlap with QEMU address space.
|
|
|
|
|
|
|
|
Fortunately we already have the infrastructure for that. All that's
|
|
|
|
missing is some sane default value to also make use of it!
|
|
|
|
|
|
|
|
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
|
|
---
|
|
|
|
linux-user/main.c | 11 +++++++++++
|
|
|
|
1 files changed, 11 insertions(+), 0 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/linux-user/main.c b/linux-user/main.c
|
|
|
|
index 788ff98..3ffee40 100644
|
|
|
|
--- a/linux-user/main.c
|
|
|
|
+++ b/linux-user/main.c
|
|
|
|
@@ -48,8 +48,19 @@ unsigned long mmap_min_addr;
|
|
|
|
#if defined(CONFIG_USE_GUEST_BASE)
|
|
|
|
unsigned long guest_base;
|
|
|
|
int have_guest_base;
|
|
|
|
+#if (TARGET_LONG_BITS == 32) && (HOST_LONG_BITS == 64)
|
|
|
|
+/*
|
|
|
|
+ * When running 32-on-64 we should make sure we can fit all of the possible
|
|
|
|
+ * guest address space into a contiguous chunk of virtual host memory.
|
|
|
|
+ *
|
|
|
|
+ * This way we will never overlap with our own libraries or binaries or stack
|
|
|
|
+ * or anything else that QEMU maps.
|
|
|
|
+ */
|
|
|
|
+unsigned long reserved_va = 0xf7000000;
|
|
|
|
+#else
|
|
|
|
unsigned long reserved_va;
|
|
|
|
#endif
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
static void usage(void);
|
|
|
|
extern int use_stopflag;
|
|
|
|
--
|
|
|
|
1.6.0.2
|
|
|
|
|