diff mbox

[Xen-devel] RFC: configuring QEMU virtfs for Xen PV(H) guests

Message ID 56C1D391.101@suse.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jürgen Groß Feb. 15, 2016, 1:33 p.m. UTC
On 15/02/16 14:16, Wei Liu wrote:
> On Mon, Feb 15, 2016 at 09:07:13AM +0000, Paul Durrant wrote:
>>>
> [...]
>>> # Option 2: Invent a xen-9p device
>>>
>>> Another way of doing it is to expose a dummy xen-9p device, so that we
>>> can use -fsdev XXX -device xen-9p,YYY.  This simple device should be
>>> used to capture the parameters like mount_tag and fsdev_id, and then
>>> chained itself to a known location.  Later Xen transport can traverse
>>> this known location. This xen-9p device doesn't seem to fit well into
>>> the hierarchy. The best I can think of its parent should be
>>> TYPE_DEVICE.  In this case:
>>>
>>> 1. Toolstack arranges some xenstore entries.
>>> 2. Toolstack arranges command line options for QEMU:
>>>       -fsdev XXX -device xen-9p,XXX
>>> 3. QEMU starts up in xen-attach mode, scans xenstore for relevant
>>>    entries, then traverses the known location.
>>>
>>> Downside: Inventing a dummy device looks suboptimal to me.

Sorry, didn't notice this thread before.

For Xen pvUSB backend in qemu I need a Xen system device acting as
parent for being able to attach/detach virtual USB busses.

I haven't had time to update my patches for some time, but the patch
for this system device is rather easy. It could be used as a parent
of the xen-9p devices, too.

I've attached the patch for reference.


Juergen

Comments

Wei Liu Feb. 15, 2016, 1:44 p.m. UTC | #1
On Mon, Feb 15, 2016 at 02:33:05PM +0100, Juergen Gross wrote:
> On 15/02/16 14:16, Wei Liu wrote:
> > On Mon, Feb 15, 2016 at 09:07:13AM +0000, Paul Durrant wrote:
> >>>
> > [...]
> >>> # Option 2: Invent a xen-9p device
> >>>
> >>> Another way of doing it is to expose a dummy xen-9p device, so that we
> >>> can use -fsdev XXX -device xen-9p,YYY.  This simple device should be
> >>> used to capture the parameters like mount_tag and fsdev_id, and then
> >>> chained itself to a known location.  Later Xen transport can traverse
> >>> this known location. This xen-9p device doesn't seem to fit well into
> >>> the hierarchy. The best I can think of its parent should be
> >>> TYPE_DEVICE.  In this case:
> >>>
> >>> 1. Toolstack arranges some xenstore entries.
> >>> 2. Toolstack arranges command line options for QEMU:
> >>>       -fsdev XXX -device xen-9p,XXX
> >>> 3. QEMU starts up in xen-attach mode, scans xenstore for relevant
> >>>    entries, then traverses the known location.
> >>>
> >>> Downside: Inventing a dummy device looks suboptimal to me.
> 
> Sorry, didn't notice this thread before.
> 

No need to be sorry. I posted this last Friday night. I wouldn't expect
many replies on Monady.

> For Xen pvUSB backend in qemu I need a Xen system device acting as
> parent for being able to attach/detach virtual USB busses.
> 
> I haven't had time to update my patches for some time, but the patch
> for this system device is rather easy. It could be used as a parent
> of the xen-9p devices, too.
> 
> I've attached the patch for reference.
> 

Thanks. I will have a look at your patch.

Wei.
Jürgen Groß March 7, 2016, 7:21 a.m. UTC | #2
Hi Wei,

On 15/02/16 14:44, Wei Liu wrote:
> On Mon, Feb 15, 2016 at 02:33:05PM +0100, Juergen Gross wrote:
>> On 15/02/16 14:16, Wei Liu wrote:
>>> On Mon, Feb 15, 2016 at 09:07:13AM +0000, Paul Durrant wrote:
>>>>>
>>> [...]
>>>>> # Option 2: Invent a xen-9p device
>>>>>
>>>>> Another way of doing it is to expose a dummy xen-9p device, so that we
>>>>> can use -fsdev XXX -device xen-9p,YYY.  This simple device should be
>>>>> used to capture the parameters like mount_tag and fsdev_id, and then
>>>>> chained itself to a known location.  Later Xen transport can traverse
>>>>> this known location. This xen-9p device doesn't seem to fit well into
>>>>> the hierarchy. The best I can think of its parent should be
>>>>> TYPE_DEVICE.  In this case:
>>>>>
>>>>> 1. Toolstack arranges some xenstore entries.
>>>>> 2. Toolstack arranges command line options for QEMU:
>>>>>       -fsdev XXX -device xen-9p,XXX
>>>>> 3. QEMU starts up in xen-attach mode, scans xenstore for relevant
>>>>>    entries, then traverses the known location.
>>>>>
>>>>> Downside: Inventing a dummy device looks suboptimal to me.
>>
>> Sorry, didn't notice this thread before.
>>
> 
> No need to be sorry. I posted this last Friday night. I wouldn't expect
> many replies on Monady.
> 
>> For Xen pvUSB backend in qemu I need a Xen system device acting as
>> parent for being able to attach/detach virtual USB busses.
>>
>> I haven't had time to update my patches for some time, but the patch
>> for this system device is rather easy. It could be used as a parent
>> of the xen-9p devices, too.
>>
>> I've attached the patch for reference.
>>
> 
> Thanks. I will have a look at your patch.

