On Sun,  2 Nov 2025 10:00:58 +0200
Leon Romanovsky <[email protected]> wrote:
> @@ -2391,6 +2403,7 @@ static int vfio_pci_dev_set_hot_reset(struct 
> vfio_device_set *dev_set,
>                                     struct iommufd_ctx *iommufd_ctx)
>  {
>       struct vfio_pci_core_device *vdev;
> +     bool restore_revoke = false;
>       struct pci_dev *pdev;
>       int ret;
>  
> @@ -2459,6 +2472,8 @@ static int vfio_pci_dev_set_hot_reset(struct 
> vfio_device_set *dev_set,
>                       break;
>               }
>  
> +             vfio_pci_dma_buf_move(vdev, true);
> +             restore_revoke = true;
>               vfio_pci_zap_bars(vdev);
>       }
>  
> @@ -2486,6 +2501,12 @@ static int vfio_pci_dev_set_hot_reset(struct 
> vfio_device_set *dev_set,
>                              struct vfio_pci_core_device, vdev.dev_set_list);
>  
>  err_undo:
> +     if (restore_revoke) {
> +             list_for_each_entry(vdev, &dev_set->device_list, 
> vdev.dev_set_list)
> +                     if (__vfio_pci_memory_enabled(vdev))
> +                             vfio_pci_dma_buf_move(vdev, false);
> +     }
> +
>       list_for_each_entry_from_reverse(vdev, &dev_set->device_list,
>                                        vdev.dev_set_list)

We don't need the separate loop or flag, and adding it breaks the
existing reverse list walk.  Thanks,

Alex

Reply via email to