[dpdk-dev] [PATCH v7 0/9] Infrastructure to detect iova mapping on the bus
Hemant Agrawal
hemant.agrawal at nxp.com
Tue Sep 5 14:30:44 CEST 2017
Please note that this series break the DPAA2 BUS.
Following patch series (Shreyansh) is required to fix DPAA2 bus working
with this patch series:
http://dpdk.org/dev/patchwork/patch/27950/
On 9/5/2017 5:58 PM, Hemant Agrawal wrote:
> Tested-by: Hemant Agrawal <hemant.agrawal at nxp.com>
>
> On 8/31/2017 8:56 AM, Santosh Shukla wrote:
>> v7:
>> Includes no major change, minor change detailing:
>> - patch sqashing (Aaron suggestion)
>> - added run_once for device_parse() and bus_scan() in eal init
>> (Aaron suggestion)
>> - Moved rte_eal_device_parse() up in eal initialization order.
>> - Patches rebased on top of version: 17.11-rc0
>> For v6 info refer [11].
>>
>> v6:
>> Sending v5 series rebased on top of version: 17.11-rc0.
>>
>> v5:
>> Introducing RTE_PCI_DRV_IOVA_AS_VA flag for autodetection of iova va
>> mapping.
>> If a PCI driver demand for IOVA as VA scheme then the driver can add
>> it in the
>> PCI driver registration function.
>>
>> Algorithm to select IOVA as VA for PCI bus case:
>> 0. If no device bound then return with RTE_IOVA_DC mapping mode,
>> else goto 1).
>> 1. Look for device attached to vfio kdrv and has .drv_flag set
>> to RTE_PCI_DRV_IOVA_AS_VA.
>> 2. Look for any device attached to UIO class of driver.
>> 3. Check for vfio-noiommu mode enabled.
>>
>> If 2) & 3) is false and 1) is true then select
>> mapping scheme as RTE_IOVA_VA. Otherwise use default
>> mapping scheme (RTE_IOVA_PA).
>>
>> That way, Bus can truly autodetect the iova mapping mode for
>> a device Or a set of the device.
>>
>> v6 --> v7:
>> - Patches squashed per v6.
>> - Added run_once in eal per v6.
>> - Moved rte_eal_device_parse() up in eal init oder.
>>
>> v5 --> v6:
>> - Added api info in eal's versiom.map (release DPDK_v17.11).
>>
>> v4 --> v5:
>> - Change DPDK_17.08 to DPDK_17.11 in _version.map.
>> - Reworded bus api description (suggested by Hemant).
>> - Added reviewed-by from Maxime in v5.
>> - Added acked-by from Hemant for pci and bus patches.
>>
>> v3 --> v4:
>> - Re-introduced RTE_IOVA_DEC mode (Suggested by Hemant [5]).
>> - Renamed flag to RTE_PCI_DRV_IOVA_AS_VA (Suggested by Maxime).
>> - Reworded WARNING message(suggested by Maxime[7]).
>> - Created a separate patch for rte_pci_get_iommu_class (suggested by
>> Maxime[]).
>> - Added VFIO_PRESENT ifdef build fix.
>>
>> v2 --> v3:
>> - Removed rte_mempool_virt2phy (suggested by Olivier [4])
>>
>> v1 --> v2:
>> - Removed override eal option i.e. (--iova-mode=<>) Because we have
>> means to
>> truly autodetect the iova mode.
>> - Introduced RTE_PCI_DRV_NEED_IOVA_VA drv_flag (Suggested by Maxime [3]).
>> - Using NEED_IOVA_VA drv_flag in autodetection logic.
>> - Removed Linux version check macro in vfio code, As per Maxime feedback.
>> - Moved rte_pci_match API from local to global.
>>
>> Patch Summary:
>> 1) 1nd: declare rte_pci_match api in pci header. Required for
>> autodetection in
>> follow up patches.
>> 2) 2nd - 3rd - 4th : autodetection mapping infrastructure for
>> Linux/bsdapp.
>> 3) 5th: iova mode helper API.
>> 4) 6th: Infra to detect iova mode.
>> 5) 7th: make vfio mapping iova aware.
>> 6) 8th - 9th : Check for IOVA_VA mode in below APIs
>> - rte_mem_virt2phy
>> - rte_malloc_virt2phy
>>
>> Test History:
>> - Tested for x86/XL710 40G NIC card for both modes (iova_va/pa).
>> - Tested for arm64/thunderx vNIC Integrated NIC for both modes
>> - Tested for arm64/Octeontx integrated NICs for only
>> Iova_va mode(It supports only one mode.)
>> - Ran standalone tests like mempool_autotest, mbuf_autotest.
>> - Verified for Doxygen.
>>
>> Work History:
>> For v1, Refer [1].
>> For v2, Refer [2].
>> For v3, Refer [9].
>> For v4, refer [10].
>> for v6, refer [11].
>>
>> Checkpatch result:
>> * Debug message - WARNING: line over 80 characters
>>
>> Thanks.,
>> [1] https://www.mail-archive.com/dev@dpdk.org/msg67438.html
>> [2] https://www.mail-archive.com/dev@dpdk.org/msg70674.html
>> [3] https://www.mail-archive.com/dev@dpdk.org/msg70279.html
>> [4] https://www.mail-archive.com/dev@dpdk.org/msg70692.html
>> [5] http://dpdk.org/ml/archives/dev/2017-July/071282.html
>> [6] http://dpdk.org/ml/archives/dev/2017-July/070951.html
>> [7] http://dpdk.org/ml/archives/dev/2017-July/070941.html
>> [8] http://dpdk.org/ml/archives/dev/2017-July/070952.html
>> [9] http://dpdk.org/ml/archives/dev/2017-July/070918.html
>> [10] http://dpdk.org/ml/archives/dev/2017-July/071754.html
>> [11] http://dpdk.org/ml/archives/dev/2017-August/072871.html
>>
>>
>> Santosh Shukla (9):
>> eal/pci: export match function
>> eal/pci: get iommu class
>> linuxapp/eal_pci: get iommu class
>> bus: get iommu class
>> eal: introduce iova mode helper api
>> eal: auto detect iova mode
>> linuxapp/eal_vfio: honor iova mode before mapping
>> linuxapp/eal_memory: honor iova mode in virt2phy
>> eal/rte_malloc: honor iova mode in virt2phy
>>
>> lib/librte_eal/bsdapp/eal/eal.c | 33 ++++++---
>> lib/librte_eal/bsdapp/eal/eal_pci.c | 10 +++
>> lib/librte_eal/bsdapp/eal/rte_eal_version.map | 10 +++
>> lib/librte_eal/common/eal_common_bus.c | 23 ++++++
>> lib/librte_eal/common/eal_common_pci.c | 11 +--
>> lib/librte_eal/common/include/rte_bus.h | 35 +++++++++
>> lib/librte_eal/common/include/rte_eal.h | 12 ++++
>> lib/librte_eal/common/include/rte_pci.h | 28 ++++++++
>> lib/librte_eal/common/rte_malloc.c | 9 ++-
>> lib/librte_eal/linuxapp/eal/eal.c | 33 ++++++---
>> lib/librte_eal/linuxapp/eal/eal_memory.c | 3 +
>> lib/librte_eal/linuxapp/eal/eal_pci.c | 95
>> +++++++++++++++++++++++++
>> lib/librte_eal/linuxapp/eal/eal_vfio.c | 29 +++++++-
>> lib/librte_eal/linuxapp/eal/eal_vfio.h | 4 ++
>> lib/librte_eal/linuxapp/eal/rte_eal_version.map | 10 +++
>> 15 files changed, 311 insertions(+), 34 deletions(-)
>>
>
>
More information about the dev
mailing list