Hi, > > Another useful thing would be to not create the xen platform device in case > > "-nodefaults" was specified on the command line (that switch turns off a > > bunch > > of other devices present by default: vga, nic, cdrom, ...). > > Currently looks 'xen-platform' itself can't be created, not those devices > existed on that.
The error message looks more like libxl tries to hot-unplug the xen platform device. Attached patch (untested!) hooks up the xen platform device to the default device code we have in qemu. Two effects: (1) As mentioned above the device will not be created in case -nodefaults is specified on the command line. (2) Autocreating the device is also turned off in case xen-platform is added manually via -device. With the patch applied you should be able to move the xen-platform device to some other place with a simple 'qemu -device xen-platform,addr=$slot'. cheers, Gerd
>From 405349bf38fc05653bfb8c971c61796e981eee98 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann <kra...@redhat.com> Date: Thu, 22 May 2014 08:34:28 +0200 Subject: [PATCH] xen: make xen-platform a default device --- hw/i386/pc_piix.c | 2 +- include/hw/xen/xen.h | 1 + vl.c | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index eaf3e61..f987d03 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -385,7 +385,7 @@ static void pc_xen_hvm_init(QEMUMachineInitArgs *args) pc_init_pci(args); bus = pci_find_primary_bus(); - if (bus != NULL) { + if (bus != NULL && default_xenplatform) { pci_create_simple(bus, -1, "xen-platform"); } } diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h index 85fda3d..b350413 100644 --- a/include/hw/xen/xen.h +++ b/include/hw/xen/xen.h @@ -20,6 +20,7 @@ enum xen_mode { extern uint32_t xen_domid; extern enum xen_mode xen_mode; +extern int default_xenplatform; extern bool xen_allowed; diff --git a/vl.c b/vl.c index 709d8cd..673148e 100644 --- a/vl.c +++ b/vl.c @@ -226,6 +226,7 @@ static int default_floppy = 1; static int default_cdrom = 1; static int default_sdcard = 1; static int default_vga = 1; +int default_xenplatform = 1; static struct { const char *driver; @@ -247,6 +248,7 @@ static struct { { .driver = "isa-cirrus-vga", .flag = &default_vga }, { .driver = "vmware-svga", .flag = &default_vga }, { .driver = "qxl-vga", .flag = &default_vga }, + { .driver = "xen-platform", .flag = &default_xenplatform }, }; static QemuOptsList qemu_rtc_opts = { @@ -4101,6 +4103,7 @@ int main(int argc, char **argv, char **envp) default_monitor = 0; default_net = 0; default_vga = 0; + default_xenplatform = 0; } if (is_daemonized()) { -- 1.8.3.1