[v3,0/3] vhost: add support for IOVA_VA mode

Message ID 20190927183759.18816-1-amorenoz@redhat.com (mailing list archive)


Adrian Moreno Sept. 27, 2019, 6:37 p.m. UTC
  Currently, IOVAs are assumed to be GPA when the dirty page logging
is performed.

Add support for guest IOVA_VA mode by translating addresses
to GPA before doing the dirty page logging.

Also, the guest_pages tracking mechanism used for zero_copy 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

Further information: https://bugs.dpdk.org/show_bug.cgi?id=337

Fixes: 69c90e98f483 ("vhost: enable IOMMU support")
Cc: maxime.coquelin@redhat.com
Cc: stable@dpdk.org

v3 changes: Address style warnings
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 | 44 ++++++++++++++++++++++++++++++++++-
 lib/librte_vhost/virtio_net.c | 12 ++++++----
 7 files changed, 120 insertions(+), 8 deletions(-)