[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220113145642.205388-1-sgarzare@redhat.com>
Date: Thu, 13 Jan 2022 15:56:42 +0100
From: Stefano Garzarella <sgarzare@...hat.com>
To: virtualization@...ts.linux-foundation.org
Cc: netdev@...r.kernel.org, stefanha@...hat.com,
Jason Wang <jasowang@...hat.com>, linux-kernel@...r.kernel.org,
kvm@...r.kernel.org, "Michael S. Tsirkin" <mst@...hat.com>
Subject: [RFC PATCH] vhost: cache avail index in vhost_enable_notify()
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@...hat.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
Powered by blists - more mailing lists