[dpdk-dev] [PATCH dpdk v2] vfio/ppc64/spapr: Warn if DMA window was created at unexpected offset

Burakov, Anatoly anatoly.burakov at intel.com
Fri Apr 28 13:19:25 CEST 2017


> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Alexey
> Kardashevskiy
> Sent: Wednesday, April 26, 2017 9:09 AM
> To: dev at dpdk.org
> Cc: Alexey Kardashevskiy <aik at 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 <aik at 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


More information about the dev mailing list