Message ID | 20231003101530.288864-12-eric.auger@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Prerequisite changes for IOMMUFD support | expand |
On 10/3/23 12:14, Eric Auger wrote: > From: Zhenzhong Duan <zhenzhong.duan@intel.com> > > Move the reset handler registration/unregistration to a place that is not > group specific. vfio_[get/put]_address_space are the best places for that > purpose. > > Signed-off-by: Eric Auger <eric.auger@redhat.com> > Signed-off-by: Yi Liu <yi.l.liu@intel.com> > Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Thanks, C. > --- > hw/vfio/common.c | 15 +++++++-------- > 1 file changed, 7 insertions(+), 8 deletions(-) > > diff --git a/hw/vfio/common.c b/hw/vfio/common.c > index 56cfe94d97..019da387d2 100644 > --- a/hw/vfio/common.c > +++ b/hw/vfio/common.c > @@ -1909,6 +1909,10 @@ static VFIOAddressSpace *vfio_get_address_space(AddressSpace *as) > space->as = as; > QLIST_INIT(&space->containers); > > + if (QLIST_EMPTY(&vfio_address_spaces)) { > + qemu_register_reset(vfio_reset_handler, NULL); > + } > + > QLIST_INSERT_HEAD(&vfio_address_spaces, space, list); > > return space; > @@ -1920,6 +1924,9 @@ static void vfio_put_address_space(VFIOAddressSpace *space) > QLIST_REMOVE(space, list); > g_free(space); > } > + if (QLIST_EMPTY(&vfio_address_spaces)) { > + qemu_unregister_reset(vfio_reset_handler, NULL); > + } > } > > /* > @@ -2385,10 +2392,6 @@ static VFIOGroup *vfio_get_group(int groupid, AddressSpace *as, Error **errp) > goto close_fd_exit; > } > > - if (QLIST_EMPTY(&vfio_group_list)) { > - qemu_register_reset(vfio_reset_handler, NULL); > - } > - > QLIST_INSERT_HEAD(&vfio_group_list, group, next); > > return group; > @@ -2417,10 +2420,6 @@ static void vfio_put_group(VFIOGroup *group) > trace_vfio_put_group(group->fd); > close(group->fd); > g_free(group); > - > - if (QLIST_EMPTY(&vfio_group_list)) { > - qemu_unregister_reset(vfio_reset_handler, NULL); > - } > } > > struct vfio_device_info *vfio_get_device_info(int fd)
diff --git a/hw/vfio/common.c b/hw/vfio/common.c index 56cfe94d97..019da387d2 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -1909,6 +1909,10 @@ static VFIOAddressSpace *vfio_get_address_space(AddressSpace *as) space->as = as; QLIST_INIT(&space->containers); + if (QLIST_EMPTY(&vfio_address_spaces)) { + qemu_register_reset(vfio_reset_handler, NULL); + } + QLIST_INSERT_HEAD(&vfio_address_spaces, space, list); return space; @@ -1920,6 +1924,9 @@ static void vfio_put_address_space(VFIOAddressSpace *space) QLIST_REMOVE(space, list); g_free(space); } + if (QLIST_EMPTY(&vfio_address_spaces)) { + qemu_unregister_reset(vfio_reset_handler, NULL); + } } /* @@ -2385,10 +2392,6 @@ static VFIOGroup *vfio_get_group(int groupid, AddressSpace *as, Error **errp) goto close_fd_exit; } - if (QLIST_EMPTY(&vfio_group_list)) { - qemu_register_reset(vfio_reset_handler, NULL); - } - QLIST_INSERT_HEAD(&vfio_group_list, group, next); return group; @@ -2417,10 +2420,6 @@ static void vfio_put_group(VFIOGroup *group) trace_vfio_put_group(group->fd); close(group->fd); g_free(group); - - if (QLIST_EMPTY(&vfio_group_list)) { - qemu_unregister_reset(vfio_reset_handler, NULL); - } } struct vfio_device_info *vfio_get_device_info(int fd)