On Thu, Oct 25, 2018 at 05:12:48PM +0200, Jens Freimann wrote: > On Thu, Oct 25, 2018 at 03:51:19PM +0200, Maxime Coquelin wrote: > > > > > > On 10/25/18 3:48 PM, Jens Freimann wrote: > > > On Thu, Oct 25, 2018 at 05:21:15PM +0800, Tiwei Bie wrote: > > > > On Wed, Oct 24, 2018 at 04:32:29PM +0200, Jens Freimann wrote: > > > > > Signed-off-by: Jens Freimann <jfreim...@redhat.com> > > > > > ??struct vring { > > > > > ???????? unsigned int num; > > > > > -?????? struct vring_desc?? *desc; > > > > > -?????? struct vring_avail *avail; > > > > > -?????? struct vring_used?? *used; > > > > > +?????? union { > > > > > +?????????????? struct vring_desc_packed *desc_packed; > > > > > +?????????????? struct vring_desc *desc; > > > > > +?????? }; > > > > > +?????? union { > > > > > +?????????????? struct vring_avail *avail; > > > > > +?????????????? struct vring_packed_desc_event *driver_event; > > > > > +?????? }; > > > > > +?????? union { > > > > > +?????????????? struct vring_used?? *used; > > > > > +?????????????? struct vring_packed_desc_event *device_event; > > > > > +?????? }; > > > > > ??}; > > > > > > > > > > > > > We should define a new `vring` structure for packed ring. > > > > > > I think it was requested to have it as a union before, but I can do > > > it. > > > > I guess oyu vcan have a union between struct vring and struct > > vring_packed? > > Like this? > > struct vring { > unsigned int num; > union { > struct vring_split *split; > _ struct vring_packed *packed; > }; > }; > > We will have to write vq->vq_ring.split.avail->flags and > vq->vq_ring.packed.desc[xx] and similar things in a lot of places, no? > > Should we just add both vring_split and vring_packed to struct > virtqueue instead? Only one of them will have memory allocated per virtqueue > anyway.
Yeah, we can add both to struct virtqueue.