numam-dpdk/lib
Eugenio Pérez e7cb7fdf54 vhost: clean IOTLB cache on vring stop
Old IOVA cache entries are left when there is a change on virtio driver
in VM. In case that all these old entries have iova addresses lesser
than new iova entries, vhost code will need to iterate all the cache to
find the new ones. In case of just a new iova entry needed for the new
translations, this condition will last forever.

This has been observed in virtio-net to testpmd's vfio-pci driver
transition, reducing the performance from more than 10Mpps to less than
0.07Mpps if the hugepage address was higher than the networking
buffers. Since all new buffers are contained in this new gigantic page,
vhost needs to scan IOTLB_CACHE_SIZE - 1 for each translation at worst.

Fixes: 69c90e98f4 ("vhost: enable IOMMU support")
Cc: stable@dpdk.org

Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Reported-by: Pei Zhang <pezhang@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
2021-09-28 17:26:44 +02:00
..
acl lib: remove C++ include guard from private headers 2021-09-22 22:00:17 +02:00
bbdev eal: remove sys/queue.h from public headers 2021-10-01 13:09:43 +02:00
bitratestats bitrate: promote free function to stable 2021-10-01 15:31:47 +02:00
bpf lib: remove C++ include guard from private headers 2021-09-22 22:00:17 +02:00
cfgfile version: 21.11-rc0 2021-08-17 08:37:52 +02:00
cmdline version: 21.11-rc0 2021-08-17 08:37:52 +02:00
compressdev log: register with standardized names 2021-05-11 15:17:55 +02:00
cryptodev eal: remove sys/queue.h from public headers 2021-10-01 13:09:43 +02:00
distributor lib: remove C++ include guard from private headers 2021-09-22 22:00:17 +02:00
eal eal/freebsd: lock memory device to prevent conflicts 2021-10-02 16:30:16 +02:00
efd efd: allow more CPU sockets in table creation 2021-10-01 16:33:20 +02:00
ethdev eal: remove sys/queue.h from public headers 2021-10-01 13:09:43 +02:00
eventdev lib: remove C++ include guard from private headers 2021-09-22 22:00:17 +02:00
fib fib: promote API to stable 2021-10-02 11:37:25 +02:00
flow_classify flow_classify: fix leaking rules on delete 2021-06-24 15:34:45 +02:00
graph eal: save error in string copy 2021-07-05 15:11:30 +02:00
gro version: 21.11-rc0 2021-08-17 08:37:52 +02:00
gso version: 21.11-rc0 2021-08-17 08:37:52 +02:00
hash eal: remove sys/queue.h from public headers 2021-10-01 13:09:43 +02:00
ip_frag eal: remove sys/queue.h from public headers 2021-10-01 13:09:43 +02:00
ipsec version: 21.11-rc0 2021-08-17 08:37:52 +02:00
jobstats version: 21.11-rc0 2021-08-17 08:37:52 +02:00
kni version: 21.11-rc0 2021-08-17 08:37:52 +02:00
kvargs kvargs: fix comments style 2021-09-30 17:38:13 +02:00
latencystats version: 21.11-rc0 2021-08-17 08:37:52 +02:00
lpm version: 21.11-rc0 2021-08-17 08:37:52 +02:00
mbuf mbuf: promote Tx offload helper to stable 2021-10-05 11:04:03 +02:00
member version: 21.11-rc0 2021-08-17 08:37:52 +02:00
mempool eal: remove sys/queue.h from public headers 2021-10-01 13:09:43 +02:00
meter version: 21.11-rc0 2021-08-17 08:37:52 +02:00
metrics metrics: promote deinitialize API 2021-09-23 19:21:47 +02:00
net net: promote string to ethernet to stable 2021-10-02 11:35:17 +02:00
node lib: remove C++ include guard from private headers 2021-09-22 22:00:17 +02:00
pci eal: remove sys/queue.h from public headers 2021-10-01 13:09:43 +02:00
pdump version: 21.11-rc0 2021-08-17 08:37:52 +02:00
pipeline pipeline: improve handling of learner action arguments 2021-09-27 12:18:49 +02:00
port version: 21.11-rc0 2021-08-17 08:37:52 +02:00
power lib: remove C++ include guard from private headers 2021-09-22 22:00:17 +02:00
rawdev version: 21.11-rc0 2021-08-17 08:37:52 +02:00
rcu lib: remove C++ include guard from private headers 2021-09-22 22:00:17 +02:00
regexdev lib: remove librte_ prefix from directory names 2021-04-21 14:04:09 +02:00
reorder version: 21.11-rc0 2021-08-17 08:37:52 +02:00
rib rib: promote API to stable 2021-10-02 11:37:25 +02:00
ring ring: promote new sync modes and peek to stable 2021-10-05 10:09:15 +02:00
sched sched: get 64-bit greatest common divisor 2021-09-27 17:24:16 +02:00
security security: add option to configure tunnel header verification 2021-09-28 17:40:52 +02:00
stack mempool/stack: build on Windows 2021-10-01 16:46:05 +02:00
table eal: remove sys/queue.h from public headers 2021-10-01 13:09:43 +02:00
telemetry telemetry: promote API to stable 2021-10-01 17:17:28 +02:00
timer version: 21.11-rc0 2021-08-17 08:37:52 +02:00
vhost vhost: clean IOTLB cache on vring stop 2021-09-28 17:26:44 +02:00
meson.build mempool/stack: build on Windows 2021-10-01 16:46:05 +02:00