diff options
author | Yunsheng Lin <[email protected]> | 2023-10-13 14:48:21 +0800 |
---|---|---|
committer | Jakub Kicinski <[email protected]> | 2023-10-16 18:28:59 -0700 |
commit | 90de47f020db086f7929e09f64efd0cf627d6869 (patch) | |
tree | 92d37f1a0463536aad782523ba648474c8036970 /tools/perf/scripts/python/net_dropmonitor.py | |
parent | e411a8e3bb2d12a59d5fb3590863cb6a16f27b7a (diff) |
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/perf/scripts/python/net_dropmonitor.py')
0 files changed, 0 insertions, 0 deletions