Could you try this patch to check if can help.
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
index 94aa049..3d39662 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
@@ -996,6 +996,7 @@ static void __iommu_sync_sg_for_cpu(struct device *dev,
struct scatterlist *sgl, int nelems,
enum dma_data_direction dir)
{
+#if 0
struct scatterlist *sg;
int i;
@@ -1005,12 +1006,15 @@ static void __iommu_sync_sg_for_cpu(struct device *dev,
for_each_sg(sgl, sg, nelems, i)
__dma_unmap_area_no_dsb(sg_virt(sg), sg->length, dir);
dsb(sy);
+#endif
+ __flush_dcache_all();
}
static void __iommu_sync_sg_for_device(struct device *dev,
struct scatterlist *sgl, int nelems,
enum dma_data_direction dir)
{
+#if 0
struct scatterlist *sg;
int i;
@@ -1020,6 +1024,8 @@ static void __iommu_sync_sg_for_device(struct device *dev,
for_each_sg(sgl, sg, nelems, i)
__dma_map_area_no_dsb(sg_virt(sg), sg->length, dir);
dsb(sy);
+#endif
+ __flush_dcache_all();
}