[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 2/7] drm/ttm: Add ttm_kmap_obj_to_dma_buf_map() for type conversion
- To: Thomas Zimmermann <tzimmermann@xxxxxxx>, maarten.lankhorst@xxxxxxxxxxxxxxx, mripard@xxxxxxxxxx, airlied@xxxxxxxx, daniel@xxxxxxxx, sam@xxxxxxxxxxxx, alexander.deucher@xxxxxxx, kraxel@xxxxxxxxxx, l.stach@xxxxxxxxxxxxxx, linux+etnaviv@xxxxxxxxxxxxxxx, christian.gmeiner@xxxxxxxxx, inki.dae@xxxxxxxxxxx, jy0922.shim@xxxxxxxxxxx, sw0312.kim@xxxxxxxxxxx, kyungmin.park@xxxxxxxxxxx, kgene@xxxxxxxxxx, krzk@xxxxxxxxxx, yuq825@xxxxxxxxx, bskeggs@xxxxxxxxxx, robh@xxxxxxxxxx, tomeu.vizoso@xxxxxxxxxxxxx, steven.price@xxxxxxx, alyssa.rosenzweig@xxxxxxxxxxxxx, hjc@xxxxxxxxxxxxxx, heiko@xxxxxxxxx, hdegoede@xxxxxxxxxx, sean@xxxxxxxxxx, eric@xxxxxxxxxx, oleksandr_andrushchenko@xxxxxxxx, ray.huang@xxxxxxx, sumit.semwal@xxxxxxxxxx, emil.velikov@xxxxxxxxxxxxx, luben.tuikov@xxxxxxx, apaneers@xxxxxxx, linus.walleij@xxxxxxxxxx, melissa.srw@xxxxxxxxx, chris@xxxxxxxxxxxxxxxxxx, miaoqinglang@xxxxxxxxxx
- From: Christian König <christian.koenig@xxxxxxx>
- Date: Tue, 29 Sep 2020 17:35:33 +0200
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ju9ytlC3PEvMSd+W5egJQ5uOSMVZssTWQs1Oko2De6k=; b=R+1ZyOp7wyj/h4ESpcP/kQtqLipiUru1S7EQKOK47H9S5Ua6UrX9sUSSkNObVUHHlKmCfpcbMLGrnTwPPSv2CBCmEgE0A49r4h15ktetjNY8ETWTuRp92DkGXdkTP86ogDvHKhpdWrL8qsOh6EDVizxEQmgSq7HeXtQvr74rfqDXEOJmDg9GemjaEI/spkYYZF1zQT9SkUPZYScph6vqvMrCE4OEmLGKx+MPXfqrqozzWB/G49KsPRb6bqECJkd1D1UNuXouAVUyg8+KNo7ySaNf1j/eKn7cBJK/7er3PA2lyyv3KwO+RSILBkIGnND0s7N7K7enq34cCTIO4vMyyg==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dCeEQgCpwFbMt9Ut7StnkqEJI88NmsYt6RWuL4M+qVaI4pf7RxVUEg4KFC+i5xFW1/qf3Qu7Tv6W96kbJMsRPE0+soaDdBLWMsRaFOPEmV7su1oZzmJoHJbq0U2yWEF/DS5fVsacZcI6dsUzqLOPtFPjt2TVpe+7jQJkq7Yws3Zp1Z5gytHKrYeOVo2Um1RkK1tI4Vrn/gm4PjBRY6tQwf5gFnqjZbua6B0N10eCiQFgkQRD2rdVU4tVGZOqn1hX4ZVIwChZS1i+VTz8smlqZi93YL2K4SZNbuZlLSn+hyAnR+/8oF63vvx4+aqrSi0dm25vmvR6PwNL8MvNo4mfwA==
- Authentication-results: lists.linaro.org; dkim=none (message not signed) header.d=none;lists.linaro.org; dmarc=none action=none header.from=amd.com;
- Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx, amd-gfx@xxxxxxxxxxxxxxxxxxxxx, virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx, etnaviv@xxxxxxxxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-samsung-soc@xxxxxxxxxxxxxxx, lima@xxxxxxxxxxxxxxxxxxxxx, nouveau@xxxxxxxxxxxxxxxxxxxxx, spice-devel@xxxxxxxxxxxxxxxxxxxxx, linux-rockchip@xxxxxxxxxxxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxxx, linux-media@xxxxxxxxxxxxxxx, linaro-mm-sig@xxxxxxxxxxxxxxxx
- Delivery-date: Tue, 29 Sep 2020 15:35:59 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
Am 29.09.20 um 17:14 schrieb Thomas Zimmermann:
The new helper ttm_kmap_obj_to_dma_buf() extracts address and location
from and instance of TTM's kmap_obj and initializes struct dma_buf_map
with these values. Helpful for TTM-based drivers.
We could completely drop that if we use the same structure inside TTM as
well.
Additional to that which driver is going to use this?
Regards,
Christian.
Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
---
include/drm/ttm/ttm_bo_api.h | 24 ++++++++++++++++++++++++
include/linux/dma-buf-map.h | 20 ++++++++++++++++++++
2 files changed, 44 insertions(+)
diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h
index c96a25d571c8..62d89f05a801 100644
--- a/include/drm/ttm/ttm_bo_api.h
+++ b/include/drm/ttm/ttm_bo_api.h
@@ -34,6 +34,7 @@
#include <drm/drm_gem.h>
#include <drm/drm_hashtab.h>
#include <drm/drm_vma_manager.h>
+#include <linux/dma-buf-map.h>
#include <linux/kref.h>
#include <linux/list.h>
#include <linux/wait.h>
@@ -486,6 +487,29 @@ static inline void *ttm_kmap_obj_virtual(struct
ttm_bo_kmap_obj *map,
return map->virtual;
}
+/**
+ * ttm_kmap_obj_to_dma_buf_map
+ *
+ * @kmap: A struct ttm_bo_kmap_obj returned from ttm_bo_kmap.
+ * @map: Returns the mapping as struct dma_buf_map
+ *
+ * Converts struct ttm_bo_kmap_obj to struct dma_buf_map. If the memory
+ * is not mapped, the returned mapping is initialized to NULL.
+ */
+static inline void ttm_kmap_obj_to_dma_buf_map(struct ttm_bo_kmap_obj *kmap,
+ struct dma_buf_map *map)
+{
+ bool is_iomem;
+ void *vaddr = ttm_kmap_obj_virtual(kmap, &is_iomem);
+
+ if (!vaddr)
+ dma_buf_map_clear(map);
+ else if (is_iomem)
+ dma_buf_map_set_vaddr_iomem(map, (void __force __iomem *)vaddr);
+ else
+ dma_buf_map_set_vaddr(map, vaddr);
+}
+
/**
* ttm_bo_kmap
*
diff --git a/include/linux/dma-buf-map.h b/include/linux/dma-buf-map.h
index fd1aba545fdf..2e8bbecb5091 100644
--- a/include/linux/dma-buf-map.h
+++ b/include/linux/dma-buf-map.h
@@ -45,6 +45,12 @@
*
* dma_buf_map_set_vaddr(&map. 0xdeadbeaf);
*
+ * To set an address in I/O memory, use dma_buf_map_set_vaddr_iomem().
+ *
+ * .. code-block:: c
+ *
+ * dma_buf_map_set_vaddr_iomem(&map. 0xdeadbeaf);
+ *
* Test if a mapping is valid with either dma_buf_map_is_set() or
* dma_buf_map_is_null().
*
@@ -118,6 +124,20 @@ static inline void dma_buf_map_set_vaddr(struct
dma_buf_map *map, void *vaddr)
map->is_iomem = false;
}
+/**
+ * dma_buf_map_set_vaddr_iomem - Sets a dma-buf mapping structure to an
address in I/O memory
+ * @map: The dma-buf mapping structure
+ * @vaddr_iomem: An I/O-memory address
+ *
+ * Sets the address and the I/O-memory flag.
+ */
+static inline void dma_buf_map_set_vaddr_iomem(struct dma_buf_map *map,
+ void __iomem *vaddr_iomem)
+{
+ map->vaddr_iomem = vaddr_iomem;
+ map->is_iomem = true;
+}
+
/**
* dma_buf_map_is_equal - Compares two dma-buf mapping structures for equality
* @lhs: The dma-buf mapping structure
|