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. > --- > 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