summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2016-07-18 15:38:17 +1000
committerDave Airlie <airlied@redhat.com>2016-07-18 15:38:17 +1000
commitd315495d21bf44fd5e422807e8324ff82bfaabab (patch)
treea03cee37dbb6d1bb16006fc18a59b4777fee7ffe /include
parent2d635fded22b71381b01e194a59544f2e8d71ef0 (diff)
parent0a677125d0ff726ed3d75ab311cf54674bf512bc (diff)
downloadcachepc-linux-d315495d21bf44fd5e422807e8324ff82bfaabab.tar.gz
cachepc-linux-d315495d21bf44fd5e422807e8324ff82bfaabab.zip
Merge branch 'msm-next' of git://people.freedesktop.org/~robclark/linux into drm-next
This time, a bunch of cleanups and refactoring work so that we can get dt bindings upstream. In general, we keep compatibility with existing downstream bindings as much as possible, to make backports to device kernels easier, but now we have cleaner upstream bindings so that we can start landing gpu/display support in upstream dts files. Plus shrinker and madvise support, which has been on my todo list for a long time. And support for arbitrary # of cmd bufs in submit ioctl (I've got libdrm+mesa userspace for this on branches) to enable some of the mesa batch/reorder stuff I'm working on. Userspace decides whether this is supported based on advertised driver version. For the interesting userspace bits, see: https://github.com/freedreno/libdrm/commit/1baf03ac6e77049d9c8be1e3d5164283ce82c9db Plus support for ASoC hdmi audio codec, and few other random other cleanups. * 'msm-next' of git://people.freedesktop.org/~robclark/linux: (52 commits) drm/msm: Delete an unnecessary check before drm_gem_object_unreference() drm/msm: Delete unnecessary checks before drm_gem_object_unreference_unlocked() drm/msm/hdmi: Delete an unnecessary check before the function call "kfree" drm/msm: return -EFAULT instead of bytes remaining drm/msm/hdmi: use PTR_ERR_OR_ZERO() to simplify the code drm/msm: add missing of_node_put after calling of_parse_phandle drm/msm: Replace drm_fb_get_bpp_depth() with drm_format_plane_cpp() drm/msm/dsi: Fix return value check in msm_dsi_host_set_display_mode() drm: msm: Add ASoC generic hdmi audio codec support. drm/msm/rd: add module param to dump all bo's drm/msm/rd: split out snapshot_buf helper drm/msm: bump kernel api version drm/msm: deal with arbitrary # of cmd buffers drm/msm: wire up vmap shrinker drm/msm: change gem->vmap() to get/put drm/msm: shrinker support drm/msm: add put_iova() helper drm/msm: add madvise ioctl drm/msm: use mutex_lock_interruptible for submit ioctl dt-bindings: msm/mdp: Provide details on MDP interface ports ...
Diffstat (limited to 'include')
-rw-r--r--include/uapi/drm/msm_drm.h25
1 files changed, 24 insertions, 1 deletions
diff --git a/include/uapi/drm/msm_drm.h b/include/uapi/drm/msm_drm.h
index bf19d2cd9078..49f778de8e06 100644
--- a/include/uapi/drm/msm_drm.h
+++ b/include/uapi/drm/msm_drm.h
@@ -201,6 +201,27 @@ struct drm_msm_wait_fence {
struct drm_msm_timespec timeout; /* in */
};
+/* madvise provides a way to tell the kernel in case a buffers contents
+ * can be discarded under memory pressure, which is useful for userspace
+ * bo cache where we want to optimistically hold on to buffer allocate
+ * and potential mmap, but allow the pages to be discarded under memory
+ * pressure.
+ *
+ * Typical usage would involve madvise(DONTNEED) when buffer enters BO
+ * cache, and madvise(WILLNEED) if trying to recycle buffer from BO cache.
+ * In the WILLNEED case, 'retained' indicates to userspace whether the
+ * backing pages still exist.
+ */
+#define MSM_MADV_WILLNEED 0 /* backing pages are needed, status returned in 'retained' */
+#define MSM_MADV_DONTNEED 1 /* backing pages not needed */
+#define __MSM_MADV_PURGED 2 /* internal state */
+
+struct drm_msm_gem_madvise {
+ __u32 handle; /* in, GEM handle */
+ __u32 madv; /* in, MSM_MADV_x */
+ __u32 retained; /* out, whether backing store still exists */
+};
+
#define DRM_MSM_GET_PARAM 0x00
/* placeholder:
#define DRM_MSM_SET_PARAM 0x01
@@ -211,7 +232,8 @@ struct drm_msm_wait_fence {
#define DRM_MSM_GEM_CPU_FINI 0x05
#define DRM_MSM_GEM_SUBMIT 0x06
#define DRM_MSM_WAIT_FENCE 0x07
-#define DRM_MSM_NUM_IOCTLS 0x08
+#define DRM_MSM_GEM_MADVISE 0x08
+#define DRM_MSM_NUM_IOCTLS 0x09
#define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
#define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
@@ -220,6 +242,7 @@ struct drm_msm_wait_fence {
#define DRM_IOCTL_MSM_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_FINI, struct drm_msm_gem_cpu_fini)
#define DRM_IOCTL_MSM_GEM_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_SUBMIT, struct drm_msm_gem_submit)
#define DRM_IOCTL_MSM_WAIT_FENCE DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_WAIT_FENCE, struct drm_msm_wait_fence)
+#define DRM_IOCTL_MSM_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_MADVISE, struct drm_msm_gem_madvise)
#if defined(__cplusplus)
}