summaryrefslogtreecommitdiffstats
path: root/hw
diff options
context:
space:
mode:
authorIgor Mammedov2020-04-02 16:54:18 +0200
committerPaolo Bonzini2020-04-02 20:56:29 +0200
commit0dc0389fa5455bb264866701892ed06bc3eb06e4 (patch)
tree1ff8a252bfe42cd48fb2f9b661adbbd6d0bcc786 /hw
parentobject-add: don't create return value if failed (diff)
downloadqemu-0dc0389fa5455bb264866701892ed06bc3eb06e4.tar.gz
qemu-0dc0389fa5455bb264866701892ed06bc3eb06e4.tar.xz
qemu-0dc0389fa5455bb264866701892ed06bc3eb06e4.zip
xen: fixup RAM memory region initialization
Since bd457782b3b0 ("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 <anthony.perard@citrix.com> Signed-off-by: Igor Mammedov <imammedo@redhat.com> Message-Id: <20200402145418.5139-1-imammedo@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw')
-rw-r--r--hw/xen/xen-common.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/hw/xen/xen-common.c b/hw/xen/xen-common.c
index 15650d7f6a..a15070f7f6 100644
--- a/hw/xen/xen-common.c
+++ b/hw/xen/xen-common.c
@@ -19,6 +19,7 @@
#include "sysemu/runstate.h"
#include "migration/misc.h"
#include "migration/global_state.h"
+#include "hw/boards.h"
//#define DEBUG_XEN
@@ -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");
@@ -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;
}