mirror of https://github.com/xemu-project/xemu.git
vfio/common: Move VFIO reset handler registration to a group agnostic function
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> Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
e08041ece7
commit
c8fcb90c96
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue