On Fri, May 26, 2017 at 04:28:52PM +0200, Maxime Coquelin wrote: > This series aims at specifying ans implementing the protocol update > required to support device IOTLB with user backends. > > In this second non-RFC version, main changes are: > - spec fixes and clarification > - rings information update has been restored back to ring enablement time > - Work around GCC 4.4.7 limitation wrt assignment in unnamed union at > declaration time. > > The series can be tested with vhost_iotlb_proto_v2 branch on my gitlab > account[0]. > > 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_v2 > [1]: https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg00095.html
Overall, this looks good to me. I do think patch 3 isn't a good idea though, if slave wants something let it request it. Need to find out why does vhost in kernel want the used ring iotlb at start time - especially considering we aren't even guaranteed one entry covers the whole ring, and invalidates should affect all addresses at least in theory. > 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: extend ring information update for IOTLB to all rings > spec/vhost-user spec: Add IOMMU support > > docs/specs/vhost-user.txt | 118 ++++++++++++++++++++++++- > hw/virtio/vhost-backend.c | 130 ++++++++++++++++------------ > hw/virtio/vhost-user.c | 177 > +++++++++++++++++++++++++++++++++++++- > hw/virtio/vhost.c | 27 ++++-- > include/hw/virtio/vhost-backend.h | 23 +++-- > include/hw/virtio/vhost.h | 2 +- > 6 files changed, 397 insertions(+), 80 deletions(-) > > -- > 2.9.4