From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hemant Agrawal Subject: Re: [PATCH 05/10] linuxapp/eal: detect iova mode Date: Wed, 5 Jul 2017 18:47:47 +0530 Message-ID: References: <20170608110513.22548-1-santosh.shukla@caviumnetworks.com> <20170608110513.22548-6-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 NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0073.outbound.protection.outlook.com [104.47.38.73]) by dpdk.org (Postfix) with ESMTP id B42932C8 for ; Wed, 5 Jul 2017 15:17:57 +0200 (CEST) In-Reply-To: <20170608110513.22548-6-santosh.shukla@caviumnetworks.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 6/8/2017 4:35 PM, Santosh Shukla wrote: > - Moving late bus scanning to up..just after eal_parsing. > - Detect iova mapping mode based on user provided eal option > (rte_eal_iova_mode) and result of rte_bus_scan_iommu_class. > > Signed-off-by: Santosh Shukla > Signed-off-by: Jerin Jacob > --- > lib/librte_eal/linuxapp/eal/eal.c | 24 ++++++++++++++++++------ > lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 + > 2 files changed, 19 insertions(+), 6 deletions(-) > > diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c > index 7c78f2dc2..54f42d752 100644 > --- a/lib/librte_eal/linuxapp/eal/eal.c > +++ b/lib/librte_eal/linuxapp/eal/eal.c > @@ -122,6 +122,13 @@ struct internal_config internal_config; > /* used by rte_rdtsc() */ > int rte_cycles_vmware_tsc_map; > > +/* Get the iova mode */ > +enum rte_iova_mode > +rte_eal_iova_mode(void) > +{ > + return internal_config.iova_mode; > +} > + > /* Return a pointer to the configuration structure */ > struct rte_config * > rte_eal_get_configuration(void) > @@ -793,6 +800,17 @@ rte_eal_init(int argc, char **argv) > return -1; > } > > + if (rte_bus_scan()) { > + rte_eal_init_alert("Cannot scan the buses for devices\n"); > + rte_errno = ENODEV; > + return -1; > + } > + The bus scanning includes allocating memory for the devices. It can not be moved so early. I am still testing it out. > + if (rte_eal_iova_mode() == RTE_IOVA_VA && > + rte_bus_get_iommu_class() == RTE_IOVA_VA) { > + internal_config.iova_mode = RTE_IOVA_VA; > + } > + > if (internal_config.no_hugetlbfs == 0 && > internal_config.process_type != RTE_PROC_SECONDARY && > internal_config.xen_dom0_support == 0 && > @@ -890,12 +908,6 @@ rte_eal_init(int argc, char **argv) > return -1; > } > > - if (rte_bus_scan()) { > - rte_eal_init_alert("Cannot scan the buses for devices\n"); > - rte_errno = ENODEV; > - return -1; > - } > - > RTE_LCORE_FOREACH_SLAVE(i) { > > /* > diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map > index 6c016c82e..79b005036 100644 > --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map > +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map > @@ -204,5 +204,6 @@ DPDK_17.08 { > > rte_pci_get_iommu_class; > rte_bus_get_iommu_class; > + rte_eal_iova_mode; > > } DPDK_17.05; >