Did you have some time to look at the patch? I'm asking because I
finally found some time to start working on V2 of my qemu based pvUSB
backend. Stefano asked me to hide the system device in my backend and
I want to avoid that in case you are needing it, too.

Juergen
Wei Liu March 7, 2016, 10:51 a.m. UTC | #3
On Mon, Mar 07, 2016 at 08:21:46AM +0100, Juergen Gross wrote:
> Hi Wei,
> 
> On 15/02/16 14:44, Wei Liu wrote:
> > On Mon, Feb 15, 2016 at 02:33:05PM +0100, Juergen Gross wrote:
> >> On 15/02/16 14:16, Wei Liu wrote:
> >>> On Mon, Feb 15, 2016 at 09:07:13AM +0000, Paul Durrant wrote:
> >>>>>
> >>> [...]
> >>>>> # Option 2: Invent a xen-9p device
> >>>>>
> >>>>> Another way of doing it is to expose a dummy xen-9p device, so that we
> >>>>> can use -fsdev XXX -device xen-9p,YYY.  This simple device should be
> >>>>> used to capture the parameters like mount_tag and fsdev_id, and then
> >>>>> chained itself to a known location.  Later Xen transport can traverse
> >>>>> this known location. This xen-9p device doesn't seem to fit well into
> >>>>> the hierarchy. The best I can think of its parent should be
> >>>>> TYPE_DEVICE.  In this case:
> >>>>>
> >>>>> 1. Toolstack arranges some xenstore entries.
> >>>>> 2. Toolstack arranges command line options for QEMU:
> >>>>>       -fsdev XXX -device xen-9p,XXX
> >>>>> 3. QEMU starts up in xen-attach mode, scans xenstore for relevant
> >>>>>    entries, then traverses the known location.
> >>>>>
> >>>>> Downside: Inventing a dummy device looks suboptimal to me.
> >>
> >> Sorry, didn't notice this thread before.
> >>
> > 
> > No need to be sorry. I posted this last Friday night. I wouldn't expect
> > many replies on Monady.
> > 
> >> For Xen pvUSB backend in qemu I need a Xen system device acting as
> >> parent for being able to attach/detach virtual USB busses.
> >>
> >> I haven't had time to update my patches for some time, but the patch
> >> for this system device is rather easy. It could be used as a parent
> >> of the xen-9p devices, too.
> >>
> >> I've attached the patch for reference.
> >>
> > 
> > Thanks. I will have a look at your patch.
> 
> Did you have some time to look at the patch? I'm asking because I
> finally found some time to start working on V2 of my qemu based pvUSB
> backend. Stefano asked me to hide the system device in my backend and
> I want to avoid that in case you are needing it, too.
> 

Yes. I need this device. I'm not sure what "hiding this device in
backend" means though.

Wei.

