> From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Alexey > Kardashevskiy > Sent: Wednesday, April 26, 2017 9:09 AM > To: dev@dpdk.org > Cc: Alexey Kardashevskiy <a...@ozlabs.ru> > Subject: [dpdk-dev] [PATCH dpdk v2] vfio/ppc64/spapr: Warn if DMA > window was created at unexpected offset > > VFIO_IOMMU_SPAPR_TCE_CREATE ioctl() returns the actual bus address for > just created DMA window. It happens to start from zero because the default > window is removed (leaving no windows) and new window starts from zero. > However this is not guaranteed and a new window may start from another > address, this adds a check and an error message. > > > Signed-off-by: Alexey Kardashevskiy <a...@ozlabs.ru> > --- > Changes: > v2: > * this just prints warning and fails instead of incorrectly changing IOVA > addresses > --- > lib/librte_eal/linuxapp/eal/eal_vfio.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.c > b/lib/librte_eal/linuxapp/eal/eal_vfio.c > index 46f951f4d..530815790 100644 > --- a/lib/librte_eal/linuxapp/eal/eal_vfio.c > +++ b/lib/librte_eal/linuxapp/eal/eal_vfio.c > @@ -702,6 +702,13 @@ vfio_spapr_dma_map(int vfio_container_fd) > return -1; > } > > + if (create.start_addr) { > + RTE_LOG(ERR, EAL, > + " DMA offsets other than zero is not supported, " > + "new window is created at %lx\n", > create.start_addr); > + return -1; > + } > + > /* map all DPDK segments for DMA. use 1:1 PA to IOVA mapping */ > for (i = 0; i < RTE_MAX_MEMSEG; i++) { > struct vfio_iommu_type1_dma_map dma_map; @@ -734,7 > +741,6 @@ vfio_spapr_dma_map(int vfio_container_fd) > "error %i (%s)\n", errno, strerror(errno)); > return -1; > } > - > } > > return 0; > -- > 2.11.0
Hi Alexey, There are some compile failures with this patch. You'll probably want to replace %lx with PRIx64 or similar :) I would argue that just saying "DMA offsets other than zero are not supported" will be sufficient and will make error message less confusing. Up to you though. Thanks, Anatoly