This series aims at specifying ans implementing the protocol update required to support device IOTLB with user backends.
In this third non-RFC version, main change is mandating the slave to be able to send IOTLB miss requests for any addresses it needs to access. It implies the removal of patch 3, which is no more necessary, and the related spec update in patch 6. Also, a check is added in vhost-user init to ensure that the slave does not advertise VIRTIO_F_IOMMU_PLATFORM if it does not support both VHOST_USER_PROTOCOL_F_SLAVE_REQ and VHOST_USER_PROTOCOL_F_REPLY_ACK protcol features. The slave requests channel part is re-used from Marc-André's series submitted last year[1], with main changes from original version being request/feature names renaming and addition of the REPLY_ACK feature support. Regarding IOTLB protocol, one noticeable change is the IOTLB miss request reply made optionnal (i.e. only if slave requests it by setting the VHOST_USER_NEED_REPLY flag in the message header). This change provides more flexibility in the backend implementation of the feature. The protocol is very close to kernel backends, except that a new communication channel is introduced to enable the slave to send requests to the master. [1]: https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00095.html Marc-André Lureau (2): vhost-user: add vhost_user to hold the chr vhost-user: add slave-req-fd support Maxime Coquelin (3): vhost: propagate errors in vhost_device_iotlb_miss() vhost: rework IOTLB messaging spec/vhost-user spec: Add IOMMU support docs/specs/vhost-user.txt | 116 ++++++++++++++++++++++- hw/net/vhost_net.c | 1 + hw/virtio/vhost-backend.c | 130 ++++++++++++++----------- hw/virtio/vhost-user.c | 194 ++++++++++++++++++++++++++++++++++++-- hw/virtio/vhost.c | 19 ++-- include/hw/virtio/vhost-backend.h | 23 +++-- include/hw/virtio/vhost.h | 2 +- 7 files changed, 404 insertions(+), 81 deletions(-) -- 2.9.4