[virtio-dev] RE: RE: RE: [RFC] virtio-net: support access and control the member devices

Parav Pandit
2023-08-03T11:21:20Z

> From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
> Sent: Thursday, August 3, 2023 4:46 PM
>
> On Thu, 3 Aug 2023 11:13:28 +0000, Parav Pandit <parav@nvidia.com> wrote:
> >
> > > From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
> > > Sent: Thursday, August 3, 2023 4:36 PM
> >
> >
> > >
> > > OK.
> > >
> > >
> > > >
> > > > > + u8 mac[6];
> > > > > + le16 status;
> > > > > + le16 max_virtqueue_pairs;
> > > > > + le16 mtu;
> > > > > + le32 speed;
> > > > > + u8 duplex;
> > > >
> > > > We should above split constant config space fields and below run
> > > > time fields
> > > meant for debug purpose.
> > > > We are working on the member device migration proposal and below
> > > > fields
> > > belong to "device context" should be available through such separate
> command.
> > > > But if you do it before, please cover the whole device state and
> > > > we will be
> > > able to reuse for multiple use-cases.
> > >
> > >
> > > I am not sure I got fully.
> > >
> > > I will try.
> >
> > Something like below.
> >
> > struct virtio_field {
> > le32 type; /* contains the value of enum virtio_dev_field_type */
> > le32 size; /* size of the data field in bytes */
> > u8 data[];
> > };
> >
> > enum virtio_dev_field_type {
> > VIRTIO_DEV_PCI_COMMON_CFG, /* struct
> virtio_dev_common_cfg */
> > VIRTIO_DEV_CFG_SPACE, /* config space fields, for net struct
> virtio_net_config etc */
> > VIRTIO_DEV_QUEUE_CFG, /* struct virtio_dev_q_cfg */
> > };
> >
> > In your use case, it is VIRTIO_DEV_CFG_SPACE, just blob of data bytes.
>
>
> That is ok for me.
>
> My question is what is ctx? How do we decide what to put in ctx? How do we
> define ctx?

In the live migration use case flow, ctx is collection of all the device information.
I only listed 3 above for simplicity of our discussion.
In specific config space query, like your example,
The owner driver asks for specific piece of the context to query by supplying the bitmap for above enum.