From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hemant Agrawal Subject: Re: [PATCH v7 0/9] Infrastructure to detect iova mapping on the bus Date: Tue, 5 Sep 2017 18:00:44 +0530 Message-ID: <47fa2123-29cc-a7bd-b29c-a38f3437ec9d@nxp.com> References: <20170814161059.6684-1-santosh.shukla@caviumnetworks.com> <20170831032618.7120-1-santosh.shukla@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Cc: , , , , , , , , , , To: Santosh Shukla , Return-path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0058.outbound.protection.outlook.com [104.47.34.58]) by dpdk.org (Postfix) with ESMTP id B39F02BAF for ; Tue, 5 Sep 2017 14:30:52 +0200 (CEST) In-Reply-To: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 > > 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(-) >> > >