> Juergen
Jürgen Groß March 7, 2016, 10:56 a.m. UTC | #4
On 07/03/16 11:51, Wei Liu wrote:
> On Mon, Mar 07, 2016 at 08:21:46AM +0100, Juergen Gross wrote:
>> Hi Wei,
>>
>> On 15/02/16 14:44, Wei Liu wrote:
>>> On Mon, Feb 15, 2016 at 02:33:05PM +0100, Juergen Gross wrote:
>>>> On 15/02/16 14:16, Wei Liu wrote:
>>>>> On Mon, Feb 15, 2016 at 09:07:13AM +0000, Paul Durrant wrote:
>>>>>>>
>>>>> [...]
>>>>>>> # Option 2: Invent a xen-9p device
>>>>>>>
>>>>>>> Another way of doing it is to expose a dummy xen-9p device, so that we
>>>>>>> can use -fsdev XXX -device xen-9p,YYY.  This simple device should be
>>>>>>> used to capture the parameters like mount_tag and fsdev_id, and then
>>>>>>> chained itself to a known location.  Later Xen transport can traverse
>>>>>>> this known location. This xen-9p device doesn't seem to fit well into
>>>>>>> the hierarchy. The best I can think of its parent should be
>>>>>>> TYPE_DEVICE.  In this case:
>>>>>>>
>>>>>>> 1. Toolstack arranges some xenstore entries.
>>>>>>> 2. Toolstack arranges command line options for QEMU:
>>>>>>>       -fsdev XXX -device xen-9p,XXX
>>>>>>> 3. QEMU starts up in xen-attach mode, scans xenstore for relevant
>>>>>>>    entries, then traverses the known location.
>>>>>>>
>>>>>>> Downside: Inventing a dummy device looks suboptimal to me.
>>>>
>>>> Sorry, didn't notice this thread before.
>>>>
>>>
>>> No need to be sorry. I posted this last Friday night. I wouldn't expect
>>> many replies on Monady.
>>>
>>>> For Xen pvUSB backend in qemu I need a Xen system device acting as
>>>> parent for being able to attach/detach virtual USB busses.
>>>>
>>>> I haven't had time to update my patches for some time, but the patch
>>>> for this system device is rather easy. It could be used as a parent
>>>> of the xen-9p devices, too.
>>>>
>>>> I've attached the patch for reference.
>>>>
>>>
>>> Thanks. I will have a look at your patch.
>>
>> Did you have some time to look at the patch? I'm asking because I
>> finally found some time to start working on V2 of my qemu based pvUSB
>> backend. Stefano asked me to hide the system device in my backend and
>> I want to avoid that in case you are needing it, too.
>>
> 
> Yes. I need this device. I'm not sure what "hiding this device in
> backend" means though.

Stefano wanted it to be pvusb backend private: instead of adding it to
hw/xenpv/xen_machine_pv.c he wanted me to add it to hw/usb/xen-usb.c
where it would be usable by the pvUSB backend only.

With you needing that device I can leave the patch more or less
unmodified (some rebasing to the actual qemu version is needed).

Thanks for looking into the patch,

Juergen
Wei Liu March 7, 2016, 10:59 a.m. UTC | #5
On Mon, Mar 07, 2016 at 11:56:15AM +0100, Juergen Gross wrote:
> On 07/03/16 11:51, Wei Liu wrote:
> > On Mon, Mar 07, 2016 at 08:21:46AM +0100, Juergen Gross wrote:
> >> Hi Wei,
> >>
> >> On 15/02/16 14:44, Wei Liu wrote:
> >>> On Mon, Feb 15, 2016 at 02:33:05PM +0100, Juergen Gross wrote:
> >>>> On 15/02/16 14:16, Wei Liu wrote:
> >>>>> On Mon, Feb 15, 2016 at 09:07:13AM +0000, Paul Durrant wrote:
> >>>>>>>
> >>>>> [...]
> >>>>>>> # Option 2: Invent a xen-9p device
> >>>>>>>
> >>>>>>> Another way of doing it is to expose a dummy xen-9p device, so that we
> >>>>>>> can use -fsdev XXX -device xen-9p,YYY.  This simple device should be
> >>>>>>> used to capture the parameters like mount_tag and fsdev_id, and then
> >>>>>>> chained itself to a known location.  Later Xen transport can traverse
> >>>>>>> this known location. This xen-9p device doesn't seem to fit well into
> >>>>>>> the hierarchy. The best I can think of its parent should be
> >>>>>>> TYPE_DEVICE.  In this case:
> >>>>>>>
> >>>>>>> 1. Toolstack arranges some xenstore entries.
> >>>>>>> 2. Toolstack arranges command line options for QEMU:
> >>>>>>>       -fsdev XXX -device xen-9p,XXX
> >>>>>>> 3. QEMU starts up in xen-attach mode, scans xenstore for relevant
> >>>>>>>    entries, then traverses the known location.
> >>>>>>>
> >>>>>>> Downside: Inventing a dummy device looks suboptimal to me.
> >>>>
> >>>> Sorry, didn't notice this thread before.
> >>>>
> >>>
> >>> No need to be sorry. I posted this last Friday night. I wouldn't expect
> >>> many replies on Monady.
> >>>
> >>>> For Xen pvUSB backend in qemu I need a Xen system device acting as
> >>>> parent for being able to attach/detach virtual USB busses.
> >>>>
> >>>> I haven't had time to update my patches for some time, but the patch
> >>>> for this system device is rather easy. It could be used as a parent
> >>>> of the xen-9p devices, too.
> >>>>
> >>>> I've attached the patch for reference.
> >>>>
> >>>
> >>> Thanks. I will have a look at your patch.
> >>
> >> Did you have some time to look at the patch? I'm asking because I
> >> finally found some time to start working on V2 of my qemu based pvUSB
> >> backend. Stefano asked me to hide the system device in my backend and
> >> I want to avoid that in case you are needing it, too.
> >>
> > 
> > Yes. I need this device. I'm not sure what "hiding this device in
> > backend" means though.
> 
> Stefano wanted it to be pvusb backend private: instead of adding it to
> hw/xenpv/xen_machine_pv.c he wanted me to add it to hw/usb/xen-usb.c
> where it would be usable by the pvUSB backend only.
> 
> With you needing that device I can leave the patch more or less
> unmodified (some rebasing to the actual qemu version is needed).
> 

