Re: DMA operations by device when device is fake removed using PCI sysfs 'remove' interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux