]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
hisi_acc_vfio_pci: bugfix the problem of uninstalling driver
authorLongfang Liu <liulongfang@huawei.com>
Sat, 10 May 2025 08:11:53 +0000 (16:11 +0800)
committerAlex Williamson <alex.williamson@redhat.com>
Mon, 19 May 2025 18:41:31 +0000 (12:41 -0600)
In a live migration scenario. If the number of VFs at the
destination is greater than the source, the recovery operation
will fail and qemu will not be able to complete the process and
exit after shutting down the device FD.

This will cause the driver to be unable to be unloaded normally due
to abnormal reference counting of the live migration driver caused
by the abnormal closing operation of fd.

Therefore, make sure the migration file descriptor references are
always released when the device is closed.

Fixes: b0eed085903e ("hisi_acc_vfio_pci: Add support for VFIO live migration")
Signed-off-by: Longfang Liu <liulongfang@huawei.com>
Reviewed-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Link: https://lore.kernel.org/r/20250510081155.55840-5-liulongfang@huawei.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c

index d96446f499ed01370f088f365cae1e4e3d593c69..cadc82419dca298d281fb429cd6c5bd2fba185a3 100644 (file)
@@ -1508,6 +1508,7 @@ static void hisi_acc_vfio_pci_close_device(struct vfio_device *core_vdev)
        struct hisi_acc_vf_core_device *hisi_acc_vdev = hisi_acc_get_vf_dev(core_vdev);
        struct hisi_qm *vf_qm = &hisi_acc_vdev->vf_qm;
 
+       hisi_acc_vf_disable_fds(hisi_acc_vdev);
        mutex_lock(&hisi_acc_vdev->open_mutex);
        hisi_acc_vdev->dev_opened = false;
        iounmap(vf_qm->io_base);