Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1526573
| From | Auger Eric <eric.auger@redhat.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [Qemu-devel] [PATCH v14 13/22] vfio: Introduce common function to add capabilities |
| Date | 2016-11-21 12:10 +0100 |
| Message-ID | <sFUE1-pB-11@gated-at.bofh.it> (permalink) |
| References | <sEfjz-7Ip-3@gated-at.bofh.it> <sEfjA-7Ip-25@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Hi,
On 16/11/2016 21:46, Kirti Wankhede wrote:
> Vendor driver using mediated device framework should use
> vfio_info_add_capability() to add capabilities.
> Introduced this function to reduce code duplication in vendor drivers.
>
> vfio_info_cap_shift() manipulated a data buffer to add an offset to each
> element in a chain. This data buffer is documented in a uapi header.
> Changing vfio_info_cap_shift symbol to be available to all drivers.
>
> Signed-off-by: Kirti Wankhede <kwankhede@nvidia.com>
> Signed-off-by: Neo Jia <cjia@nvidia.com>
> Change-Id: I6fca329fa2291f37a2c859d0bc97574d9e2ce1a6
> ---
> drivers/vfio/vfio.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++-
> include/linux/vfio.h | 3 +++
> 2 files changed, 62 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
> index c850ba324be2..82257cf30f52 100644
> --- a/drivers/vfio/vfio.c
> +++ b/drivers/vfio/vfio.c
> @@ -1797,8 +1797,66 @@ void vfio_info_cap_shift(struct vfio_info_cap *caps, size_t offset)
> for (tmp = caps->buf; tmp->next; tmp = (void *)tmp + tmp->next - offset)
> tmp->next += offset;
> }
> -EXPORT_SYMBOL_GPL(vfio_info_cap_shift);
> +EXPORT_SYMBOL(vfio_info_cap_shift);
>
> +static int sparse_mmap_cap(struct vfio_info_cap *caps, void *cap_type)
> +{
> + struct vfio_info_cap_header *header;
> + struct vfio_region_info_cap_sparse_mmap *sparse_cap, *sparse = cap_type;
> + size_t size;
> +
> + size = sizeof(*sparse) + sparse->nr_areas * sizeof(*sparse->areas);
> + header = vfio_info_cap_add(caps, size,
> + VFIO_REGION_INFO_CAP_SPARSE_MMAP, 1);
> + if (IS_ERR(header))
> + return PTR_ERR(header);
> +
> + sparse_cap = container_of(header,
> + struct vfio_region_info_cap_sparse_mmap, header);
> + sparse_cap->nr_areas = sparse->nr_areas;
> + memcpy(sparse_cap->areas, sparse->areas,
> + sparse->nr_areas * sizeof(*sparse->areas));
> + return 0;
> +}
> +
> +static int region_type_cap(struct vfio_info_cap *caps, void *cap_type)
> +{
> + struct vfio_info_cap_header *header;
> + struct vfio_region_info_cap_type *type_cap, *cap = cap_type;
> +
> + header = vfio_info_cap_add(caps, sizeof(*cap),
> + VFIO_REGION_INFO_CAP_TYPE, 1);
> + if (IS_ERR(header))
> + return PTR_ERR(header);
> +
> + type_cap = container_of(header, struct vfio_region_info_cap_type,
> + header);
> + type_cap->type = cap->type;
> + type_cap->subtype = cap->subtype;
> + return 0;
> +}
> +
> +int vfio_info_add_capability(struct vfio_info_cap *caps, int cap_type_id,
> + void *cap_type)
> +{
> + int ret = -EINVAL;
> +
> + if (!cap_type)
> + return 0;
> +
> + switch (cap_type_id) {
> + case VFIO_REGION_INFO_CAP_SPARSE_MMAP:
> + ret = sparse_mmap_cap(caps, cap_type);
> + break;
> +
> + case VFIO_REGION_INFO_CAP_TYPE:
> + ret = region_type_cap(caps, cap_type);
> + break;
> + }
> +
> + return ret;
> +}
> +EXPORT_SYMBOL(vfio_info_add_capability);
>
> /*
> * Pin a set of guest PFNs and return their associated host PFNs for local
> diff --git a/include/linux/vfio.h b/include/linux/vfio.h
> index 6ab13f7e2920..e26f7ccab564 100644
> --- a/include/linux/vfio.h
> +++ b/include/linux/vfio.h
> @@ -126,6 +126,9 @@ extern struct vfio_info_cap_header *vfio_info_cap_add(
> struct vfio_info_cap *caps, size_t size, u16 id, u16 version);
> extern void vfio_info_cap_shift(struct vfio_info_cap *caps, size_t offset);
>
> +extern int vfio_info_add_capability(struct vfio_info_cap *caps,
> + int cap_type_id, void *cap_type);
> +
> struct pci_dev;
> #ifdef CONFIG_EEH
> extern void vfio_spapr_pci_eeh_open(struct pci_dev *pdev);
>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Eric
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v14 00/22] Add Mediated device support Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 21:50 +0100
[PATCH v14 11/22] vfio iommu: Add blocking notifier to notify DMA_UNMAP Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 21:50 +0100
Re: [PATCH v14 11/22] vfio iommu: Add blocking notifier to notify DMA_UNMAP Alex Williamson <alex.williamson@redhat.com> - 2016-11-17 01:10 +0100
Re: [PATCH v14 11/22] vfio iommu: Add blocking notifier to notify DMA_UNMAP Jike Song <jike.song@intel.com> - 2016-11-17 04:00 +0100
Re: [PATCH v14 11/22] vfio iommu: Add blocking notifier to notify DMA_UNMAP Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-17 06:00 +0100
[PATCH v14 18/22] vfio: Define device_api strings Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 21:50 +0100
[PATCH v14 09/22] vfio iommu type1: Add task structure to vfio_dma Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 21:50 +0100
Re: [PATCH v14 09/22] vfio iommu type1: Add task structure to vfio_dma Alexey Kardashevskiy <aik@ozlabs.ru> - 2016-11-17 06:50 +0100
Re: [PATCH v14 09/22] vfio iommu type1: Add task structure to vfio_dma Alex Williamson <alex.williamson@redhat.com> - 2016-11-17 07:20 +0100
Re: [PATCH v14 09/22] vfio iommu type1: Add task structure to vfio_dma Alexey Kardashevskiy <aik@ozlabs.ru> - 2016-11-17 07:50 +0100
Re: [PATCH v14 09/22] vfio iommu type1: Add task structure to vfio_dma Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-17 07:30 +0100
[PATCH v14 07/22] vfio iommu type1: Update argument of vaddr_get_pfn() Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 21:50 +0100
[PATCH v14 20/22] docs: Sysfs ABI for mediated device framework Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 21:50 +0100
[PATCH v14 13/22] vfio: Introduce common function to add capabilities Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 21:50 +0100
Re: [Qemu-devel] [PATCH v14 13/22] vfio: Introduce common function to add capabilities Auger Eric <eric.auger@redhat.com> - 2016-11-21 12:10 +0100
[PATCH v14 01/22] vfio: Mediated device Core driver Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 21:50 +0100
[PATCH v14 03/22] vfio: Rearrange functions to get vfio_group from dev Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 22:00 +0100
[PATCH v14 08/22] vfio iommu type1: Add find_iommu_group() function Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 22:00 +0100
Re: [PATCH v14 08/22] vfio iommu type1: Add find_iommu_group() function Auger Eric <eric.auger@redhat.com> - 2016-11-21 12:30 +0100
Re: [PATCH v14 08/22] vfio iommu type1: Add find_iommu_group() function Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-21 13:00 +0100
Re: [PATCH v14 08/22] vfio iommu type1: Add find_iommu_group() function Auger Eric <eric.auger@redhat.com> - 2016-11-21 13:50 +0100
[PATCH v14 02/22] vfio: VFIO based driver for Mediated devices Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 22:00 +0100
[PATCH v14 12/22] vfio: Add notifier callback to parent's ops structure of mdev Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 22:00 +0100
Re: [PATCH v14 12/22] vfio: Add notifier callback to parent's ops structure of mdev Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-17 06:10 +0100
Re: [PATCH v14 12/22] vfio: Add notifier callback to parent's ops structure of mdev Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-17 06:10 +0100
Re: [PATCH v14 12/22] vfio: Add notifier callback to parent's ops structure of mdev Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-17 18:30 +0100
Re: [PATCH v14 12/22] vfio: Add notifier callback to parent's ops structure of mdev Alex Williamson <alex.williamson@redhat.com> - 2016-11-17 18:40 +0100
Re: [PATCH v14 12/22] vfio: Add notifier callback to parent's ops structure of mdev Jike Song <jike.song@intel.com> - 2016-11-17 18:40 +0100
Re: [PATCH v14 12/22] vfio: Add notifier callback to parent's ops structure of mdev Alex Williamson <alex.williamson@redhat.com> - 2016-11-17 19:00 +0100
[PATCH v14 04/22] vfio: Common function to increment container_users Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-16 22:00 +0100
Re: [PATCH v14 00/22] Add Mediated device support Alex Williamson <alex.williamson@redhat.com> - 2016-11-17 22:30 +0100
Re: [PATCH v14 00/22] Add Mediated device support Neo Jia <cjia@nvidia.com> - 2016-11-17 23:20 +0100
Re: [PATCH v14 00/22] Add Mediated device support Kirti Wankhede <kwankhede@nvidia.com> - 2016-11-18 03:10 +0100
Re: [Qemu-devel] [PATCH v14 00/22] Add Mediated device support Jike Song <jike.song@intel.com> - 2016-11-18 03:30 +0100
RE: [PATCH v14 00/22] Add Mediated device support "Tian, Kevin" <kevin.tian@intel.com> - 2016-11-18 00:30 +0100
Re: [PATCH v14 00/22] Add Mediated device support Alex Williamson <alex.williamson@redhat.com> - 2016-11-18 01:00 +0100
Re: [PATCH v14 00/22] Add Mediated device support Zhenyu Wang <zhenyuw@linux.intel.com> - 2016-11-18 10:30 +0100
Re: [PATCH v14 00/22] Add Mediated device support Alex Williamson <alex.williamson@redhat.com> - 2016-11-18 16:50 +0100
Re: [PATCH v14 00/22] Add Mediated device support Daniel Vetter <daniel@ffwll.ch> - 2016-11-18 17:20 +0100
Re: [PATCH v14 00/22] Add Mediated device support Alex Williamson <alex.williamson@redhat.com> - 2016-11-18 18:00 +0100
csiph-web