For native Xen machines, we need to create a dummy env so qemu always has something to work on.
When using xenner however, we don't want that dummy env but create real envs instead. Signed-off-by: Alexander Graf <ag...@suse.de> --- hw/xen_machine_pv.c | 22 ++++++++++++++-------- 1 files changed, 14 insertions(+), 8 deletions(-) diff --git a/hw/xen_machine_pv.c b/hw/xen_machine_pv.c index b94d6e9..6f2666d 100644 --- a/hw/xen_machine_pv.c +++ b/hw/xen_machine_pv.c @@ -30,16 +30,9 @@ #include "xen_domainbuild.h" #include "blockdev.h" -static void xen_init_pv(ram_addr_t ram_size, - const char *boot_device, - const char *kernel_filename, - const char *kernel_cmdline, - const char *initrd_filename, - const char *cpu_model) +static void create_dummy_env(const char *cpu_model) { CPUState *env; - DriveInfo *dinfo; - int i; /* Initialize a dummy CPU */ if (cpu_model == NULL) { @@ -51,6 +44,17 @@ static void xen_init_pv(ram_addr_t ram_size, } env = cpu_init(cpu_model); env->halted = 1; +} + +static void xen_init_pv(ram_addr_t ram_size, + const char *boot_device, + const char *kernel_filename, + const char *kernel_cmdline, + const char *initrd_filename, + const char *cpu_model) +{ + DriveInfo *dinfo; + int i; /* Initialize backend core & drivers */ if (xen_be_init() != 0) { @@ -60,9 +64,11 @@ static void xen_init_pv(ram_addr_t ram_size, switch (xen_mode) { case XEN_ATTACH: + create_dummy_env(cpu_model); /* nothing to do, xend handles everything */ break; case XEN_CREATE: + create_dummy_env(cpu_model); if (xen_domain_build_pv(kernel_filename, initrd_filename, kernel_cmdline) < 0) { fprintf(stderr, "xen pv domain creation failed\n"); -- 1.6.0.2