On Fri, 2014-08-15 at 20:12 +1000, Alexey Kardashevskiy wrote:
> Since the changes are not in upstream yet, no tag or branch is specified here.
> 
> Signed-off-by: Alexey Kardashevskiy <a...@ozlabs.ru>
> ---
>  linux-headers/linux/vfio.h | 37 ++++++++++++++++++++++++++++++++++++-
>  1 file changed, 36 insertions(+), 1 deletion(-)
> 
> diff --git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h
> index 26c218e..f0aa97d 100644
> --- a/linux-headers/linux/vfio.h
> +++ b/linux-headers/linux/vfio.h
> @@ -448,13 +448,48 @@ struct vfio_iommu_type1_dma_unmap {
>   */
>  struct vfio_iommu_spapr_tce_info {
>       __u32 argsz;
> -     __u32 flags;                    /* reserved for future use */
> +     __u32 flags;
> +#define VFIO_IOMMU_SPAPR_TCE_FLAG_DDW        1 /* Support dynamic windows */
>       __u32 dma32_window_start;       /* 32 bit window start (bytes) */
>       __u32 dma32_window_size;        /* 32 bit window size (bytes) */
>  };
>  
>  #define VFIO_IOMMU_SPAPR_TCE_GET_INFO        _IO(VFIO_TYPE, VFIO_BASE + 12)
>  
> +/*
> + * Dynamic DMA windows
> + */
> +struct vfio_iommu_spapr_tce_query {
> +     __u32 argsz;
> +     /* out */
> +     __u32 windows_available;
> +     __u32 page_size_mask;
> +};

Why do we need a new ioctl for this vs extending tce_info to include it?
That's sort of the point of including argsz and flags in the ioctl.

> +#define VFIO_IOMMU_SPAPR_TCE_QUERY   _IO(VFIO_TYPE, VFIO_BASE + 17)
> +
> +struct vfio_iommu_spapr_tce_create {
> +     __u32 argsz;
> +     /* in */
> +     __u32 page_shift;
> +     __u32 window_shift;
> +     /* out */
> +     __u64 start_addr;
> +
> +};
> +#define VFIO_IOMMU_SPAPR_TCE_CREATE  _IO(VFIO_TYPE, VFIO_BASE + 18)
> +
> +struct vfio_iommu_spapr_tce_remove {
> +     __u32 argsz;
> +     /* in */
> +     __u64 start_addr;
> +};
> +#define VFIO_IOMMU_SPAPR_TCE_REMOVE  _IO(VFIO_TYPE, VFIO_BASE + 19)
> +
> +struct vfio_iommu_spapr_tce_reset {
> +     __u32 argsz;
> +};
> +#define VFIO_IOMMU_SPAPR_TCE_RESET   _IO(VFIO_TYPE, VFIO_BASE + 20)
> +

argsz by itself seems rather pointless if we don't have a flags field to
augment the structure.  Thanks,

Alex

>  /* ***************************************************************** */
>  
>  #endif /* VFIO_H */




Reply via email to