Yes, please make it available to other PV backends. Someone might want
to graft every device we have to that hierarchy some day later. ;-)

> Thanks for looking into the patch,
> 

Thanks for posting this patch and sorry for the long delay.

Wei.

> Juergen
>
diff mbox

Patch

From 1bc23acf54e60c666b1ec8e3f59c7e5550423e6f Mon Sep 17 00:00:00 2001
From: Juergen Gross <jgross@suse.com>
Date: Thu, 3 Sep 2015 11:54:50 +0200
Subject: [Patch V1 1/3] xen: introduce dummy system device

Introduce a new dummy system device serving as parent for virtual
buses. This will enable new pv backends to introduce virtual buses
which are removable again opposed to system buses which are meant
to stay once added.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 hw/xenpv/xen_machine_pv.c    | 39 +++++++++++++++++++++++++++++++++++++++
 include/hw/xen/xen_backend.h |  1 +
 2 files changed, 40 insertions(+)

diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
index 2e545d2..57bc071 100644
--- a/hw/xenpv/xen_machine_pv.c
+++ b/hw/xenpv/xen_machine_pv.c
@@ -24,10 +24,15 @@ 
 
 #include "hw/hw.h"
 #include "hw/boards.h"
+#include "hw/sysbus.h"
 #include "hw/xen/xen_backend.h"
 #include "xen_domainbuild.h"
 #include "sysemu/block-backend.h"
 
+#define TYPE_XENSYSDEV "xensysdev"
+
+DeviceState *xen_sysdev;
+
 static void xen_init_pv(MachineState *machine)
 {
     const char *kernel_filename = machine->kernel_filename;
@@ -59,6 +64,9 @@  static void xen_init_pv(MachineState *machine)
         break;
     }
 
+    xen_sysdev = qdev_create(NULL, TYPE_XENSYSDEV);
+    qdev_init_nofail(xen_sysdev);
+
     xen_be_register("console", &xen_console_ops);
     xen_be_register("vkbd", &xen_kbdmouse_ops);
     xen_be_register("vfb", &xen_framebuffer_ops);
@@ -93,6 +101,31 @@  static void xen_init_pv(MachineState *machine)
     xen_init_display(xen_domid);
 }
 
+static int xen_sysdev_init(SysBusDevice *dev)
+{
+    return 0;
+}
+
+static Property xen_sysdev_properties[] = {
+    {/* end of property list */},
+};
+
+static void xen_sysdev_class_init(ObjectClass *klass, void *data)
+{
+    DeviceClass *dc = DEVICE_CLASS(klass);
+    SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
+
+    k->init = xen_sysdev_init;
+    dc->props = xen_sysdev_properties;
+}
+
+static const TypeInfo xensysdev_info = {
+    .name          = TYPE_XENSYSDEV,
+    .parent        = TYPE_SYS_BUS_DEVICE,
+    .instance_size = sizeof(SysBusDevice),
+    .class_init    = xen_sysdev_class_init,
+};
+
 static QEMUMachine xenpv_machine = {
     .name = "xenpv",
     .desc = "Xen Para-virtualized PC",
@@ -101,9 +134,15 @@  static QEMUMachine xenpv_machine = {
     .default_machine_opts = "accel=xen",
 };
 
+static void xenpv_register_types(void)
+{
+    type_register_static(&xensysdev_info);
+}
+
 static void xenpv_machine_init(void)
 {
     qemu_register_machine(&xenpv_machine);
 }
 
+type_init(xenpv_register_types)
 machine_init(xenpv_machine_init);
diff --git a/include/hw/xen/xen_backend.h b/include/hw/xen/xen_backend.h
index 3b4125e..911ba6d 100644
--- a/include/hw/xen/xen_backend.h
+++ b/include/hw/xen/xen_backend.h
@@ -59,6 +59,7 @@  struct XenDevice {
 extern XenXC xen_xc;
 extern struct xs_handle *xenstore;
 extern const char *xen_protocol;
+extern DeviceState *xen_sysdev;
 
 /* xenstore helper functions */
 int xenstore_write_str(const char *base, const char *node, const char *val);
-- 
2.1.4