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

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

 



From what I can tell, dma_map_resource already does this (see iommu_dma_map_resource). Can you use that?

(also, dropping internal MLs)

Mikko

On 8/4/20 10:52 AM, Ashish Mhetre wrote:
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




[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