Re: Can't boot guest with more than 3585MB when using large pages

Alex Williamson
2009-04-04T17:56:45Z

On Fri, 2009-04-03 at 20:28 -0300, Marcelo Tosatti wrote:
>
> Can you please try the following

Thanks Marcelo, this seems to fix it. I tested up to a 30G guest with
large pages.

Alex

> ------
>
> qemu: kvm: fixup 4GB+ memslot large page alignment
>
> Need to align the 4GB+ memslot after we know its address, not before.
>
> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>

Tested-by: Alex Williamson <alex.williamson@hp.com>

> diff --git a/qemu/hw/pc.c b/qemu/hw/pc.c
> index d4a4320..cc84772 100644
> --- a/qemu/hw/pc.c
> +++ b/qemu/hw/pc.c
> @@ -866,6 +866,7 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
>
> /* above 4giga memory allocation */
> if (above_4g_mem_size > 0) {
> + ram_addr = qemu_ram_alloc(above_4g_mem_size);
> if (hpagesize) {
> if (ram_addr & (hpagesize-1)) {
> unsigned long aligned_addr;
> @@ -874,7 +875,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
> ram_addr = aligned_addr;
> }
> }
> - ram_addr = qemu_ram_alloc(above_4g_mem_size);
> cpu_register_physical_memory(0x100000000ULL,
> above_4g_mem_size,
> ram_addr);
>