RE: [PATCH] iommu/dma: Add support for mapping memory as device memory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Can you explain why it is necessary? Can you also include a client driver patches that uses this new attribute? 
Including the patches that uses this attribute would make it easy to upstream.

-KR

-----Original Message-----
From: Ashish Mhetre <amhetre@xxxxxxxxxx> 
Sent: Tuesday, August 4, 2020 12:53 AM
To: Krishna Reddy <vdumpa@xxxxxxxxxx>; Thierry Reding <treding@xxxxxxxxxx>; Jonathan Hunter <jonathanh@xxxxxxxxxx>; Stephen Warren <swarren@xxxxxxxxxx>; Sachin Nikam <Snikam@xxxxxxxxxx>
Cc: SW-Mobile-Linux-Upstreaming <SW-Mobile-Linux-Upstreaming@xxxxxxxxxxxxxxxxxxx>; SW-Mobile-Memory-Core <SW-Mobile-Memory-Core@xxxxxxxxxxxxxxxxxxx>; linux-tegra@xxxxxxxxxxxxxxx; Ashish Mhetre <amhetre@xxxxxxxxxx>
Subject: [PATCH] iommu/dma: Add support for mapping memory as device memory

Add DMA_ATTRS_DEVICE_MAP attribute to support mapping memory as device memory.

Signed-off-by: Ashish Mhetre <amhetre@xxxxxxxxxx>
---
 drivers/iommu/dma-iommu.c   | 3 +++
 include/linux/dma-mapping.h | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index 65ac889..0e411ef 100644
--- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c
@@ -388,6 +388,9 @@ static int dma_info_to_prot(enum dma_data_direction dir, bool coherent,
 	if (attrs & DMA_ATTR_PRIVILEGED)
 		prot |= IOMMU_PRIV;
 
+	if (attrs & DMA_ATTR_DEVICE_MAP)
+		prot |= IOMMU_MMIO;
+
 	switch (dir) {
 	case DMA_BIDIRECTIONAL:
 		return prot | IOMMU_READ | IOMMU_WRITE; diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 330ad58..b0cb1b3 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -68,6 +68,12 @@
 #define DMA_ATTR_PRIVILEGED		(1UL << 9)
 
 /*
+ * DMA_ATTR_DEVICE_MAP: This specifies DMA-mapping subsystem to map 
+memory
+ * as device memory.
+ */
+#define DMA_ATTR_DEVICE_MAP		(1UL << 10)
+
+/*
  * A dma_addr_t can hold any valid DMA or bus address for the platform.
  * It can be given to a device to use as a DMA source or target.  A CPU cannot
  * reference a dma_addr_t directly because there may be translation between
--
2.7.4





[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux