> From: Li,Rongqing <lirongq...@baidu.com>
> Sent: 22 August 2025 03:57 PM
> 
> > This reverts commit 43bb40c5b926 ("virtio_pci: Support surprise
> > removal of virtio pci device").
> >
> > Virtio drivers and PCI devices have never fully supported true
> > surprise (aka hot
> > unplug) removal. Drivers historically continued processing and waiting
> > for pending I/O and even continued synchronous device reset during
> > surprise removal. Devices have also continued completing I/Os, doing
> > DMA and allowing device reset after surprise removal to support such 
> > drivers.
> >
> > Supporting it correctly would require a new device capability and
> > driver negotiation in the virtio specification to safely stop I/O and free 
> > queue
> memory.
> > Failure to do so either breaks all the existing drivers with call
> > trace listed in the commit or crashes the host on continuing the DMA.
> > Hence, until such specification and devices are invented, restore the
> > previous behavior of treating surprise removal as graceful removal to
> > avoid regressions and maintain system stability same as before the
> > commit 43bb40c5b926 ("virtio_pci: Support surprise removal of virtio pci
> device").
> >
> > As explained above, previous analysis of solving this only in driver
> > was incomplete and non-reliable at [1] and at [2]; Hence reverting
> > commit
> > 43bb40c5b926 ("virtio_pci: Support surprise removal of virtio pci
> > device") is still the best stand to restore failures of virtio net and block
> devices.
> >
> > [1]
> >
> https://lore.kernel.org/virtualization/CY8PR12MB719506CC5613EB100BC6C6
> > 38 dc...@cy8pr12mb7195.namprd12.prod.outlook.com/#t
> > [2]
> > https://lore.kernel.org/virtualization/20250602024358.57114-1-parav@nv
> > idia.c
> > om/
> >
> > Fixes: 43bb40c5b926 ("virtio_pci: Support surprise removal of virtio
> > pci device")
> > Cc: sta...@vger.kernel.org
> > Reported-by: lirongq...@baidu.com
> > Closes:
> > https://lore.kernel.org/virtualization/c45dd68698cd47238c55fb73ca9b474
> > 1@b
> > aidu.com/
> > Signed-off-by: Parav Pandit <pa...@nvidia.com>
> 
> 
> 
> Tested-by: Li RongQing <lirongq...@baidu.com>
> 
> Thanks
> 
> -Li
>
Multiple users are blocked to have this fix in stable kernel.
Thanks a lot Li for the quick test.
 
> 
> > ---
> >  drivers/virtio/virtio_pci_common.c | 7 -------
> >  1 file changed, 7 deletions(-)
> >
> > diff --git a/drivers/virtio/virtio_pci_common.c
> > b/drivers/virtio/virtio_pci_common.c
> > index d6d79af44569..dba5eb2eaff9 100644
> > --- a/drivers/virtio/virtio_pci_common.c
> > +++ b/drivers/virtio/virtio_pci_common.c
> > @@ -747,13 +747,6 @@ static void virtio_pci_remove(struct pci_dev
> *pci_dev)
> >     struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
> >     struct device *dev = get_device(&vp_dev->vdev.dev);
> >
> > -   /*
> > -    * Device is marked broken on surprise removal so that virtio upper
> > -    * layers can abort any ongoing operation.
> > -    */
> > -   if (!pci_device_is_present(pci_dev))
> > -           virtio_break_device(&vp_dev->vdev);
> > -
> >     pci_disable_sriov(pci_dev);
> >
> >     unregister_virtio_device(&vp_dev->vdev);
> > --
> > 2.26.2


Reply via email to