Messages in this thread |  | | From | Aneesh Kumar K.V <> | | Subject | Re: [PATCH v3 0/9] dma-mapping: Use DMA_ATTR_CC_SHARED through direct, pool and swiotlb paths | | Date | Mon, 11 May 2026 16:48:37 +0530 |
| |
Catalin Marinas <catalin.marinas@arm.com> writes:
> On Mon, Apr 27, 2026 at 11:25:00AM +0530, Aneesh Kumar K.V (Arm) wrote: >> 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. > > I think this series makes sense, using DMA_ATTR_CC_SHARED throughout the > DMA API, either for alloc or for streaming to decide/check what bouncing > does. Sashiko has a few interesting reports, it probably breaks s390 as > well (it might be similar to the pKVM case). >
I will address Shahiko’s review comments in the next revision.
With respect to s390/powerpc, I can drop SWIOTLB_FORCE from this series. However, I was not sure whether we would get enough testing for that soon. Both architectures are similar to x86/arm in forcing dma unencrypted.
powerpc: static inline bool force_dma_unencrypted(struct device *dev) { return is_secure_guest(); }
s390: /* are we a protected virtualization guest? */ bool force_dma_unencrypted(struct device *dev) { return is_prot_virt_guest(); }
> > I don't think it addresses earlier Mostafa's issues with pKVM, although > I'd rather base additional pKVM related fixes on top of this series. > With pKVM, cc_platform_has(CC_ATTR_MEM_ENCRYPT) returns false, as does > force_dma_unencrypted(). I think we should update protected guests to > return true for these if they need shared buffers (the whole > decrypted/shared terminology is messy but in most places it just means > buffer not private to the protected guest, whether encryption is > available or not). > > That said, does CC_ATTR_GUEST_MEM_ENCRYPT actually make more sense than > CC_ATTR_MEM_ENCRYPT throughout this series? We'd need to change arm64 > realms as well to use this one. >
x86 memory encryption can use swiotlb boucing even on the host right?
+ if (cc_platform_has(CC_ATTR_MEM_ENCRYPT)) { + io_tlb_default_mem.decrypted = true; + set_memory_decrypted((unsigned long)mem->vaddr, bytes >> PAGE_SHIFT); + } else { + io_tlb_default_mem.decrypted = false; + } +
-aneesh
|  |