On Mon, Feb 8, 2016 at 3:13 PM, Burakov, Anatoly <anatoly.burakov at intel.com> wrote: >> Include vfio map/rd/wr support for pci ioport. >> >> Signed-off-by: Santosh Shukla <sshukla at mvista.com> >> --- >> v7->v8: >> - Remove rte_pci_ioport malloc and rte_free()/unmap() func from v7. >> - removed umap from git header. >> >> lib/librte_eal/linuxapp/eal/eal_pci_vfio.c | 36 ++++++++++++++++++------- >> --- >> 1 file changed, 24 insertions(+), 12 deletions(-) >> >> diff --git a/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c >> b/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c >> index 4832313..9571ed8 100644 >> --- a/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c >> +++ b/lib/librte_eal/linuxapp/eal/eal_pci_vfio.c >> @@ -74,6 +74,7 @@ EAL_REGISTER_TAILQ(rte_vfio_tailq) >> #define VFIO_GROUP_FMT "/dev/vfio/%u" >> #define VFIO_NOIOMMU_GROUP_FMT "/dev/vfio/noiommu-%u" >> #define VFIO_GET_REGION_ADDR(x) ((uint64_t) x << 40ULL) >> +#define VFIO_GET_REGION_IDX(x) (x >> 40) >> >> /* per-process VFIO config */ >> static struct vfio_config vfio_cfg; >> @@ -999,30 +1000,41 @@ int >> pci_vfio_ioport_map(struct rte_pci_device *dev, int bar, >> struct rte_pci_ioport *p) >> { >> - RTE_SET_USED(dev); >> - RTE_SET_USED(bar); >> - RTE_SET_USED(p); >> - return -1; >> + if (bar < VFIO_PCI_BAR0_REGION_INDEX || >> + bar > VFIO_PCI_BAR5_REGION_INDEX) { >> + RTE_LOG(ERR, EAL, "invalid bar (%d)!\n", bar); >> + return -1; >> + } >> + >> + p->dev = dev; >> + p->offset = VFIO_GET_REGION_ADDR(bar); >> + return 0; >> } >>
I still think we don't need this p->dev = dev. But that's not important. > Acked-by: Anatoly Burakov <anatoly.burakov at intel.com> Acked-by: David Marchand <david.marchand at 6wind.com> -- David Marchand