[dpdk-dev,v2] vfio/ppc64/spapr: Use correct structures for add/remove windows

Message ID 20170426080641.23676-1-aik@ozlabs.ru (mailing list archive)
State Accepted, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Alexey Kardashevskiy April 26, 2017, 8:06 a.m. UTC
  If Linux UAPI headers in the system do not have VFIO_SPAPR_TCE_v2_IOMMU
defined, DPDK define necessary structures itself. However the existing
definitions are different from ones pushed to the mainline kernel.

This copies structures passed via VFIO_IOMMU_SPAPR_TCE_CREATE and
VFIO_IOMMU_SPAPR_TCE_REMOVE ioctls.

No change in behaviour is expected if installed linux UAPI headers
have knowledge of VFIO_SPAPR_TCE_v2_IOMMU.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
Changes:
v2:
* changed commit log after I realized that the linux UAPI headers are
currently used and if a distro is quite fresh, it has everything
defined correctly
---
 lib/librte_eal/linuxapp/eal/eal_vfio.h | 8 ++++++++
 1 file changed, 8 insertions(+)
  

Comments

Anatoly Burakov April 26, 2017, 8:15 a.m. UTC | #1
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Alexey
> Kardashevskiy
> Sent: Wednesday, April 26, 2017 9:07 AM
> To: dev@dpdk.org
> Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
> Subject: [dpdk-dev] [PATCH dpdk v2] vfio/ppc64/spapr: Use correct
> structures for add/remove windows
> 
> If Linux UAPI headers in the system do not have
> VFIO_SPAPR_TCE_v2_IOMMU defined, DPDK define necessary structures
> itself. However the existing definitions are different from ones pushed to
> the mainline kernel.
> 
> This copies structures passed via VFIO_IOMMU_SPAPR_TCE_CREATE and
> VFIO_IOMMU_SPAPR_TCE_REMOVE ioctls.
> 
> No change in behaviour is expected if installed linux UAPI headers have
> knowledge of VFIO_SPAPR_TCE_v2_IOMMU.
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
> Changes:
> v2:
> * changed commit log after I realized that the linux UAPI headers are
> currently used and if a distro is quite fresh, it has everything defined correctly
> ---
>  lib/librte_eal/linuxapp/eal/eal_vfio.h | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.h
> b/lib/librte_eal/linuxapp/eal/eal_vfio.h
> index 239ac4d8d..4a0283cb4 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_vfio.h
> +++ b/lib/librte_eal/linuxapp/eal/eal_vfio.h
> @@ -69,13 +69,21 @@ struct vfio_iommu_spapr_register_memory {
> 
>  struct vfio_iommu_spapr_tce_create {
>  	uint32_t argsz;
> +	uint32_t flags;
> +	/* in */
>  	uint32_t page_shift;
> +	uint32_t __resv1;
>  	uint64_t window_size;
>  	uint32_t levels;
> +	uint32_t __resv2;
> +	/* out */
> +	uint64_t start_addr;
>  };
> 
>  struct vfio_iommu_spapr_tce_remove {
>  	uint32_t argsz;
> +	uint32_t flags;
> +	/* in */
>  	uint64_t start_addr;
>  };
> 
> --
> 2.11.0

That was quite an oversight on my part!..

Acked-by: Anatoly  Burakov <anatoly.burakov@intel.com>
  
Thomas Monjalon April 30, 2017, 5:47 p.m. UTC | #2
26/04/2017 10:15, Burakov, Anatoly:
> > 
> > If Linux UAPI headers in the system do not have
> > VFIO_SPAPR_TCE_v2_IOMMU defined, DPDK define necessary structures
> > itself. However the existing definitions are different from ones pushed to
> > the mainline kernel.
> > 
> > This copies structures passed via VFIO_IOMMU_SPAPR_TCE_CREATE and
> > VFIO_IOMMU_SPAPR_TCE_REMOVE ioctls.
> > 
> > No change in behaviour is expected if installed linux UAPI headers have
> > knowledge of VFIO_SPAPR_TCE_v2_IOMMU.
> > 
> > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> 
> That was quite an oversight on my part!..
> 
> Acked-by: Anatoly  Burakov <anatoly.burakov@intel.com>

Applied, thanks
  

Patch

diff --git a/lib/librte_eal/linuxapp/eal/eal_vfio.h b/lib/librte_eal/linuxapp/eal/eal_vfio.h
index 239ac4d8d..4a0283cb4 100644
--- a/lib/librte_eal/linuxapp/eal/eal_vfio.h
+++ b/lib/librte_eal/linuxapp/eal/eal_vfio.h
@@ -69,13 +69,21 @@  struct vfio_iommu_spapr_register_memory {
 
 struct vfio_iommu_spapr_tce_create {
 	uint32_t argsz;
+	uint32_t flags;
+	/* in */
 	uint32_t page_shift;
+	uint32_t __resv1;
 	uint64_t window_size;
 	uint32_t levels;
+	uint32_t __resv2;
+	/* out */
+	uint64_t start_addr;
 };
 
 struct vfio_iommu_spapr_tce_remove {
 	uint32_t argsz;
+	uint32_t flags;
+	/* in */
 	uint64_t start_addr;
 };