On Wed, Jul 14, 2021 at 3:18 AM Jesper Dangaard Brouer jbrouer@redhat.com wrote:
On 14/07/2021 11.34, Yunsheng Lin wrote:
As suggested by Alexander, "A DMA mapping should be page aligned anyway so the lower 12 bits would be reserved 0", so it might make more sense to repurpose the lower 12 bits of the dma address to store the frag count for frag page support in page pool for 32 bit systems with 64 bit dma, which should be rare those days.
Do we have any real driver users with 32-bit arch and 64-bit DMA, that want to use this new frag-count system you are adding to page_pool?
This "lower 12-bit use" complicates the code we need to maintain forever. My guess is that it is never used, but we need to update and maintain it, and it will never be tested.
Why don't you simply reject using page_pool flag PP_FLAG_PAGE_FRAG during setup of the page_pool for this case?
if ((pool->p.flags & PP_FLAG_PAGE_FRAG) && (sizeof(dma_addr_t) > sizeof(unsigned long))) goto reject-setup;
That sounds good to me if we want to go that route. It would simplify this quite a bit since essentially we could just drop these if blocks.
Thanks.
- Alex