[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: |
Wed, 01 Jun 2016 02:44:57 -0600 |
>>> On 5/31/2016 at 12:10 AM, in message
<address@hidden>, Stefano
Stabellini <address@hidden> wrote:
> On Fri, 29 Apr 2016, Chunyan Liu 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>
>
> Thank you for the patch!
>
>
> > 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);
>
> Wouldn't it be better to change ram_block_add so that it calls
> xen_ram_alloc with used_length rather than max_length?
Seems that's right. But after that changes, when doing direct kernel boot,
it reports:
qemu-system-x86_64: /home/cyliu/git/qemu/include/exec/ram_addr.h:48:
ramblock_ptr: Assertion `offset_in_ramblock(block, offset)' failed.
Looking at it.
Chunyan
>
> I think that on Xen we want to only allocate used_length bytes, but
> reserve max_length of address space.
>
>
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH] fix xen hvm direct kernel boot,
Chun Yan Liu <=