[Intel-gfx] [PATCH 1/6] lib/scatterlist: add sg_set_dma_addr() function
Christian König
christian.koenig at amd.com
Thu Mar 12 10:31:35 UTC 2020
Am 12.03.20 um 11:19 schrieb Christoph Hellwig:
> On Thu, Mar 12, 2020 at 11:14:22AM +0100, Christian König wrote:
>>>> The page pointer is set to NULL and only the DMA address,
>>>> length and offset values are valid.
>>> NAK. The only valid way to fill DMA address in scatterlists is
>>> dma_map_sg / dma_map_sg_attr.
>> How can we then map PCIe BARs into an scatterlist which are not backed by
>> struct pages?
> You can't. scatterlists by definition map memory backed by a struct
> page. If you want to map something else struct scatterlist is the
> wrong structure and you need to use something else (which you should
> anyway as struct scatterlist is a bad design patter, and the above
> is only one of the many issues with it).
But how should we then deal with all the existing interfaces which
already take a scatterlist/sg_table ?
The whole DMA-buf design and a lot of drivers are build around
scatterlist/sg_table and to me that actually makes quite a lot of sense.
For TTM I'm also trying for quite a while to just nuke the manual
dma_address arrays we have and switch over to scatterlist/sg_table.
I mean we could come up with a new structure for this, but to me that
just looks like reinventing the wheel. Especially since drivers need to
be able to handle both I/O to system memory and I/O to PCIe BARs.
Regards,
Christian.
More information about the Intel-gfx
mailing list