page_pool: disable sync for cpu for dmabuf memory provider
authorMina Almasry <almasrymina@google.com>
Wed, 11 Dec 2024 21:20:31 +0000 (21:20 +0000)
committerJakub Kicinski <kuba@kernel.org>
Fri, 13 Dec 2024 02:49:08 +0000 (18:49 -0800)
commit7dba339faae991a23c54f7b93a58798c58f8c16f
treee6cdfdf0c2deb471a5e640b5c652005b456aab79
parentb400f4b87430c105d92550cee5a72aea01fdf3d6
page_pool: disable sync for cpu for dmabuf memory provider

dmabuf dma-addresses should not be dma_sync'd for CPU/device. Typically
its the driver responsibility to dma_sync for CPU, but the driver should
not dma_sync for CPU if the netmem is actually coming from a dmabuf
memory provider.

The page_pool already exposes a helper for dma_sync_for_cpu:
page_pool_dma_sync_for_cpu. Upgrade this existing helper to handle
netmem, and have it skip dma_sync if the memory is from a dmabuf memory
provider. Drivers should migrate to using this helper when adding
support for netmem.

Also minimize the impact on the dma syncing performance for pages. Special
case the dma-sync path for pages to not go through the overhead checks
for dma-syncing and conversion to netmem.

Cc: Alexander Lobakin <aleksander.lobakin@intel.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Signed-off-by: Mina Almasry <almasrymina@google.com>
Link: https://patch.msgid.link/20241211212033.1684197-5-almasrymina@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/page_pool/helpers.h
include/net/page_pool/types.h
net/core/devmem.c
net/core/page_pool.c