Re: [PATCH v6 2/3] vhost/vsock: discard IOTLB when ACCESS_PLATFORM is cleared
Stefano Garzarella <[email protected]>
| Newsgroups | dev.linux.lists.virtualization,org.kernel.vger.kvm,org.kernel.vger.linux-kernel,org.kernel.vger.netdev |
|---|---|
| Message-ID | <aoVkp0USmfvbmIy5@sgarzare-redhat> |
On Tue, Aug 18, 2026 at 12:26:12PM +0800, Jia Jia wrote:
>Clear the device IOTLB when userspace clears VIRTIO_F_ACCESS_PLATFORM.
>Otherwise descriptor translation can continue to use mappings installed
>before the feature change.
>
>The common helper invalidates cached vring access and applies the
>transition even while a backend is attached. The backend remains attached,
>but userspace must configure the vring addresses for the new address mode
>after a successful live transition.
>
>Fixes: e13a6915a03f ("vhost/vsock: add IOTLB API support")
>
>Suggested-by: Michael S. Tsirkin <[email protected]>
In v5 there weren't any blank lines there, why are you adding them?
Please remove them.
>
>Signed-off-by: Jia Jia <[email protected]>
>---
> drivers/vhost/vsock.c | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
>diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c
>index 9aaab6bb8061..77a5a6775c86 100644
>--- a/drivers/vhost/vsock.c
>+++ b/drivers/vhost/vsock.c
>@@ -854,6 +854,7 @@ static int vhost_vsock_set_cid(struct vhost_vsock *vsock, u64 guest_cid)
> static int vhost_vsock_set_features(struct vhost_vsock *vsock, u64 features)
> {
> struct vhost_virtqueue *vq;
>+ int ret = -EFAULT;
This is a return value used only in the error path IIUC, better to call
it `err` or something like that IMO.
> int i;
>
> if (features & ~VHOST_VSOCK_FEATURES)
>@@ -865,9 +866,12 @@ static int vhost_vsock_set_features(struct vhost_vsock *vsock, u64 features)
> goto err;
> }
>
>- if ((features & (1ULL << VIRTIO_F_ACCESS_PLATFORM))) {
>- if (vhost_init_device_iotlb(&vsock->dev))
>+ if (features & (1ULL << VIRTIO_F_ACCESS_PLATFORM)) {
>+ ret = vhost_init_device_iotlb(&vsock->dev);
>+ if (ret)
Is this change related to this fix?
Stefano
> goto err;
>+ } else {
>+ vhost_clear_device_iotlb(&vsock->dev);
> }
>
> vsock->seqpacket_allow = features & (1ULL << VIRTIO_VSOCK_F_SEQPACKET);
>@@ -883,7 +887,7 @@ static int vhost_vsock_set_features(struct vhost_vsock *vsock, u64 features)
>
> err:
> mutex_unlock(&vsock->dev.mutex);
>- return -EFAULT;
>+ return ret;
> }
>
> static long vhost_vsock_dev_ioctl(struct file *f, unsigned int ioctl,
>