From 162a296756f3dbead55079e4670973d859df1ef9 Mon Sep 17 00:00:00 2001 From: Mohsin Kazmi Date: Tue, 29 Sep 2020 10:01:25 +0000 Subject: virtio: fix modern device queue notify QUEUE_SELECT and QUEUE_NOTIFY_OFF registers are shared between all workers operating on the same device and operations are not atomic Type: fix Change-Id: Ie017b1bfc7e3b6b4e59029f45db78eeffd9f3aeb Signed-off-by: Mohsin Kazmi --- src/vnet/devices/virtio/pci.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/vnet/devices/virtio/pci.h') diff --git a/src/vnet/devices/virtio/pci.h b/src/vnet/devices/virtio/pci.h index 10df49c66c9..70aa9833c2d 100644 --- a/src/vnet/devices/virtio/pci.h +++ b/src/vnet/devices/virtio/pci.h @@ -195,7 +195,10 @@ typedef struct _virtio_pci_func u8 (*setup_queue) (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id, void *p); void (*del_queue) (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id); - void (*notify_queue) (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id); + u16 (*get_queue_notify_off) (vlib_main_t * vm, virtio_if_t * vif, + u16 queue_id); + void (*notify_queue) (vlib_main_t * vm, virtio_if_t * vif, u16 queue_id, + u16 queue_notify_offset); u16 (*set_config_irq) (vlib_main_t * vm, virtio_if_t * vif, u16 vec); u16 (*set_queue_irq) (vlib_main_t * vm, virtio_if_t * vif, u16 vec, -- cgit 1.2.3-korg