Re: understanding DMA in PCI drivers

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

 



Hi

On 2018/2/8 16:30, Kishon Vijay Abraham I wrote:
Hi,

On Thursday 08 February 2018 07:11 AM, Shawn Lin wrote:
Hi Bjorn,

[+ Kishon]

On 2018/2/7 22:39, Bjorn Helgaas wrote:

2. How does device triggers DMA from device to cpu, is it by simply
writing to BAR ?

In most cases the device itself performs the DMA.  It sounds like
you have a case where the DMA engine is not part of the device itself.
I don't know how that would be programmed, except to say that the DMA
engine presumably operates on DMA addresses, and something would still
have to DMA-map buffers to obtain those.

I have a question that why it's always device to performs the DMA for
no matter memory read and write? We have builtin DMA engine inside the
The PCI devices are supposed to work with different host controllers and
instead of relying on host controller capabilities (in this case DMA), the
device can use it's own DMA.

PCIe RC controller, so could the function driver submit the DMA request
to the PCIe RC controller driver and let it fire the DMA to access
device's internal memory? Given that we now support PCIe EP framework,

As Bjorne mentioned before, RC accessing the EP memory is mostly for
configuring the device and not in the data path. Having said that, there can be
a pci_driver which DMAs to a BAR region, if thats your usecase.

Ok, I see now. Thanks for that。


and now linux-pci behave like a *device* per your saying, so that is
quite possible for us to consider how we would submit DMA request with
current PCIe EP stuff.

Thanks
Kishon







[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