From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NCzD7-0004QY-4G for qemu-devel@nongnu.org; Tue, 24 Nov 2009 12:29:53 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NCzD2-0004Jf-86 for qemu-devel@nongnu.org; Tue, 24 Nov 2009 12:29:50 -0500 Received: from [199.232.76.173] (port=46415 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NCzCz-0004J5-Uy for qemu-devel@nongnu.org; Tue, 24 Nov 2009 12:29:46 -0500 Received: from cantor2.suse.de ([195.135.220.15]:48943 helo=mx2.suse.de) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NCzCy-00021J-NX for qemu-devel@nongnu.org; Tue, 24 Nov 2009 12:29:44 -0500 From: Alexander Graf Date: Tue, 24 Nov 2009 18:29:33 +0100 Message-Id: <1259083781-14642-6-git-send-email-agraf@suse.de> In-Reply-To: <1259083781-14642-1-git-send-email-agraf@suse.de> References: <1259083781-14642-1-git-send-email-agraf@suse.de> Subject: [Qemu-devel] [PATCH 05/13] Allocate physical memory in low virtual address space List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Carsten Otte , Aurelien Jarno KVM on S390x requires the virtual address space of the guest's RAM to be within the first 256GB. The general direction I'd like to see KVM on S390 move is that this requirement is losened, but for now that's what we're stuck with. So let's just hack up qemu_ram_alloc until KVM behaves nicely :-). Signed-off-by: Alexander Graf --- exec.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/exec.c b/exec.c index 076d26b..59150d0 100644 --- a/exec.c +++ b/exec.c @@ -2411,7 +2411,13 @@ ram_addr_t qemu_ram_alloc(ram_addr_t size) size = TARGET_PAGE_ALIGN(size); new_block = qemu_malloc(sizeof(*new_block)); +#if defined(TARGET_S390) && defined(CONFIG_KVM) + /* XXX S390 KVM requires the topmost vma of the RAM to be < 256GB */ + new_block->host = mmap(0x1000000, size, PROT_EXEC|PROT_READ|PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); +#else new_block->host = qemu_vmalloc(size); +#endif #ifdef MADV_MERGEABLE madvise(new_block->host, size, MADV_MERGEABLE); #endif -- 1.6.0.2