From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1M69Z8-0001bt-81 for qemu-devel@nongnu.org; Mon, 18 May 2009 16:36:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1M69Z3-0001aH-HB for qemu-devel@nongnu.org; Mon, 18 May 2009 16:36:05 -0400 Received: from [199.232.76.173] (port=37330 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1M69Z3-0001aE-Bp for qemu-devel@nongnu.org; Mon, 18 May 2009 16:36:01 -0400 Received: from mx2.redhat.com ([66.187.237.31]:54419) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1M69Z2-0005Wn-VI for qemu-devel@nongnu.org; Mon, 18 May 2009 16:36:01 -0400 From: Glauber Costa Date: Mon, 18 May 2009 16:35:58 -0400 Message-Id: <1242678958-30061-1-git-send-email-glommer@redhat.com> Subject: [Qemu-devel] [PATCH] keep initrd in below 4g area. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: aliguori@us.ibm.com initrd must be kept on the memory area below 4g. By not doing this, we're seeing guests break while using -initrd and values of -mem superior to 4096. Signed-off-by: Glauber Costa --- hw/pc.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/hw/pc.c b/hw/pc.c index 094f01a..92c7ac5 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -597,7 +597,8 @@ static long get_file_size(FILE *f) static void load_linux(target_phys_addr_t option_rom, const char *kernel_filename, const char *initrd_filename, - const char *kernel_cmdline) + const char *kernel_cmdline, + target_phys_addr_t max_ram_size) { uint16_t protocol; uint32_t gpr[8]; @@ -663,8 +664,8 @@ static void load_linux(target_phys_addr_t option_rom, else initrd_max = 0x37ffffff; - if (initrd_max >= ram_size-ACPI_DATA_SIZE) - initrd_max = ram_size-ACPI_DATA_SIZE-1; + if (initrd_max >= max_ram_size-ACPI_DATA_SIZE) + initrd_max = max_ram_size-ACPI_DATA_SIZE-1; /* kernel command line */ pstrcpy_targphys(cmdline_addr, 4096, kernel_cmdline); @@ -951,7 +952,7 @@ static void pc_init1(ram_addr_t ram_size, if (linux_boot) { load_linux(0xc0000 + oprom_area_size, - kernel_filename, initrd_filename, kernel_cmdline); + kernel_filename, initrd_filename, kernel_cmdline, below_4g_mem_size); oprom_area_size += 2048; } -- 1.5.6.6