[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