aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/uapi/drm
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2019-10-10 14:00:00 +0200
committerTomi Valkeinen <tomi.valkeinen@ti.com>2019-10-11 17:02:44 +0300
commit23b482252836ab3c5e6b3b20ed3038449cbc7679 (patch)
tree682630c2fceac3ebcfae46d54d640c11c2c2a728 /include/uapi/drm
parentdrm/omap: add omap_gem_validate_flags() (diff)
downloadwireguard-linux-23b482252836ab3c5e6b3b20ed3038449cbc7679.tar.xz
wireguard-linux-23b482252836ab3c5e6b3b20ed3038449cbc7679.zip
drm/omap: add OMAP_BO flags to affect buffer allocation
On SoCs with DMM/TILER, we have two ways to allocate buffers: normal dma_alloc or via DMM (which basically functions as an IOMMU). DMM can map 128MB at a time, and we only map the DMM buffers when they are used (i.e. not at alloc time). If DMM is present, omapdrm always uses DMM. There are use cases that require lots of big buffers that are being used at the same time by different IPs. At the moment the userspace has a hard maximum of 128MB. This patch adds three new flags that can be used by the userspace to solve the situation: OMAP_BO_MEM_CONTIG: The driver will use dma_alloc to get the memory. This can be used to avoid DMM if the userspace knows it needs more than 128M of memory at the same time. OMAP_BO_MEM_DMM: The driver will use DMM to get the memory. There's not much use for this flag at the moment, as on platforms with DMM it is used by default, but it's here for completeness. OMAP_BO_MEM_PIN: The driver will pin the memory at alloc time, and keep it pinned. This can be used to 1) get an error at alloc time if DMM space is full, and 2) get rid of the constant pin/unpin operations which may have some effect on performance. If none of the flags are given, the behavior is the same as currently. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by: Jean-Jacques Hiblot <jjhiblot@ti.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191010120000.1421-9-jjhiblot@ti.com
Diffstat (limited to 'include/uapi/drm')
-rw-r--r--include/uapi/drm/omap_drm.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/uapi/drm/omap_drm.h b/include/uapi/drm/omap_drm.h
index 5a142fad473c..842d3180a442 100644
--- a/include/uapi/drm/omap_drm.h
+++ b/include/uapi/drm/omap_drm.h
@@ -47,6 +47,15 @@ struct drm_omap_param {
#define OMAP_BO_UNCACHED 0x00000004
#define OMAP_BO_CACHE_MASK 0x00000006
+/* Force allocation from contiguous DMA memory */
+#define OMAP_BO_MEM_CONTIG 0x00000008
+
+/* Force allocation via DMM */
+#define OMAP_BO_MEM_DMM 0x00000010
+
+/* Pin the buffer when allocating and keep pinned */
+#define OMAP_BO_MEM_PIN 0x00000020
+
/* Use TILER for the buffer. The TILER container unit can be 8, 16 or 32 bits. */
#define OMAP_BO_TILED_8 0x00000100
#define OMAP_BO_TILED_16 0x00000200