[dpdk-dev] [PATCH] vfio: allow to map other memory regions

Thomas Monjalon thomas at monjalon.net
Wed Jun 28 13:50:46 CEST 2017


28/06/2017 11:54, Wodkowski, PawelX:
> > -----Original Message-----
> > From: Thomas Monjalon [mailto:thomas at monjalon.net]
> > Sent: Monday, June 19, 2017 11:04 PM
> > To: Wodkowski, PawelX <pawelx.wodkowski at intel.com>
> > Cc: dev at dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH] vfio: allow to map other memory regions
> > 
> > Hi,
> > Some comments below
> > 
> > 24/05/2017 13:17, Pawel Wodkowski:
> > > Currently it is not possible to use memory that is not owned by DPDK to
> > > perform DMA. This scenarion might be used in vhost applications (like
> > > SPDK) where guest send its own memory table. To fill this gap provide
> > > API to allow registering arbitrary address in VFIO container.
> > >
> > > Signed-off-by: Pawel Wodkowski <pawelx.wodkowski at intel.com>
> > > ---
> > >  lib/librte_eal/linuxapp/eal/Makefile            |   3 +
> > >  lib/librte_eal/linuxapp/eal/eal_vfio.c          | 142
> > +++++++++++++++++++++---
> > >  lib/librte_eal/linuxapp/eal/eal_vfio.h          |  10 ++
> > >  lib/librte_eal/linuxapp/eal/include/rte_iommu.h |  78 +++++++++++++
> > >  lib/librte_eal/linuxapp/eal/rte_eal_version.map |   8 ++
> > >  5 files changed, 224 insertions(+), 17 deletions(-)
> > >  create mode 100644 lib/librte_eal/linuxapp/eal/include/rte_iommu.h
> > 
> > VFIO is not referenced in the doxygen of these functions.
> > Could we use this API for something else than VFIO?
> 
> This is for any IOMMU hw/module/driver used in host which require special
> care about memory regions used for DMA. It is not restricted to VFIO even though
> only VFIO is implemented.
> 
> > 
> > Any API should be declared in common directory, even if it is not
> > implemented for FreeBSD (returning -ENOTSUP).
> 
> I think those function should be NOP for FreeBSD (like RTE_VFIO_NOIOMMU do)
> or be conditionally compiled/included (like it is now). I decide to take second way.
> Do you think that I should move rte_iommu.h to common directory and use #ifdef
> there?

No #ifdef please.
You must define new functions in a common header and implement it
for Linux and BSD. The BSD function can be return an error.


More information about the dev mailing list