Messages in this thread Patch in this message | | | From | Stefano Garzarella <> | Subject | [RFC PATCH] vhost: cache avail index in vhost_enable_notify() | Date | Thu, 13 Jan 2022 15:56:42 +0100 |
| |
In vhost_enable_notify() we enable the notifications and we read the avail index to check if new buffers have become available in the meantime. In this case, the device would go to re-read avail index to access the descriptor.
As we already do in other place, we can cache the value in `avail_idx` and compare it with `last_avail_idx` to check if there are new buffers available.
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> --- drivers/vhost/vhost.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index 59edb5a1ffe2..07363dff559e 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -2543,8 +2543,9 @@ bool vhost_enable_notify(struct vhost_dev *dev, struct vhost_virtqueue *vq) &vq->avail->idx, r); return false; } + vq->avail_idx = vhost16_to_cpu(vq, avail_idx); - return vhost16_to_cpu(vq, avail_idx) != vq->avail_idx; + return vq->avail_idx != vq->last_avail_idx; } EXPORT_SYMBOL_GPL(vhost_enable_notify); -- 2.31.1
| |