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 >