Sorry, previous email was empty. Friday effect !
On 10/26/23 12:30, Zhenzhong Duan wrote:
> From: Eric Auger <eric.auger@redhat.com>
>
> No fucntional change intended.
>
> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> Signed-off-by: Yi Liu <yi.l.liu@intel.com>
> Signed-off-by: Yi Sun <yi.y.sun@linux.intel.com>
> Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
> Signed-off-by: Cédric Le Goater <clg@redhat.com>
> ---
> hw/vfio/common.c | 16 ++++++++++++++++
> hw/vfio/container.c | 12 +++++-------
> 2 files changed, 21 insertions(+), 7 deletions(-)
>
> diff --git a/hw/vfio/common.c b/hw/vfio/common.c
> index d62c815d7f..64565b4ae9 100644
> --- a/hw/vfio/common.c
> +++ b/hw/vfio/common.c
> @@ -1500,3 +1500,19 @@ retry:
>
> return info;
> }
> +
> +int vfio_attach_device(char *name, VFIODevice *vbasedev,
> + AddressSpace *as, Error **errp)
> +{
> + const VFIOIOMMUOps *ops = &vfio_legacy_ops;
hmm, this looks wrong. please explain.
Thanks,
C.
> +
> + return ops->attach_device(name, vbasedev, as, errp);
> +}
> +
> +void vfio_detach_device(VFIODevice *vbasedev)
> +{
> + if (!vbasedev->bcontainer) {
> + return;
> + }
> + vbasedev->bcontainer->ops->detach_device(vbasedev);
> +}
> diff --git a/hw/vfio/container.c b/hw/vfio/container.c
> index 36c34683ad..c8ff0f2037 100644
> --- a/hw/vfio/container.c
> +++ b/hw/vfio/container.c
> @@ -874,8 +874,8 @@ static int vfio_device_groupid(VFIODevice *vbasedev, Error **errp)
> * @name and @vbasedev->name are likely to be different depending
> * on the type of the device, hence the need for passing @name
> */
> -int vfio_attach_device(char *name, VFIODevice *vbasedev,
> - AddressSpace *as, Error **errp)
> +static int vfio_legacy_attach_device(char *name, VFIODevice *vbasedev,
> + AddressSpace *as, Error **errp)
> {
> int groupid = vfio_device_groupid(vbasedev, errp);
> VFIODevice *vbasedev_iter;
> @@ -915,14 +915,10 @@ int vfio_attach_device(char *name, VFIODevice *vbasedev,
> return ret;
> }
>
> -void vfio_detach_device(VFIODevice *vbasedev)
> +static void vfio_legacy_detach_device(VFIODevice *vbasedev)
> {
> VFIOGroup *group = vbasedev->group;
>
> - if (!vbasedev->bcontainer) {
> - return;
> - }
> -
> QLIST_REMOVE(vbasedev, global_next);
> QLIST_REMOVE(vbasedev, container_next);
> vbasedev->bcontainer = NULL;
> @@ -934,6 +930,8 @@ void vfio_detach_device(VFIODevice *vbasedev)
> const VFIOIOMMUOps vfio_legacy_ops = {
> .dma_map = vfio_legacy_dma_map,
> .dma_unmap = vfio_legacy_dma_unmap,
> + .attach_device = vfio_legacy_attach_device,
> + .detach_device = vfio_legacy_detach_device,
> .set_dirty_page_tracking = vfio_legacy_set_dirty_page_tracking,
> .query_dirty_bitmap = vfio_legacy_query_dirty_bitmap,
> };