[dpdk-dev] [PATCH v2 0/3] Improve automatic selection of IOVA mode
David Marchand
david.marchand at redhat.com
Fri Jun 14 11:39:14 CEST 2019
In SPDK, not all drivers are registered with DPDK at start up time.
Previously, that meant DPDK always chose to set itself up in IOVA_PA
mode. Instead, when the correct iova choice is unclear based on the
devices and drivers known to DPDK at start up time, use other heuristics
(such as whether /proc/self/pagemap is accessible) to make a better
choice.
This enables SPDK to run as an unprivileged user again without requiring
users to explicitly set the iova mode on the command line.
Changelog since v1:
- I took over the series following experiments and discussions with Ben
and others, squashed Ben patches as two patches focusing on the main
issues,
- introduced a fix on KNI,
- on the EAL bits,
- added log on which IOVA mode has been selected,
- updated BSD EAL,
- in Linux EAL, moved KNI special case after IOVA selection,
- in Linux EAL, added check on forced mode wrt physical addresses
availability,
- on the PCI bus driver bits,
- enforced the checks in the common code of the PCI bus,
- added debug logs to track why a iova mode has been chosen per device,
- added BSD part,
- in Linux part, checked that VFIO is enabled,
- in Linux part, defaulted to DC if a driver supports both PA and VA,
--
David Marchand
Ben Walker (2):
eal: compute IOVA mode based on PA availability
bus/pci: only consider usable devices to select IOVA mode
David Marchand (1):
kni: refuse to initialise when IOVA is not PA
drivers/bus/pci/bsd/pci.c | 9 +-
drivers/bus/pci/linux/pci.c | 191 +++++++++-----------------------
drivers/bus/pci/pci_common.c | 65 +++++++++++
drivers/bus/pci/private.h | 8 ++
lib/librte_eal/common/eal_common_bus.c | 4 -
lib/librte_eal/common/include/rte_bus.h | 2 +-
lib/librte_eal/freebsd/eal/eal.c | 10 +-
lib/librte_eal/linux/eal/eal.c | 38 +++++--
lib/librte_eal/linux/eal/eal_memory.c | 46 ++------
lib/librte_kni/rte_kni.c | 5 +
10 files changed, 187 insertions(+), 191 deletions(-)
--
1.8.3.1
More information about the dev
mailing list