lkml.org 
[lkml]   [2016]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v14 14/22] vfio_pci: Update vfio_pci to use vfio_info_add_capability()
    From
    Date
    Hi,

    On 16/11/2016 21:46, Kirti Wankhede wrote:
    > Update msix_sparse_mmap_cap() to use vfio_info_add_capability()
    > Update region type capability to use vfio_info_add_capability()
    >
    > Signed-off-by: Kirti Wankhede <kwankhede@nvidia.com>
    > Signed-off-by: Neo Jia <cjia@nvidia.com>
    > Change-Id: I52bb28c7875a6da5a79ddad1843e6088aff58a45
    > ---
    > drivers/vfio/pci/vfio_pci.c | 49 ++++++++++++++++++---------------------------
    > 1 file changed, 19 insertions(+), 30 deletions(-)
    >
    > diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c
    > index 031bc08d000d..03b5434f4d5b 100644
    > --- a/drivers/vfio/pci/vfio_pci.c
    > +++ b/drivers/vfio/pci/vfio_pci.c
    > @@ -558,10 +558,9 @@ static int vfio_pci_for_each_slot_or_bus(struct pci_dev *pdev,
    > static int msix_sparse_mmap_cap(struct vfio_pci_device *vdev,
    > struct vfio_info_cap *caps)
    > {
    > - struct vfio_info_cap_header *header;
    > struct vfio_region_info_cap_sparse_mmap *sparse;
    > size_t end, size;
    > - int nr_areas = 2, i = 0;
    > + int nr_areas = 2, i = 0, ret;
    >
    > end = pci_resource_len(vdev->pdev, vdev->msix_bar);
    >
    > @@ -572,13 +571,10 @@ static int msix_sparse_mmap_cap(struct vfio_pci_device *vdev,
    >
    > size = sizeof(*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 = kzalloc(size, GFP_KERNEL);
    > + if (!sparse)
    > + return -ENOMEM;
    >
    > - sparse = container_of(header,
    > - struct vfio_region_info_cap_sparse_mmap, header);
    > sparse->nr_areas = nr_areas;
    >
    > if (vdev->msix_offset & PAGE_MASK) {
    > @@ -594,26 +590,11 @@ static int msix_sparse_mmap_cap(struct vfio_pci_device *vdev,
    > i++;
    > }
    >
    > - return 0;
    > -}
    > -
    > -static int region_type_cap(struct vfio_pci_device *vdev,
    > - struct vfio_info_cap *caps,
    > - unsigned int type, unsigned int subtype)
    > -{
    > - struct vfio_info_cap_header *header;
    > - struct vfio_region_info_cap_type *cap;
    > -
    > - header = vfio_info_cap_add(caps, sizeof(*cap),
    > - VFIO_REGION_INFO_CAP_TYPE, 1);
    > - if (IS_ERR(header))
    > - return PTR_ERR(header);
    > -
    > - cap = container_of(header, struct vfio_region_info_cap_type, header);
    > - cap->type = type;
    > - cap->subtype = subtype;
    > + ret = vfio_info_add_capability(caps, VFIO_REGION_INFO_CAP_SPARSE_MMAP,
    > + sparse);
    > + kfree(sparse);
    >
    > - return 0;
    > + return ret;
    > }
    >
    > int vfio_pci_register_dev_region(struct vfio_pci_device *vdev,
    > @@ -752,6 +733,9 @@ static long vfio_pci_ioctl(void *device_data,
    >
    > break;
    > default:
    > + {
    > + struct vfio_region_info_cap_type cap_type;
    > +
    > if (info.index >=
    > VFIO_PCI_NUM_REGIONS + vdev->num_regions)
    > return -EINVAL;
    > @@ -762,11 +746,16 @@ static long vfio_pci_ioctl(void *device_data,
    > info.size = vdev->region[i].size;
    > info.flags = vdev->region[i].flags;
    >
    > - ret = region_type_cap(vdev, &caps,
    > - vdev->region[i].type,
    > - vdev->region[i].subtype);
    > + cap_type.type = vdev->region[i].type;
    > + cap_type.subtype = vdev->region[i].subtype;
    > +
    > + ret = vfio_info_add_capability(&caps,
    > + VFIO_REGION_INFO_CAP_TYPE,
    > + &cap_type);
    > if (ret)
    > return ret;
    > +
    nit: spare empty line

    Reviewed-by: Eric Auger <eric.auger@redhat.com>

    Eric
    > + }
    > }
    >
    > if (caps.size) {
    >

    \
     
     \ /
      Last update: 2016-11-21 12:05    [W:4.556 / U:0.160 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site