Hi Santosh, > From: santosh [mailto:santosh.shu...@caviumnetworks.com] > Sent: Monday, September 4, 2017 4:14 PM > To: Burakov, Anatoly <anatoly.bura...@intel.com>; dev@dpdk.org > Cc: tho...@monjalon.net; jerin.ja...@caviumnetworks.com; > hemant.agra...@nxp.com; olivier.m...@6wind.com; > maxime.coque...@redhat.com; Gonzalez Monroy, Sergio > <sergio.gonzalez.mon...@intel.com>; Richardson, Bruce > <bruce.richard...@intel.com>; shreyansh.j...@nxp.com; > gaetan.ri...@6wind.com; step...@networkplumber.org; > acon...@redhat.com > Subject: Re: [PATCH v7 2/9] eal/pci: get iommu class > > Hi Anatoly, > > > On Monday 04 September 2017 08:23 PM, Burakov, Anatoly wrote: > >> From: Santosh Shukla [mailto:santosh.shu...@caviumnetworks.com] > >> Sent: Thursday, August 31, 2017 4:26 AM > >> To: dev@dpdk.org > >> Cc: tho...@monjalon.net; jerin.ja...@caviumnetworks.com; > >> hemant.agra...@nxp.com; olivier.m...@6wind.com; > >> maxime.coque...@redhat.com; Gonzalez Monroy, Sergio > >> <sergio.gonzalez.mon...@intel.com>; Richardson, Bruce > >> <bruce.richard...@intel.com>; shreyansh.j...@nxp.com; > >> gaetan.ri...@6wind.com; Burakov, Anatoly > <anatoly.bura...@intel.com>; > >> step...@networkplumber.org; acon...@redhat.com; Santosh Shukla > >> <santosh.shu...@caviumnetworks.com> > >> Subject: [PATCH v7 2/9] eal/pci: get iommu class > >> > >> Introducing rte_pci_get_iommu_class API which helps to get iommu > >> class of PCI device on the bus and returns preferred iova mapping mode > for PCI bus. > >> > >> Patch also add rte_pci_get_iommu_class definition for bsdapp, in > >> bsdapp case - api returns default iova mode. > >> > >> Signed-off-by: Santosh Shukla <santosh.shu...@caviumnetworks.com> > >> Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> > >> Reviewed-by: Maxime Coquelin <maxime.coque...@redhat.com> > >> --- > >> v6 --> v7: > >> - squashed v6 series patch [02/12] & [03/12] (Aaron comment). > >> > >> lib/librte_eal/bsdapp/eal/eal_pci.c | 10 ++++++++++ > >> lib/librte_eal/bsdapp/eal/rte_eal_version.map | 1 + > >> lib/librte_eal/common/include/rte_bus.h | 10 ++++++++++ > >> lib/librte_eal/common/include/rte_pci.h | 11 +++++++++++ > >> 4 files changed, 32 insertions(+) > >> > >> diff --git a/lib/librte_eal/bsdapp/eal/eal_pci.c > >> b/lib/librte_eal/bsdapp/eal/eal_pci.c > >> index 04eacdcc7..e2c252320 100644 > >> --- a/lib/librte_eal/bsdapp/eal/eal_pci.c > >> +++ b/lib/librte_eal/bsdapp/eal/eal_pci.c > >> @@ -403,6 +403,16 @@ rte_pci_scan(void) > >> return -1; > >> } > >> > >> +/* > >> + * Get iommu class of pci devices on the bus. > >> + */ > >> +enum rte_iova_mode > >> +rte_pci_get_iommu_class(void) > >> +{ > >> + /* Supports only RTE_KDRV_NIC_UIO */ > >> + return RTE_IOVA_PA; > >> +} > >> + > >> int > >> pci_update_device(const struct rte_pci_addr *addr) { diff --git > >> a/lib/librte_eal/bsdapp/eal/rte_eal_version.map > >> b/lib/librte_eal/bsdapp/eal/rte_eal_version.map > >> index c819e3084..1fdcfb460 100644 > >> --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map > >> +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map > >> @@ -242,5 +242,6 @@ DPDK_17.11 { > >> global: > >> > >> rte_pci_match; > >> + rte_pci_get_iommu_class; > >> > >> } DPDK_17.08; > >> diff --git a/lib/librte_eal/common/include/rte_bus.h > >> b/lib/librte_eal/common/include/rte_bus.h > >> index c79368d3c..9e40687e5 100644 > >> --- a/lib/librte_eal/common/include/rte_bus.h > >> +++ b/lib/librte_eal/common/include/rte_bus.h > >> @@ -55,6 +55,16 @@ extern "C" { > >> /** Double linked list of buses */ > >> TAILQ_HEAD(rte_bus_list, rte_bus); > >> > >> + > >> +/** > >> + * IOVA mapping mode. > >> + */ > >> +enum rte_iova_mode { > >> + RTE_IOVA_DC = 0, /* Don't care mode */ > >> + RTE_IOVA_PA = (1 << 0), > >> + RTE_IOVA_VA = (1 << 1) > > Hi Santosh, > > > > No need to set values explicitly, standard C will take care of it. > > no strong opinion, change queued for v8. > > > I wonder the purpose of "don't care" mode. It's not used for anything but > cases when no driver is bound. All the libraries (e.g. rte_malloc) will only > check for IOVA_VA mode. Can't we just used PA in all cases where IOVA_DC > would be applicable? > > Indeed policy is to use iova_pa for _dc case, but we need a way to distinguish > between no device found vs device attached (if attached then decide upon > its iova scheme). > > For more detailed info pl. refer [1]. > > [1] http://dpdk.org/dev/patchwork/patch/26762/ >
Maybe make your intentions more explicit then? I.e. instead of "don't care" use "no device" or some such. No strong opinion either way though, I'm fine with leaving it as is. Thanks, Anatoly