[RFC PATCH 0/7] dma-mapping: Use DMA_ATTR_CC_DECRYPTED through direct, pool and swiotlb paths

From: Aneesh Kumar K.V (Arm)

Date: Fri Apr 17 2026 - 05:01:57 EST


This series propagates DMA_ATTR_CC_DECRYPTED 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_DECRYPTED 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.

Aneesh Kumar K.V (Arm) (7):
dma-direct: swiotlb: handle swiotlb alloc/free outside
__dma_direct_alloc_pages
dma-direct: use DMA_ATTR_CC_DECRYPTED 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_DECRYPTED
dma-mapping: make dma_pgprot() honor DMA_ATTR_CC_DECRYPTED
dma-direct: make dma_direct_map_phys() honor DMA_ATTR_CC_DECRYPTED
dma-direct: set decrypted flag for remapped DMA allocations

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 | 129 ++++++++++++++++++++++++------
kernel/dma/direct.h | 25 +++---
kernel/dma/mapping.c | 16 +++-
kernel/dma/pool.c | 154 +++++++++++++++++++++++-------------
kernel/dma/swiotlb.c | 89 ++++++++++++++++-----
9 files changed, 318 insertions(+), 116 deletions(-)

--
2.43.0