Re: [PATCH v11 8/9] vfio: Add a reset_done callback for vfio-pci driver
From: Alex Williamson
Date: Wed Mar 25 2026 - 13:37:33 EST
On Mon, 16 Mar 2026 12:15:43 -0700
Farhan Ali <alifm@xxxxxxxxxxxxx> wrote:
> On error recovery for a PCI device bound to vfio-pci driver, we want to
> recover the state of the device to its last known saved state. The callback
> restores the state of the device to its initial saved state.
>
> Reviewed-by: Julian Ruess <julianr@xxxxxxxxxxxxx>
> Reviewed-by: Niklas Schnelle <schnelle@xxxxxxxxxxxxx>
> Signed-off-by: Farhan Ali <alifm@xxxxxxxxxxxxx>
> ---
> drivers/vfio/pci/vfio_pci_core.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
> index bbdb625e35ef..f1bd1266b88f 100644
> --- a/drivers/vfio/pci/vfio_pci_core.c
> +++ b/drivers/vfio/pci/vfio_pci_core.c
> @@ -2257,6 +2257,17 @@ pci_ers_result_t vfio_pci_core_aer_err_detected(struct pci_dev *pdev,
> }
> EXPORT_SYMBOL_GPL(vfio_pci_core_aer_err_detected);
>
> +static void vfio_pci_core_aer_reset_done(struct pci_dev *pdev)
> +{
> + struct vfio_pci_core_device *vdev = dev_get_drvdata(&pdev->dev);
> +
> + if (!vdev->pci_saved_state)
> + return;
> +
> + pci_load_saved_state(pdev, vdev->pci_saved_state);
> + pci_restore_state(pdev);
> +}
> +
> int vfio_pci_core_sriov_configure(struct vfio_pci_core_device *vdev,
> int nr_virtfn)
> {
> @@ -2321,6 +2332,7 @@ EXPORT_SYMBOL_GPL(vfio_pci_core_sriov_configure);
>
> const struct pci_error_handlers vfio_pci_core_err_handlers = {
> .error_detected = vfio_pci_core_aer_err_detected,
> + .reset_done = vfio_pci_core_aer_reset_done,
> };
> EXPORT_SYMBOL_GPL(vfio_pci_core_err_handlers);
>
It gives me some anxiety to restore the open state of the device here,
but I can't identify any specific issues. We'll try it and see how it
goes.
Acked-by: Alex Williamson <alex@xxxxxxxxxxx>
Thanks,
Alex