Messages in this thread | | | Date | Mon, 5 Sep 2022 16:32:19 +0800 | Subject | Re: [PATCH] vhost-net: support VIRTIO_F_RING_RESET | From | Jason Wang <> |
| |
在 2022/8/25 16:56, Kangjie Xu 写道: > Add VIRTIO_F_RING_RESET, which indicates that the driver can reset a > queue individually. > > VIRTIO_F_RING_RESET feature is added to virtio-spec 1.2. The relevant > information is in > oasis-tcs/virtio-spec#124 > oasis-tcs/virtio-spec#139 > > The implementation only adds the feature bit in supported features. It > does not require any other changes because we reuse the existing vhost > protocol. > > The virtqueue reset process can be concluded as two parts: > 1. The driver can reset a virtqueue. When it is triggered, we use the > set_backend to disable the virtqueue. > 2. After the virtqueue is disabled, the driver may optionally re-enable > it. The process is basically similar to when the device is started, > except that the restart process does not need to set features and set > mem table since they do not change. QEMU will send messages containing > size, base, addr, kickfd and callfd of the virtqueue in order. > Specifically, the host kernel will receive these messages in order: > a. VHOST_SET_VRING_NUM > b. VHOST_SET_VRING_BASE > c. VHOST_SET_VRING_ADDR > d. VHOST_SET_VRING_KICK > e. VHOST_SET_VRING_CALL > f. VHOST_NET_SET_BACKEND > Finally, after we use set_backend to attach the virtqueue, the virtqueue > will be enabled and start to work. > > Signed-off-by: Kangjie Xu <kangjie.xu@linux.alibaba.com> > Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
> --- > > Test environment and method: > Host: 5.19.0-rc3 > Qemu: QEMU emulator version 7.0.50 (With vq rset support) > Guest: 5.19.0-rc3 (With vq reset support) > Test Cmd: ethtool -g eth1; ethtool -G eth1 rx $1 tx $2; ethtool -g eth1; > > The drvier can resize the virtio queue, then virtio queue reset function should > be triggered. > > The default is split mode, modify Qemu virtio-net to add PACKED feature to > test packed mode. > > Guest Kernel Patch: > https://lore.kernel.org/bpf/20220801063902.129329-1-xuanzhuo@linux.alibaba.com/ > > QEMU Patch: > https://lore.kernel.org/qemu-devel/cover.1661414345.git.kangjie.xu@linux.alibaba.com/ > > Looking forward to your review and comments. Thanks. > > drivers/vhost/net.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c > index 68e4ecd1cc0e..8a34928d4fef 100644 > --- a/drivers/vhost/net.c > +++ b/drivers/vhost/net.c > @@ -73,7 +73,8 @@ enum { > VHOST_NET_FEATURES = VHOST_FEATURES | > (1ULL << VHOST_NET_F_VIRTIO_NET_HDR) | > (1ULL << VIRTIO_NET_F_MRG_RXBUF) | > - (1ULL << VIRTIO_F_ACCESS_PLATFORM) > + (1ULL << VIRTIO_F_ACCESS_PLATFORM) | > + (1ULL << VIRTIO_F_RING_RESET) > }; > > enum {
| |