Hi Hemant, On Wednesday 05 July 2017 06:47 PM, Hemant Agrawal wrote:
> 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 <santosh.shu...@caviumnetworks.com> >> Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> >> --- >> 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. > Right and that memory allocation is malloc based. I verified for same for pci_scan_one case. Also looking at drivers/bus/fslmc/* , IIUC then your not calling rte_mem* api's at the time of bus scanning, right? And you do dma_mapping at ethdev initialization time which is referring to memseg, so afaict, prepositioning bus_scan at very early won't effect functionality. > I am still testing it out. Thanks for testing, Please share you feedback.