> > diff --git a/drivers/virtio/virtio_pci_common.c > > b/drivers/virtio/virtio_pci_common.c > > index 7a55939..d60fe99 100644 > > --- a/drivers/virtio/virtio_pci_common.c > > +++ b/drivers/virtio/virtio_pci_common.c > > @@ -584,13 +584,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); > > > Maybe break device is not the right thing to do. Indeed, request buffers which > have been already used are not completed by driver. True, break device makes virtio-blk no longer work for surprise removal And seems no simple method can work for all devices. -Li