Currently, IOVAs are assumed to be GPA when the dirty page logging is performed.
Add support for guest IOVA_VA mode by translatingi adresses to GPA before doing the dirty page logging. Also, the page tables used for zero_copy mode also assume will not work either if IOVA VA is enabled. In fact, enabling dequeue_zero_copy and IOMMU is dangerous altogether because IOTLB invalidation of guest pages can happen while the buffers are being used. So, ensure this cannot happen by preventing both features to be activated simultaneously. Further information: https://bugs.dpdk.org/show_bug.cgi?id=337 Fixes: 69c90e98f483 ("vhost: enable IOMMU support") Cc: maxime.coque...@redhat.com Cc: sta...@dpdk.org ---- v2 changes: Also translate buffer addresses ---- Adrian Moreno (3): vhost: translate incoming log address to gpa vhost: convert buffer addresses to GPA for logging vhost: prevent zero copy mode if iommu is on lib/librte_vhost/rte_vhost.h | 2 +- lib/librte_vhost/socket.c | 8 +++++++ lib/librte_vhost/vdpa.c | 4 +++- lib/librte_vhost/vhost.c | 22 +++++++++++++++++ lib/librte_vhost/vhost.h | 36 ++++++++++++++++++++++++++++ lib/librte_vhost/vhost_user.c | 45 ++++++++++++++++++++++++++++++++++- lib/librte_vhost/virtio_net.c | 9 +++---- 7 files changed, 119 insertions(+), 7 deletions(-) -- 2.21.0