diff options
| author | Yunsheng Lin <[email protected]> | 2023-10-13 06:48:21 +0000 |
|---|---|---|
| committer | Jakub Kicinski <[email protected]> | 2023-10-17 01:28:59 +0000 |
| commit | 90de47f020db086f7929e09f64efd0cf627d6869 (patch) | |
| tree | 92d37f1a0463536aad782523ba648474c8036970 /tools/testing/selftests/bpf/prog_tests | |
| parent | net: stub tcp_gro_complete if CONFIG_INET=n (diff) | |
| download | kernel-90de47f020db086f7929e09f64efd0cf627d6869.tar.gz kernel-90de47f020db086f7929e09f64efd0cf627d6869.zip | |
page_pool: fragment API support for 32-bit arch with 64-bit DMA
Currently page_pool_alloc_frag() is not supported in 32-bit
arch with 64-bit DMA because of the overlap issue between
pp_frag_count and dma_addr_upper in 'struct page' for those
arches, which seems to be quite common, see [1], which means
driver may need to handle it when using fragment API.
It is assumed that the combination of the above arch with an
address space >16TB does not exist, as all those arches have
64b equivalent, it seems logical to use the 64b version for a
system with a large address space. It is also assumed that dma
address is page aligned when we are dma mapping a page aligned
buffer, see [2].
That means we're storing 12 bits of 0 at the lower end for a
dma address, we can reuse those bits for the above arches to
support 32b+12b, which is 16TB of memory.
If we make a wrong assumption, a warning is emitted so that
user can report to us.
1. https://lore.kernel.org/all/[email protected]/
2. https://lore.kernel.org/all/[email protected]/
Tested-by: Alexander Lobakin <[email protected]>
Signed-off-by: Yunsheng Lin <[email protected]>
CC: Lorenzo Bianconi <[email protected]>
CC: Alexander Duyck <[email protected]>
CC: Liang Chen <[email protected]>
CC: Guillaume Tucker <[email protected]>
CC: Matthew Wilcox <[email protected]>
CC: Linux-MM <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
Diffstat (limited to 'tools/testing/selftests/bpf/prog_tests')
0 files changed, 0 insertions, 0 deletions
