I took Alex's suggestion on the v2 patch to add an open count to the device set. This simplified the final patch and might generally be useful for other drivers. The first patch in the series fixes a life cycle issue that was discovered while adding open_count to vfio_device_set. It is also fixed by a patch [1] in Jason's "Connect VFIO to IOMMU" series. The third patch is a rework of the original fix that uses the new device set open_count instead of the private open_count in vfio_device. [1] https://lore.kernel.org/kvm/1-v1-4991695894d8+211-vfio_iommufd_jgg@xxxxxxxxxx/ Anthony v3 -> v4: - Added a patch to fix device registration life cycle - Added a patch to add a public open_count on vfio_device_set - Changed the implementation to avoid private open_count usage v3: https://lore.kernel.org/kvm/20221102055732.2110-1-ajderossi@xxxxxxxxx/ v2 -> v3: - Added WARN_ON() - Revised commit message v2: https://lore.kernel.org/kvm/20221026194245.1769-1-ajderossi@xxxxxxxxx/ v1 -> v2: - Changed reset behavior instead of open_count ordering - Retitled from "vfio: Decrement open_count before close_device()" v1: https://lore.kernel.org/kvm/20221025193820.4412-1-ajderossi@xxxxxxxxx/ Anthony DeRossi (3): vfio: Fix container device registration life cycle vfio: Add an open counter to vfio_device_set vfio/pci: Check the device set open_count on reset drivers/vfio/pci/vfio_pci_core.c | 10 +++++----- drivers/vfio/vfio_main.c | 16 +++++++++++----- include/linux/vfio.h | 1 + 3 files changed, 17 insertions(+), 10 deletions(-) -- 2.37.4