diff options
| author | Rob Clark <robdclark@gmail.com> | 2016-05-17 15:44:49 -0400 |
|---|---|---|
| committer | Rob Clark <robdclark@gmail.com> | 2016-07-16 10:09:05 -0400 |
| commit | 4cd33c48ea25ba17e9d0383fe914c3e58b48f7dd (patch) | |
| tree | ae23f5e63db11ceaa819bf06546d603a8b236a1d /include/uapi | |
| parent | b5b4c264df4d270819676b290cef9a11d04c35f0 (diff) | |
drm/msm: add madvise ioctl
Doesn't do anything too interesting until we wire up shrinker. Pretty
much lifted from i915.
Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'include/uapi')
| -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 { | |||
| 201 | struct drm_msm_timespec timeout; /* in */ | 201 | struct drm_msm_timespec timeout; /* in */ |
| 202 | }; | 202 | }; |
| 203 | 203 | ||
| 204 | /* madvise provides a way to tell the kernel in case a buffers contents | ||
| 205 | * can be discarded under memory pressure, which is useful for userspace | ||
| 206 | * bo cache where we want to optimistically hold on to buffer allocate | ||
| 207 | * and potential mmap, but allow the pages to be discarded under memory | ||
| 208 | * pressure. | ||
| 209 | * | ||
| 210 | * Typical usage would involve madvise(DONTNEED) when buffer enters BO | ||
| 211 | * cache, and madvise(WILLNEED) if trying to recycle buffer from BO cache. | ||
| 212 | * In the WILLNEED case, 'retained' indicates to userspace whether the | ||
| 213 | * backing pages still exist. | ||
| 214 | */ | ||
| 215 | #define MSM_MADV_WILLNEED 0 /* backing pages are needed, status returned in 'retained' */ | ||
| 216 | #define MSM_MADV_DONTNEED 1 /* backing pages not needed */ | ||
| 217 | #define __MSM_MADV_PURGED 2 /* internal state */ | ||
| 218 | |||
| 219 | struct drm_msm_gem_madvise { | ||
| 220 | __u32 handle; /* in, GEM handle */ | ||
| 221 | __u32 madv; /* in, MSM_MADV_x */ | ||
| 222 | __u32 retained; /* out, whether backing store still exists */ | ||
| 223 | }; | ||
| 224 | |||
| 204 | #define DRM_MSM_GET_PARAM 0x00 | 225 | #define DRM_MSM_GET_PARAM 0x00 |
| 205 | /* placeholder: | 226 | /* placeholder: |
| 206 | #define DRM_MSM_SET_PARAM 0x01 | 227 | #define DRM_MSM_SET_PARAM 0x01 |
| @@ -211,7 +232,8 @@ struct drm_msm_wait_fence { | |||
| 211 | #define DRM_MSM_GEM_CPU_FINI 0x05 | 232 | #define DRM_MSM_GEM_CPU_FINI 0x05 |
| 212 | #define DRM_MSM_GEM_SUBMIT 0x06 | 233 | #define DRM_MSM_GEM_SUBMIT 0x06 |
| 213 | #define DRM_MSM_WAIT_FENCE 0x07 | 234 | #define DRM_MSM_WAIT_FENCE 0x07 |
| 214 | #define DRM_MSM_NUM_IOCTLS 0x08 | 235 | #define DRM_MSM_GEM_MADVISE 0x08 |
| 236 | #define DRM_MSM_NUM_IOCTLS 0x09 | ||
| 215 | 237 | ||
| 216 | #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param) | 238 | #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param) |
| 217 | #define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new) | 239 | #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 { | |||
| 220 | #define DRM_IOCTL_MSM_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_FINI, struct drm_msm_gem_cpu_fini) | 242 | #define DRM_IOCTL_MSM_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_FINI, struct drm_msm_gem_cpu_fini) |
| 221 | #define DRM_IOCTL_MSM_GEM_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_SUBMIT, struct drm_msm_gem_submit) | 243 | #define DRM_IOCTL_MSM_GEM_SUBMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_SUBMIT, struct drm_msm_gem_submit) |
| 222 | #define DRM_IOCTL_MSM_WAIT_FENCE DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_WAIT_FENCE, struct drm_msm_wait_fence) | 244 | #define DRM_IOCTL_MSM_WAIT_FENCE DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_WAIT_FENCE, struct drm_msm_wait_fence) |
| 245 | #define DRM_IOCTL_MSM_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_MADVISE, struct drm_msm_gem_madvise) | ||
| 223 | 246 | ||
| 224 | #if defined(__cplusplus) | 247 | #if defined(__cplusplus) |
| 225 | } | 248 | } |
