Browse Source

hw/vfio: Add helper to retrieve device feature

Add vfio_device_get_feature() as a common helper to retrieve
VFIO device features.

No functional change intended.

Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Shameer Kolothum <skolothumtho@nvidia.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20260121114111.34045-3-skolothumtho@nvidia.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
pull/319/head
Shameer Kolothum 2 months ago
committed by Cédric Le Goater
parent
commit
de36da106d
  1. 2
      hw/vfio/container.c
  2. 9
      hw/vfio/device.c
  3. 4
      hw/vfio/listener.c
  4. 3
      include/hw/vfio/vfio-device.h

2
hw/vfio/container.c

@ -205,7 +205,7 @@ static int vfio_device_dma_logging_report(VFIODevice *vbasedev, hwaddr iova,
feature->flags = VFIO_DEVICE_FEATURE_GET |
VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT;
return vbasedev->io_ops->device_feature(vbasedev, feature);
return vfio_device_get_feature(vbasedev, feature);
}
static int vfio_container_iommu_query_dirty_bitmap(

9
hw/vfio/device.c

@ -547,6 +547,15 @@ bool vfio_device_get_host_iommu_quirk_bypass_ro(VFIODevice *vbasedev,
return false;
}
int vfio_device_get_feature(VFIODevice *vbasedev,
struct vfio_device_feature *feature)
{
if (!vbasedev->io_ops || !vbasedev->io_ops->device_feature) {
return -EINVAL;
}
return vbasedev->io_ops->device_feature(vbasedev, feature);
}
/*
* Traditional ioctl() based io
*/

4
hw/vfio/listener.c

@ -909,7 +909,7 @@ static void vfio_devices_dma_logging_stop(VFIOContainer *bcontainer)
continue;
}
ret = vbasedev->io_ops->device_feature(vbasedev, feature);
ret = vfio_device_get_feature(vbasedev, feature);
if (ret != 0) {
warn_report("%s: Failed to stop DMA logging, err %d (%s)",
@ -1014,7 +1014,7 @@ static bool vfio_devices_dma_logging_start(VFIOContainer *bcontainer,
continue;
}
ret = vbasedev->io_ops->device_feature(vbasedev, feature);
ret = vfio_device_get_feature(vbasedev, feature);
if (ret) {
error_setg_errno(errp, -ret, "%s: Failed to start DMA logging",
vbasedev->name);

3
include/hw/vfio/vfio-device.h

@ -272,6 +272,9 @@ bool vfio_device_get_host_iommu_quirk_bypass_ro(VFIODevice *vbasedev,
uint32_t type, void *caps,
uint32_t size);
int vfio_device_get_feature(VFIODevice *vbasedev,
struct vfio_device_feature *feature);
int vfio_device_get_region_info(VFIODevice *vbasedev, int index,
struct vfio_region_info **info);
int vfio_device_get_region_info_type(VFIODevice *vbasedev, uint32_t type,

Loading…
Cancel
Save