Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow the driver to reset a queue individually #124

Closed
fengidri opened this issue Dec 8, 2021 · 1 comment
Closed

Allow the driver to reset a queue individually #124

fengidri opened this issue Dec 8, 2021 · 1 comment
Labels
virtio-v1.2-cs01 To be fixed in the next release.

Comments

@fengidri
Copy link
Contributor

fengidri commented Dec 8, 2021

Update the virtio spec by adding optional new feature that extends the basic facility to allow the driver to reset a virtqueue. This main motivation is to support the reset function of the queue of the network device.

Proposed patch set: https://lists.oasis-open.org/archives/virtio-dev/202111/msg00011.html

@cohuck cohuck changed the title Allow the driver can reset a queue individually Allow the driver to reset a queue individually Dec 14, 2021
@cohuck cohuck added the virtio-v1.2-cs01 To be fixed in the next release. label Dec 14, 2021
@cohuck
Copy link
Contributor

cohuck commented Dec 14, 2021

BALLOT CREATED AT URL: https://www.oasis-open.org/committees/ballot.php?id=3676

@cohuck cohuck closed this as completed in 3b5378d Dec 21, 2021
cohuck pushed a commit that referenced this issue Dec 21, 2021
PCI support virtqueue reset.

virtio_pci_common_cfg add "queue_reset" to support virtqueue reset.
The driver uses this to selectively reset the queue.

Fixes: #124
Reviewed-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
cohuck pushed a commit that referenced this issue Dec 21, 2021
mmio support virtqueue reset.

MMIO Device Register Layout "QueueReady" to support virtqueue reset.
The driver uses this to selectively reset the queue.

Fixes: #124
Reviewed-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
fengidri added a commit to fengidri/linux that referenced this issue Jan 19, 2022
Added VIRTIO_F_RING_RESET, it came from here
oasis-tcs/virtio-spec#124

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
fengguang pushed a commit to 0day-ci/linux that referenced this issue Jan 20, 2022
Added VIRTIO_F_RING_RESET, it came from here
oasis-tcs/virtio-spec#124

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
fengguang pushed a commit to 0day-ci/linux that referenced this issue Jan 26, 2022
Added VIRTIO_F_RING_RESET, it came from here
oasis-tcs/virtio-spec#124

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
fengguang pushed a commit to 0day-ci/linux that referenced this issue Feb 14, 2022
Added VIRTIO_F_RING_RESET, it came from here
oasis-tcs/virtio-spec#124

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
roxell pushed a commit to roxell/linux that referenced this issue Mar 7, 2022
Added VIRTIO_F_RING_RESET, it came from here
oasis-tcs/virtio-spec#124

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Link: https://lore.kernel.org/r/20220224081102.80224-3-xuanzhuo@linux.alibaba.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
jonhunter pushed a commit to jonhunter/linux that referenced this issue Mar 9, 2022
Added VIRTIO_F_RING_RESET, it came from here
oasis-tcs/virtio-spec#124

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Link: https://lore.kernel.org/r/20220308123518.33800-3-xuanzhuo@linux.alibaba.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Apr 6, 2022
Added VIRTIO_F_RING_RESET, it came from here
oasis-tcs/virtio-spec#124

This feature indicates that the driver can reset a queue individually.

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Jun 24, 2022
Added VIRTIO_F_RING_RESET, it came from here

oasis-tcs/virtio-spec#124
oasis-tcs/virtio-spec#139

This feature indicates that the driver can reset a queue individually.

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Jun 24, 2022
Add queue_reset in virtio_pci_common_cfg.

For not breaks uABI, add a new struct virtio_pci_common_cfg_reset.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Jun 24, 2022
Introduce new helpers to implement queue reset and get queue reset
status.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Jul 20, 2022
Added VIRTIO_F_RING_RESET, it came from here

oasis-tcs/virtio-spec#124
oasis-tcs/virtio-spec#139

This feature indicates that the driver can reset a queue individually.

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Jul 20, 2022
Add queue_reset in virtio_pci_common_cfg.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Jul 20, 2022
Introduce new helpers to implement queue reset and get queue reset
status.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Jul 26, 2022
Added VIRTIO_F_RING_RESET, it came from here

oasis-tcs/virtio-spec#124
oasis-tcs/virtio-spec#139

This feature indicates that the driver can reset a queue individually.

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Jul 26, 2022
Add queue_reset in virtio_pci_common_cfg.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Jul 26, 2022
Introduce new helpers to implement queue reset and get queue reset
status.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Aug 1, 2022
Added VIRTIO_F_RING_RESET, it came from here

oasis-tcs/virtio-spec#124
oasis-tcs/virtio-spec#139

This feature indicates that the driver can reset a queue individually.

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Aug 1, 2022
Add queue_reset in virtio_pci_modern_common_cfg.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Aug 1, 2022
Introduce new helpers to implement queue reset and get queue reset
status.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
jessfraz pushed a commit to jessfraz/linux that referenced this issue Aug 10, 2022
Added VIRTIO_F_RING_RESET, it came from here

oasis-tcs/virtio-spec#124
oasis-tcs/virtio-spec#139

This feature indicates that the driver can reset a queue individually.

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-28-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
jessfraz pushed a commit to jessfraz/linux that referenced this issue Aug 10, 2022
Add queue_reset in virtio_pci_modern_common_cfg.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-30-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
jessfraz pushed a commit to jessfraz/linux that referenced this issue Aug 10, 2022
Introduce new helpers to implement queue reset and get queue reset
status.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-31-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
jessfraz pushed a commit to jessfraz/linux that referenced this issue Aug 12, 2022
Added VIRTIO_F_RING_RESET, it came from here

