]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'pagepool-api-and-dma-address-storage'
authorDavid S. Miller <davem@davemloft.net>
Thu, 14 Feb 2019 06:00:17 +0000 (22:00 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 14 Feb 2019 06:00:17 +0000 (22:00 -0800)
commit4bd33adf8daa7581719bf9c70f23395ebbeb2e7d
tree148c75447c7e21ea390e5cd357304d8c76c86fb0
parent116b24a17bb5fbb24df65dd281df1f7903f635c3
parenteea9d15099fcca76455263d949fff00d0ce7bae1
Merge branch 'pagepool-api-and-dma-address-storage'

Jesper Dangaard Brouer says:

====================
Fix page_pool API and dma address storage

As pointed out by David Miller in [1] the current page_pool implementation
stores dma_addr_t in page->private. This won't work on 32-bit platforms with
64-bit DMA addresses since the page->private is an unsigned long and the
dma_addr_t a u64.

Since no driver is yet using the DMA mapping capabilities of the API let's
fix this by storing the information in 'struct page' and use that to store
and retrieve DMA addresses from network drivers.

As long as the addresses returned from dma_map_page() are aligned the first
bit, used by the compound pages code should not be set.

Ilias tested the first two patches on Espressobin driver mvneta, for which
we have patches for using the DMA API of page_pool.

[1]: https://lore.kernel.org/netdev/20181207.230655.1261252486319967024.davem@davemloft.net/
====================

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>