qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] fix xen hvm direct kernel boot


From: Chun Yan Liu
Subject: Re: [Qemu-devel] [PATCH] fix xen hvm direct kernel boot
Date: Tue, 03 May 2016 23:34:05 -0600

Any comments?

>>> On 4/29/2016 at 11:43 AM, in message
<address@hidden>, Chunyan Liu <address@hidden>
wrote: 
> Since commit a1666142: acpi-build: make ROMs RAM blocks resizeable, 
> xen HVM direct kernel boot failed. Xen HVM direct kernel boot will 
> insert a linuxboot.bin or multiboot.bin to /genroms, before this 
> commit, in acpi_setup, for rom linuxboot.bin/multiboot.bin, it 
> only needs 0x20000 size; after the commit, it will reserve x16 
> size for resize, that is 0x200000 size. It causes xen_ram_alloc 
> failed due to running out of memory. 
>  
> To resolve it, either: 
> 1. keep using original rom size instead of max size, don't reserve x16 size. 
> 2. guest maxmem needs to be increased. (commit c1d322e6 "xen-hvm: increase 
>    maxmem before calling xc_domain_populate_physmap" solved the problem for 
>    a time, by accident. But then it is reverted in commit ffffbb369 due to 
>    other problem.) 
>  
> For 2, more discussion is needed about howto. So this patch tries 1, to 
> use unresizable rom size in xen case in rom_set_mr. 
>  
> Signed-off-by: Chunyan Liu <address@hidden> 
> --- 
>  hw/core/loader.c | 6 +++++- 
>  1 file changed, 5 insertions(+), 1 deletion(-) 
>  
> diff --git a/hw/core/loader.c b/hw/core/loader.c 
> index c049957..5150101 100644 
> --- a/hw/core/loader.c 
> +++ b/hw/core/loader.c 
> @@ -55,6 +55,7 @@ 
>  #include "exec/address-spaces.h" 
>  #include "hw/boards.h" 
>  #include "qemu/cutils.h" 
> +#include "hw/xen/xen.h" 
>   
>  #include <zlib.h> 
>   
> @@ -818,7 +819,10 @@ static void *rom_set_mr(Rom *rom, Object *owner, const  
> char *name) 
>      void *data; 
>   
>      rom->mr = g_malloc(sizeof(*rom->mr)); 
> -    memory_region_init_resizeable_ram(rom->mr, owner, name, 
> +    if (xen_enabled()) 
> +        memory_region_init_ram(rom->mr, owner, name, rom->datasize,  
> &error_fatal); 
> +    else 
> +        memory_region_init_resizeable_ram(rom->mr, owner, name, 
>                                        rom->datasize, rom->romsize, 
>                                        fw_cfg_resized, 
>                                        &error_fatal); 
 





reply via email to

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