vhost-vsock leaves the device IOTLB attached when userspace clears
VIRTIO_F_ACCESS_PLATFORM. It also replaces an existing IOTLB with an
empty one whenever a later feature update keeps ACCESS_PLATFORM enabled.
Patch 1 adds a common vhost helper that detaches the device IOTLB from
all virtqueues, clears their metadata caches, drops queued IOTLB miss
messages, and frees the old table after all virtqueues have released
their pointers.
Patch 2 uses the helper when vhost-vsock clears ACCESS_PLATFORM. The
acked_features update remains in the vhost-vsock-specific loop.
Patch 3 avoids replacing an existing IOTLB when ACCESS_PLATFORM remains
enabled across a feature update.
Changes since v3:
- move the IOTLB teardown helper from vhost-vsock into common vhost code
- keep acked_features updates in the backend-specific loop
- add the common helper as a separate first patch
Jia Jia (3):
vhost: add helper to clear device IOTLB
vhost/vsock: discard IOTLB when ACCESS_PLATFORM is cleared
vhost/vsock: keep IOTLB across feature updates
drivers/vhost/vhost.c | 24 ++++++++++++++++++++++++
drivers/vhost/vhost.h | 1 +
drivers/vhost/vsock.c | 7 ++++++-
3 files changed, 31 insertions(+), 1 deletion(-)
--
2.34.1