oasis-tcs/virtio-spec#124
oasis-tcs/virtio-spec#139

This feature indicates that the driver can reset a queue individually.

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-28-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
jessfraz pushed a commit to jessfraz/linux that referenced this issue Aug 12, 2022
Add queue_reset in virtio_pci_modern_common_cfg.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-30-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
jessfraz pushed a commit to jessfraz/linux that referenced this issue Aug 12, 2022
Introduce new helpers to implement queue reset and get queue reset
status.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-31-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
middaywords pushed a commit to middaywords/linux that referenced this issue Aug 12, 2022
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 does not change. QEMU will send messages containing
size, base, addr, kickfd and callfd of the virtqueue in order.

Signed-off-by: Kangjie Xu <kangjie.xu@linux.alibaba.com>
Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
middaywords pushed a commit to middaywords/linux that referenced this issue Aug 12, 2022
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>
middaywords pushed a commit to middaywords/linux that referenced this issue Aug 25, 2022
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>
middaywords pushed a commit to middaywords/qemu that referenced this issue Aug 25, 2022
This is updated using scripts/update-linux-headers.sh.

Added VIRTIO_F_RING_RESET, VIRTIO_PCI_COMMON_Q_RESET. It came from here:
oasis-tcs/virtio-spec#124
oasis-tcs/virtio-spec#139

Add VIRTIO_PCI_COMMON_Q_NDATA, which comes from here:
oasis-tcs/virtio-spec#89

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Signed-off-by: Kangjie Xu <kangjie.xu@linux.alibaba.com>
ovsrobot pushed a commit to ovsrobot/dpdk that referenced this issue Sep 5, 2022
Add VIRTIO_F_RING_RESET, which indicates that the driver can reset a
queue individually.

The feature is added to virtio-spec 1.2. The relevant information is
in oasis-tcs/virtio-spec#124

Signed-off-by: Kangjie Xu <kangjie.xu@linux.alibaba.com>
Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Signed-off-by: 0-day Robot <robot@bytheb.org>
middaywords pushed a commit to middaywords/dpdk that referenced this issue Sep 12, 2022
Add VIRTIO_F_RING_RESET, which indicates that the driver can reset a
queue individually.

The feature is added to virtio-spec 1.2. The relevant information is
in oasis-tcs/virtio-spec#124

Signed-off-by: Kangjie Xu <kangjie.xu@linux.alibaba.com>
Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
ovsrobot pushed a commit to ovsrobot/dpdk that referenced this issue Sep 12, 2022
Add VIRTIO_F_RING_RESET, which indicates that the driver can reset a
queue individually.

The feature is added to virtio-spec 1.2. The relevant information is
in oasis-tcs/virtio-spec#124

Signed-off-by: Kangjie Xu <kangjie.xu@linux.alibaba.com>
Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Signed-off-by: 0-day Robot <robot@bytheb.org>
it-is-a-robot pushed a commit to openeuler-mirror/kernel that referenced this issue Dec 14, 2022
mainline inclusion
from mainline-v6.0-rc1
commit 0b50cec
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5WXCZ
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0b50cece0b7857732d2055f2c77f8730c10f9196

----------------------------------------------------------------------

Introduce new helpers to implement queue reset and get queue reset
status.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-31-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Pengyuan Zhao <zhaopengyuan@hisilicon.com>
(cherry picked from commit 21ea447)
it-is-a-robot pushed a commit to openeuler-mirror/kernel that referenced this issue Dec 14, 2022
mainline inclusion
from mainline-v6.0-rc1
commit 0cdd450
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5WXCZ
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0cdd450e70510c9e13af8099e9f6c1467e6a0b91

----------------------------------------------------------------------

Add queue_reset in virtio_pci_modern_common_cfg.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-30-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Pengyuan Zhao <zhaopengyuan@hisilicon.com>
(cherry picked from commit 0a3d24b)
it-is-a-robot pushed a commit to openeuler-mirror/kernel that referenced this issue Dec 14, 2022
mainline inclusion
from mainline-v6.0-rc1
commit 0b50cec
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5WXCZ
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0b50cece0b7857732d2055f2c77f8730c10f9196

----------------------------------------------------------------------

Introduce new helpers to implement queue reset and get queue reset
status.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-31-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Pengyuan Zhao <zhaopengyuan@hisilicon.com>
it-is-a-robot pushed a commit to openeuler-mirror/kernel that referenced this issue Dec 14, 2022
mainline inclusion
from mainline-v6.0-rc1
commit 0cdd450
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5WXCZ
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0cdd450e70510c9e13af8099e9f6c1467e6a0b91

----------------------------------------------------------------------

Add queue_reset in virtio_pci_modern_common_cfg.

 oasis-tcs/virtio-spec#124
 oasis-tcs/virtio-spec#139

Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20220801063902.129329-30-xuanzhuo@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Pengyuan Zhao <zhaopengyuan@hisilicon.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Feb 2, 2023
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>
Message-Id: <20220825085610.80315-1-kangjie.xu@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
staging-kernelci-org pushed a commit to kernelci/linux that referenced this issue Feb 6, 2023
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>
Message-Id: <20220825085610.80315-1-kangjie.xu@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Feb 14, 2023
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>
Message-Id: <20220825085610.80315-1-kangjie.xu@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this issue Feb 15, 2023
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>
Message-Id: <20220825085610.80315-1-kangjie.xu@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
roxell pushed a commit to roxell/linux that referenced this issue Feb 21, 2023
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>
Message-Id: <20220825085610.80315-1-kangjie.xu@linux.alibaba.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
virtio-v1.2-cs01 To be fixed in the next release.
Projects
None yet
Development

No branches or pull requests

2 participants