[PATCH v2 0/8] dma-mapping: Use DMA_ATTR_CC_SHARED through direct, pool and swiotlb paths

Aneesh Kumar K.V (Arm)
2026-04-20T06:14:34Z

This series propagates DMA_ATTR_CC_SHARED through the dma-direct,
dma-pool, and swiotlb paths so that encrypted and decrypted DMA buffers
are handled consistently.

Today, the direct DMA path mostly relies on force_dma_unencrypted() for
shared/decrypted buffer handling. This series consolidates the
force_dma_unencrypted() checks in the top-level functions and ensures
that the remaining DMA interfaces use DMA attributes to make the correct
decisions.

The series:
- moves swiotlb-backed allocations out of __dma_direct_alloc_pages(),
- propagates DMA_ATTR_CC_SHARED through the dma-direct alloc/free
paths,
- teaches the atomic DMA pools to track encrypted versus decrypted
state,
- tracks swiotlb pool encryption state and enforces strict pool
selection,
- centralizes encrypted/decrypted pgprot handling in dma_pgprot() using
DMA attributes,
- makes dma_direct_map_phys() choose the DMA address encoding from
attrs, and
- uses the selected swiotlb pool state to derive the returned DMA
address.

Changes from v1:
* rebased to latest kernel (change from DMA_ATTR_CC_DECRYPTED -> DMA_ATTR_CC_SHARED)
* Update alloc path such that DMA_ATTR_CC_SHARED s not a caller-visible attribute.

Aneesh Kumar K.V (Arm) (8):
dma-direct: swiotlb: handle swiotlb alloc/free outside
__dma_direct_alloc_pages
dma-direct: use DMA_ATTR_CC_SHARED in alloc/free paths
dma-pool: track decrypted atomic pools and select them via attrs
dma: swiotlb: track pool encryption state and honor DMA_ATTR_CC_SHARED
dma-mapping: make dma_pgprot() honor DMA_ATTR_CC_SHARED
dma-direct: make dma_direct_map_phys() honor DMA_ATTR_CC_SHARED
dma-direct: set decrypted flag for remapped DMA allocations
dma-direct: select DMA address encoding from DMA_ATTR_CC_SHARED

drivers/iommu/dma-iommu.c | 2 +-
include/linux/dma-direct.h | 10 ++
include/linux/dma-map-ops.h | 2 +-
include/linux/swiotlb.h | 7 +-
kernel/dma/direct.c | 185 ++++++++++++++++++++++++++++--------
kernel/dma/direct.h | 25 ++---
kernel/dma/mapping.c | 16 +++-
kernel/dma/pool.c | 154 +++++++++++++++++++-----------
kernel/dma/swiotlb.c | 89 +++++++++++++----
9 files changed, 355 insertions(+), 135 deletions(-)

base-commit: c1f49dea2b8f335813d3b348fd39117fb8efb428
--
2.43.0