This series aims at specifying ans implementing the protocol update required to support device IOTLB with user backends.
In this first non-RFC version, IOTLB messages forging and parsing have been extracted from the backend implementation; so that both user and kernel backends share as most code as possible, only the transport remains backend specifics. Also various smaller fixes have been implementated, taking into account Peter's review comments. I tagged this third version as non-RFC, since there is now a DPDK vhost-user backend prototype supporting IOMMU[0], making possible testing of this series. 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. [0]: https://gitlab.com/mcoquelin/dpdk-next-virtio/commits/vhost_iotlb_proto [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 (4): vhost: propagate errors in vhost_device_iotlb_miss() vhost: rework IOTLB messaging vhost: Update rings information for IOTLB earlier spec/vhost-user spec: Add IOMMU support docs/specs/vhost-user.txt | 107 ++++++++++++++++++++++- hw/virtio/vhost-backend.c | 135 ++++++++++++++++------------- hw/virtio/vhost-user.c | 177 +++++++++++++++++++++++++++++++++++++- hw/virtio/vhost.c | 38 ++++---- include/hw/virtio/vhost-backend.h | 23 +++-- include/hw/virtio/vhost.h | 2 +- 6 files changed, 393 insertions(+), 89 deletions(-) -- 2.9.3