[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] [resubmit] Allocate translation buffer before guest
From: |
Juergen Lock |
Subject: |
[Qemu-devel] [PATCH] [resubmit] Allocate translation buffer before guest RAM, in case guest RAM is too large on 64 bit hosts |
Date: |
Thu, 23 Oct 2008 00:10:51 +0200 |
User-agent: |
Mutt/1.5.17 (2007-11-01) |
Hi!
Further explanation as requested: cpu_exec_init_all() below allocates
code_gen_buffer which needs to be in the lower 4G (actually 2G I guess)
because it uses 32 bit branch offsets. Allocate this first so that the
guest RAM allocation can't get in the way i.e. block the lower vm when
doing something like -m 4096 on systems that allocate from low addresses
by default.
I hope this is more clear now? :)
Thanx,
Juergen
----- Forwarded message from Juergen Lock <address@hidden> -----
From: Juergen Lock <address@hidden>
Date: Sat, 18 Oct 2008 23:05:08 +0200
To: address@hidden
Subject: [PATCH] Allocate translation buffer before guest RAM, in case
guest RAM is too large on 64 bit hosts
User-Agent: Mutt/1.5.17 (2007-11-01)
Hi!
The following patch appears to fix -m >= 1024 on recent FreeBSD/amd64 hosts
(RELENG_7/HEAD) that no longer return high addresses for allocations by
default (which was the original reason for r5331.) As this makes sense
in any case when you pass something like -m 4096 on hosts that allocate
from low addresses by default (there would be no room left for the
translation buffer in the low vm where it needs to be), I patched it like
this instead of conditionalizing the mmap hack from r5331 on the FreeBSD
version.
Index: qemu/vl.c
@@ -9850,15 +9850,15 @@
phys_ram_size += ram_size;
}
+ /* init the dynamic translator */
+ cpu_exec_init_all(tb_size * 1024 * 1024);
+
phys_ram_base = qemu_vmalloc(phys_ram_size);
if (!phys_ram_base) {
fprintf(stderr, "Could not allocate physical memory\n");
exit(1);
}
- /* init the dynamic translator */
- cpu_exec_init_all(tb_size * 1024 * 1024);
-
bdrv_init(emulate_aio);
/* we always create the cdrom drive, even if no disk is there */
Signed-off-by: Juergen Lock <address@hidden>
----- End forwarded message -----
- [Qemu-devel] [PATCH] [resubmit] Allocate translation buffer before guest RAM, in case guest RAM is too large on 64 bit hosts,
Juergen Lock <=