diff options
| author | Dave Airlie <airlied@redhat.com> | 2016-07-18 15:38:17 +1000 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2016-07-18 15:38:17 +1000 |
| commit | d315495d21bf44fd5e422807e8324ff82bfaabab (patch) | |
| tree | a03cee37dbb6d1bb16006fc18a59b4777fee7ffe /include | |
| parent | 2d635fded22b71381b01e194a59544f2e8d71ef0 (diff) | |
| parent | 0a677125d0ff726ed3d75ab311cf54674bf512bc (diff) | |
| download | cachepc-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.h | 25 |
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) } |
