[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device
From: |
Stefano Stabellini |
Subject: |
Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device |
Date: |
Thu, 22 May 2014 14:55:09 +0100 |
User-agent: |
Alpine 2.02 (DEB 1266 2009-07-14) |
On Thu, 22 May 2014, Paolo Bonzini wrote:
> Il 22/05/2014 14:11, Stefano Stabellini ha scritto:
> > On Thu, 22 May 2014, Gerd Hoffmann wrote:
> > > Patch hooks up the xen platform device to the default device code we
> > > have in qemu. Two effects:
> > >
> > > (1) 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 can move the xen-platform device to some
> > > other place with a simple 'qemu -device xen-platform,addr=$slot'.
> > >
> > > Tested-by: Tiejun Chen <address@hidden>
> > > Signed-off-by: Gerd Hoffmann <address@hidden>
> >
> > Given that libxl always passes -nodefaults to QEMU, this patch is going
> > to effectively disable xen_platform_pci for all Xen users. It is not a
> > good idea. With the patch applied a Xen user would have no way to enable
> > xen_platform_pci except for passing some magic command line runes via
> > device_model_args_hvm.
>
> In fact this code only runs for "-M xenfv". If you use "-M pc", the
> xen-platform device has to be added manually. Perhaps it would be worthwhile
> to do the opposite, i.e. add the xen-platform device to "-M pc" if not using
> -nodefaults.
Unfortunately that would not work too. libxl exploits the fact that -M
pc does not have a xen-platform device by default:
case LIBXL_DOMAIN_TYPE_HVM:
if (!libxl_defbool_val(b_info->u.hvm.xen_platform_pci)) {
/* Switching here to the machine "pc" which does not add
* the xen-platform device instead of the default "xenfv" machine.
*/
flexarray_append(dm_args, "pc,accel=xen");
} else {
flexarray_append(dm_args, "xenfv");
}
We could/should change libxl to always use -M pc but I would still
rather avoid changing the existing interface between libxl and QEMU.
Versioning xenfv or using a new pc machine is OK though.
> > > 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
> > >
> > >
> >
> >
>
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, (continued)
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Gerd Hoffmann, 2014/05/22
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Paolo Bonzini, 2014/05/22
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Gerd Hoffmann, 2014/05/22
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Stefano Stabellini, 2014/05/22
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Paul Durrant, 2014/05/23
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Stefano Stabellini, 2014/05/23
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Paul Durrant, 2014/05/23
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Stefano Stabellini, 2014/05/23
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Paul Durrant, 2014/05/23
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device,
Stefano Stabellini <=
- Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Paolo Bonzini, 2014/05/22
Re: [Qemu-devel] [PATCH] xen: make xen-platform a default device, Fabio Fantoni, 2014/05/23