From 9858d374ad1f789c8c860e00e2b8d4d01fdc1e73 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Thu, 20 Dec 2018 10:44:47 +0100 Subject: virtio: fix kick race issue [VPP-1489] Change-Id: I25b2a28513821bc5eab9ac6890a3964d412b0399 Signed-off-by: Damjan Marion (cherry picked from commit e40231b1ecf4b49faaa9ce7b615a7d867104825b) --- src/vnet/devices/virtio/virtio.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/vnet/devices/virtio/virtio.h') diff --git a/src/vnet/devices/virtio/virtio.h b/src/vnet/devices/virtio/virtio.h index 5fc521672d9..8ac87c8ccfd 100644 --- a/src/vnet/devices/virtio/virtio.h +++ b/src/vnet/devices/virtio/virtio.h @@ -86,6 +86,7 @@ typedef struct u32 call_file_index; u32 *buffers; u16 last_used_idx; + u16 last_kick_avail_idx; } virtio_vring_t; typedef struct @@ -136,6 +137,16 @@ extern void virtio_free_used_desc (vlib_main_t * vm, virtio_vring_t * vring); format_function_t format_virtio_device_name; +static_always_inline void +virtio_kick (virtio_vring_t * vring) +{ + u64 x = 1; + int __clib_unused r; + + r = write (vring->kick_fd, &x, sizeof (x)); + vring->last_kick_avail_idx = vring->avail->idx; +} + #endif /* _VNET_DEVICES_VIRTIO_VIRTIO_H_ */ /* -- cgit 1.2.3-korg