Skip to content

Commit

Permalink
xen: fixup RAM memory region initialization
Browse files Browse the repository at this point in the history
Since bd45778 ("x86/pc: use memdev for RAM") Xen
machine fails to start with:
   qemu-system-i386: xen: failed to populate ram at 0

The reason is that xen_ram_alloc() which is called by
memory_region_init_ram(), compares memory region with
statically allocated 'global' ram_memory memory region
that it uses for RAM, and does nothing in case it matches.

While it's possible feed machine->ram to xen_ram_alloc()
in the same manner to keep that hack working, I'd prefer
not to keep that circular dependency and try to untangle that.

However it doesn't look trivial to fix, so as temporary
fixup opt out Xen machine from memdev based RAM allocation,
and let xen_ram_alloc() do its trick for now.

Reported-by: Anthony PERARD <[email protected]>
Signed-off-by: Igor Mammedov <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
  • Loading branch information
Igor Mammedov authored and bonzini committed Apr 2, 2020
1 parent 7f5d9b2 commit 0dc0389
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions hw/xen/xen-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "sysemu/runstate.h"
#include "migration/misc.h"
#include "migration/global_state.h"
#include "hw/boards.h"

//#define DEBUG_XEN

Expand Down Expand Up @@ -151,6 +152,8 @@ static void xen_setup_post(MachineState *ms, AccelState *accel)

static int xen_init(MachineState *ms)
{
MachineClass *mc = MACHINE_GET_CLASS(ms);

xen_xc = xc_interface_open(0, 0, 0);
if (xen_xc == NULL) {
xen_pv_printf(NULL, 0, "can't open xen interface\n");
Expand All @@ -170,6 +173,10 @@ static int xen_init(MachineState *ms)
return -1;
}
qemu_add_vm_change_state_handler(xen_change_state_handler, NULL);
/*
* opt out of system RAM being allocated by generic code
*/
mc->default_ram_id = NULL;
return 0;
}

Expand Down

0 comments on commit 0dc0389

Please sign in to comment.