When a PCI device lives behind an IOMMU, it should use 'pci_dma_*' family of
functions when any transfer from/to guest memory is required while
'cpu_physical_memory_*' family of functions completely bypass any MMU/IOMMU in
the system.
vmxnet3 was exclusively using 'cpu_physical_memory_*' family of functions which
works fine with the default QEMU setup where IOMMU is not enabled but fails
miserably when IOMMU is enabled. This commit converts all such instances in
favor of 'pci_dma_*'
Cc: Dmitry Fleytman<address@hidden>
Cc: Jason Wang<address@hidden>
Cc:address@hidden
Cc: Anthony Liguori<address@hidden>
Signed-off-by: KarimAllah Ahmed<address@hidden>
---
hw/net/vmware_utils.h | 55 +++++++------
hw/net/vmxnet3.c | 207 +++++++++++++++++++++++++++----------------------
hw/net/vmxnet_tx_pkt.c | 19 ++---
hw/net/vmxnet_tx_pkt.h | 8 +-
4 files changed, 161 insertions(+), 128 deletions(-)