qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] [resubmit] Allocate translation buffer before g


From: Juergen Lock
Subject: Re: [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 23:29:19 +0200 (CEST)

In article <address@hidden> you write:
>On Thu, Oct 23, 2008 at 12:10 AM, Juergen Lock <address@hidden> wrote:
>>
>>  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? :)
>
>What about including a shorter version of that explanation as a comment
>in your patch ? :)

Ok here we go:

Index: qemu/vl.c
@@ -9938,15 +9938,19 @@
         phys_ram_size += ram_size;
     }
 
+    /* init the dynamic translator */
+    /* This allocates code_gen_buffer which needs to be in the lower vm at
+     * least on amd64 hosts because it uses 32 bit branch offsets etc.
+     * Do this before the guest RAM allocation below so that that can't
+     * get in the way. */
+    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();
 
     /* we always create the cdrom drive, even if no disk is there */

Signed-off-by: Juergen Lock <address@hidden>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]