Revert "Revert "arm64: dma: Drop cache invalidation from arch_dma_prep_coherent()""
authorWill Deacon <will@kernel.org>
Thu, 30 Mar 2023 15:23:03 +0000 (16:23 +0100)
committerWill Deacon <will@kernel.org>
Thu, 30 Mar 2023 15:23:03 +0000 (16:23 +0100)
This reverts commit b7d9aae404841d9999b7476170867ae441e948d2.

With the Qualcomm remoteproc driver now modified to use a carveout
memory region in 57f72170a2b2 ("remoteproc: qcom_q6v5_mss: Use a
carveout to authenticate modem headers"), we can reinstate c44094eee32f
("arm64: dma: Drop cache invalidation from arch_dma_prep_coherent()")
which relaxes the arm64 implementation of arch_dma_prep_coherent() to
perform only a data cache clean operation, rather than a
clean-and-invalidate.

Signed-off-by: Will Deacon <will@kernel.org>
arch/arm64/mm/dma-mapping.c

index 5240f6acad6482ebfa5c7153a328170be61da619..3cb101e8cb29baca75d3fd25287c9dfe932f7677 100644 (file)
@@ -36,22 +36,7 @@ void arch_dma_prep_coherent(struct page *page, size_t size)
 {
        unsigned long start = (unsigned long)page_address(page);
 
-       /*
-        * The architecture only requires a clean to the PoC here in order to
-        * meet the requirements of the DMA API. However, some vendors (i.e.
-        * Qualcomm) abuse the DMA API for transferring buffers from the
-        * non-secure to the secure world, resetting the system if a non-secure
-        * access shows up after the buffer has been transferred:
-        *
-        * https://lore.kernel.org/r/20221114110329.68413-1-manivannan.sadhasivam@linaro.org
-        *
-        * Using clean+invalidate appears to make this issue less likely, but
-        * the drivers themselves still need fixing as the CPU could issue a
-        * speculative read from the buffer via the linear mapping irrespective
-        * of the cache maintenance we use. Once the drivers are fixed, we can
-        * relax this to a clean operation.
-        */
-       dcache_clean_inval_poc(start, start + size);
+       dcache_clean_poc(start, start + size);
 }
 
 #ifdef CONFIG_IOMMU_DMA