On Sat, 28 Jan 2023 05:23:46 -0500, "Michael S. Tsirkin" <m...@redhat.com> 
wrote:
> On Sat, Jan 28, 2023 at 03:17:22PM +0800, Xuan Zhuo wrote:
> > This patch move struct VirtQueue into virtio.h.
> >
> > In order to implement Queue Reset, we have to record the queue reset
> > status of in struct VirtQueue and provide it to device.
> >
> > Signed-off-by: Xuan Zhuo <xuanz...@linux.alibaba.com>
>
> So add an API please, no need to move the struct.
> This patch will go away then.

OK.

Thanks.


>
> > ---
> >  hw/virtio/virtio.c         | 49 -----------------------------------
> >  include/hw/virtio/virtio.h | 52 ++++++++++++++++++++++++++++++++++++--
> >  2 files changed, 50 insertions(+), 51 deletions(-)
> >
> > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
> > index f35178f5fc..03077b2ecf 100644
> > --- a/hw/virtio/virtio.c
> > +++ b/hw/virtio/virtio.c
> > @@ -101,60 +101,11 @@ typedef struct VRingMemoryRegionCaches {
> >      MemoryRegionCache used;
> >  } VRingMemoryRegionCaches;
> >
> > -typedef struct VRing
> > -{
> > -    unsigned int num;
> > -    unsigned int num_default;
> > -    unsigned int align;
> > -    hwaddr desc;
> > -    hwaddr avail;
> > -    hwaddr used;
> > -    VRingMemoryRegionCaches *caches;
> > -} VRing;
> > -
> >  typedef struct VRingPackedDescEvent {
> >      uint16_t off_wrap;
> >      uint16_t flags;
> >  } VRingPackedDescEvent ;
> >
> > -struct VirtQueue
> > -{
> > -    VRing vring;
> > -    VirtQueueElement *used_elems;
> > -
> > -    /* Next head to pop */
> > -    uint16_t last_avail_idx;
> > -    bool last_avail_wrap_counter;
> > -
> > -    /* Last avail_idx read from VQ. */
> > -    uint16_t shadow_avail_idx;
> > -    bool shadow_avail_wrap_counter;
> > -
> > -    uint16_t used_idx;
> > -    bool used_wrap_counter;
> > -
> > -    /* Last used index value we have signalled on */
> > -    uint16_t signalled_used;
> > -
> > -    /* Last used index value we have signalled on */
> > -    bool signalled_used_valid;
> > -
> > -    /* Notification enabled? */
> > -    bool notification;
> > -
> > -    uint16_t queue_index;
> > -
> > -    unsigned int inuse;
> > -
> > -    uint16_t vector;
> > -    VirtIOHandleOutput handle_output;
> > -    VirtIODevice *vdev;
> > -    EventNotifier guest_notifier;
> > -    EventNotifier host_notifier;
> > -    bool host_notifier_enabled;
> > -    QLIST_ENTRY(VirtQueue) node;
> > -};
> > -
> >  const char *virtio_device_names[] = {
> >      [VIRTIO_ID_NET] = "virtio-net",
> >      [VIRTIO_ID_BLOCK] = "virtio-blk",
> > diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
> > index 77c6c55929..1c0d77c670 100644
> > --- a/include/hw/virtio/virtio.h
> > +++ b/include/hw/virtio/virtio.h
> > @@ -214,6 +214,56 @@ struct VirtioDeviceClass {
> >      struct vhost_dev *(*get_vhost)(VirtIODevice *vdev);
> >  };
> >
> > +typedef struct VRingMemoryRegionCaches VRingMemoryRegionCaches;
> > +typedef void (*VirtIOHandleOutput)(VirtIODevice *, VirtQueue *);
> > +
> > +typedef struct VRing {
> > +    unsigned int num;
> > +    unsigned int num_default;
> > +    unsigned int align;
> > +    hwaddr desc;
> > +    hwaddr avail;
> > +    hwaddr used;
> > +    VRingMemoryRegionCaches *caches;
> > +} VRing;
> > +
> > +struct VirtQueue {
> > +    VRing vring;
> > +    VirtQueueElement *used_elems;
> > +
> > +    /* Next head to pop */
> > +    uint16_t last_avail_idx;
> > +    bool last_avail_wrap_counter;
> > +
> > +    /* Last avail_idx read from VQ. */
> > +    uint16_t shadow_avail_idx;
> > +    bool shadow_avail_wrap_counter;
> > +
> > +    uint16_t used_idx;
> > +    bool used_wrap_counter;
> > +
> > +    /* Last used index value we have signalled on */
> > +    uint16_t signalled_used;
> > +
> > +    /* Last used index value we have signalled on */
> > +    bool signalled_used_valid;
> > +
> > +    /* Notification enabled? */
> > +    bool notification;
> > +
> > +    uint16_t queue_index;
> > +
> > +    unsigned int inuse;
> > +
> > +    uint16_t vector;
> > +    VirtIOHandleOutput handle_output;
> > +    VirtIODevice *vdev;
> > +    EventNotifier guest_notifier;
> > +    EventNotifier host_notifier;
> > +    bool host_notifier_enabled;
> > +    QLIST_ENTRY(VirtQueue) node;
> > +};
> > +
> >  void virtio_instance_init_common(Object *proxy_obj, void *data,
> >                                   size_t vdev_size, const char *vdev_name);
> >
> > @@ -226,8 +276,6 @@ void virtio_error(VirtIODevice *vdev, const char *fmt, 
> > ...) G_GNUC_PRINTF(2, 3);
> >  /* Set the child bus name. */
> >  void virtio_device_set_child_bus_name(VirtIODevice *vdev, char *bus_name);
> >
> > -typedef void (*VirtIOHandleOutput)(VirtIODevice *, VirtQueue *);
> > -
> >  VirtQueue *virtio_add_queue(VirtIODevice *vdev, int queue_size,
> >                              VirtIOHandleOutput handle_output);
> >
> > --
> > 2.32.0.3.g01195cf9f
>

Reply via email to