Re: [PATCH net-next v11 1/6] page_pool: fragment API support for 32-bit arch with 64-bit DMA
From: Jakub Kicinski <kuba@kernel.org>
Date: 2023-10-17 01:31:43
Also in:
linux-mm, lkml
From: Jakub Kicinski <kuba@kernel.org>
Date: 2023-10-17 01:31:43
Also in:
linux-mm, lkml
On Fri, 13 Oct 2023 14:48:21 +0800 Yunsheng Lin wrote:
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.
Let me apply this one already, I think it should be uncontroversial from review perspective. And the more time it gets in linux-next the better..