Ricardo CaƱuelo
2022-Aug-30 09:13 UTC
[PATCH v14 00/42] virtio pci support VIRTIO_F_RING_RESET
Hi Xuan, Patches 24 (virtio_ring: introduce virtqueue_resize()) and 28 (virtio_ring: struct virtqueue introduce reset) break the tools/virtio build: ../../drivers/virtio/virtio_ring.c: In function ?vring_create_virtqueue_packed?: ../../drivers/virtio/virtio_ring.c:1999:8: error: ?struct virtqueue? has no member named ?reset? 1999 | vq->vq.reset = false; | ^ ../../drivers/virtio/virtio_ring.c: In function ?__vring_new_virtqueue?: ../../drivers/virtio/virtio_ring.c:2493:8: error: ?struct virtqueue? has no member named ?reset? 2493 | vq->vq.reset = false; | ^ ../../drivers/virtio/virtio_ring.c: In function ?virtqueue_resize?: ../../drivers/virtio/virtio_ring.c:2587:18: error: ?struct virtqueue? has no member named ?num_max? 2587 | if (num > vq->vq.num_max) | ^ ../../drivers/virtio/virtio_ring.c:2596:11: error: ?struct virtio_device? has no member named ?config? 2596 | if (!vdev->config->disable_vq_and_reset) | ^~ ../../drivers/virtio/virtio_ring.c:2599:11: error: ?struct virtio_device? has no member named ?config? 2599 | if (!vdev->config->enable_vq_after_reset) | ^~ ../../drivers/virtio/virtio_ring.c:2602:12: error: ?struct virtio_device? has no member named ?config? 2602 | err = vdev->config->disable_vq_and_reset(_vq); | ^~ ../../drivers/virtio/virtio_ring.c:2614:10: error: ?struct virtio_device? has no member named ?config? 2614 | if (vdev->config->enable_vq_after_reset(_vq)) | ^~ make: *** [<builtin>: virtio_ring.o] Error 1 @Michael, are changes in virtio code supposed to keep the tests stable or are the tests maintained separately? Cheers, Ricardo
On Tue, 30 Aug 2022 11:13:34 +0200, "Ricardo Ca?uelo" <ricardo.canuelo at collabora.com> wrote:> Hi Xuan, > > Patches 24 (virtio_ring: introduce virtqueue_resize()) > and 28 (virtio_ring: struct virtqueue introduce reset) > break the tools/virtio build:Can you test this patch? diff --git a/tools/virtio/linux/virtio.h b/tools/virtio/linux/virtio.h index 363b98228301..5d3440f474dd 100644 --- a/tools/virtio/linux/virtio.h +++ b/tools/virtio/linux/virtio.h @@ -14,6 +14,7 @@ struct virtio_device { u64 features; struct list_head vqs; spinlock_t vqs_list_lock; + const struct virtio_config_ops *config; }; struct virtqueue { @@ -23,7 +24,9 @@ struct virtqueue { struct virtio_device *vdev; unsigned int index; unsigned int num_free; + unsigned int num_max; void *priv; + bool reset; }; /* Interfaces exported by virtio_ring. */ diff --git a/tools/virtio/linux/virtio_config.h b/tools/virtio/linux/virtio_config.h index f2640e505c4e..2a8a70e2a950 100644 --- a/tools/virtio/linux/virtio_config.h +++ b/tools/virtio/linux/virtio_config.h @@ -3,6 +3,11 @@ #include <linux/virtio.h> #include <uapi/linux/virtio_config.h> +struct virtio_config_ops { + int (*disable_vq_and_reset)(struct virtqueue *vq); + int (*enable_vq_after_reset)(struct virtqueue *vq); +}; + /* * __virtio_test_bit - helper to test feature bits. For use by transports. * Devices should normally use virtio_has_feature,