On Thu, Jan 31, 2019 at 02:35:14PM -0500, Jerome Glisse wrote:
Basically invert the API flow - the DMA map would be done close to GUP, not buried in the driver. This absolutely doesn't work for every flow we have, but it does enable the ones that people seem to care about when talking about P2P.
This does not work for GPU really i do not want to have to rewrite GPU driver for this. Struct page is a burden and it does not bring anything to the table. I rather provide an all in one stop for driver to use this without having to worry between regular vma and special vma.
I'm talking about almost exactly what you've done in here - make a 'sgl' that is dma addresses only.
In these VMA patches you used a simple array of physical addreses - I'm only talking about moving that array into a 'dma sgl'.
The flow is still basically the same - the driver directly gets DMA physical addresses with no possibility to get a struct page or CPU memory.
And then we can build more stuff around the 'dma sgl', including the in-kernel users Logan is worrying about.
Jason