vhost: correctly check the iova range when waking virtqueue
We don't wakeup the virtqueue if the first byte of pending iova range
is the last byte of the range we just got updated. This will lead a
virtqueue to wait for IOTLB updating forever. Fixing by correct the
check and wake up the virtqueue in this case.
Fixes: 6b1e6cc785
("vhost: new device IOTLB API")
Reported-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Tested-by: Peter Xu <peterx@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
6750c87074
commit
2d66f997f0
|
@ -952,7 +952,7 @@ static void vhost_iotlb_notify_vq(struct vhost_dev *d,
|
|||
list_for_each_entry_safe(node, n, &d->pending_list, node) {
|
||||
struct vhost_iotlb_msg *vq_msg = &node->msg.iotlb;
|
||||
if (msg->iova <= vq_msg->iova &&
|
||||
msg->iova + msg->size - 1 > vq_msg->iova &&
|
||||
msg->iova + msg->size - 1 >= vq_msg->iova &&
|
||||
vq_msg->type == VHOST_IOTLB_MISS) {
|
||||
vhost_poll_queue(&node->vq->poll);
|
||||
list_del(&node->node);
|
||||
|
|
Loading…
Reference in New Issue