On Thu, Apr 22, 2021 at 11:05:27AM -0400, Andrey Grodzovsky wrote: > Hi Bjorn, I am working on graceful device removal on PCI for our amdgppu > driver. As part of it I am triggering device remove by writing echo 1 > > /sys/bus/pci/drivers/amdgpu/xxxx:xx:xx.x/remove > > Question - in case there is a DMA operation in flight while I hit the > 'remove', is there a way to wait for completion of all the DMA operations of > the device being removed ? Is PCI core taking care of this > or is there an API we can use to do it in the driver's pci_remove callback ? > We are concerned with possible system memory corruptions otherwise. As far as I am aware, the PCI core does not wait for completion of DMA operations during remove. The only generic way to do this that I can see would be to clear the Bus Master Enable bit and then wait on the PCIe Device Status Transactions Pending bit. Obviously that would only work for PCIe, not Conventional PCI. There is one driver that calls pci_wait_for_pending_transaction(), in ice_remove(). Bjorn