diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-11-24 05:21:52 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-12-03 03:35:11 -0500 |
commit | 4feb765943c42dbc706dac348e8a893325b1153f (patch) | |
tree | d38dd1f56d36707e0174b8f4f990e387d58ce017 | |
parent | d65621c496a2afe6c6724cbd7150e2ec60b42f13 (diff) |
drm/i915: Remove user pinning code
Now unused.
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
-rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 11 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 106 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_gtt.h | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gpu_error.c | 2 |
6 files changed, 17 insertions, 123 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index eed740252945..a47fc25e6bb4 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
@@ -96,9 +96,7 @@ static int i915_capabilities(struct seq_file *m, void *data) | |||
96 | 96 | ||
97 | static const char *get_pin_flag(struct drm_i915_gem_object *obj) | 97 | static const char *get_pin_flag(struct drm_i915_gem_object *obj) |
98 | { | 98 | { |
99 | if (obj->user_pin_count > 0) | 99 | if (i915_gem_obj_is_pinned(obj)) |
100 | return "P"; | ||
101 | else if (i915_gem_obj_is_pinned(obj)) | ||
102 | return "p"; | 100 | return "p"; |
103 | else | 101 | else |
104 | return " "; | 102 | return " "; |
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c index ecee3bcc8772..887d88f4c688 100644 --- a/drivers/gpu/drm/i915/i915_dma.c +++ b/drivers/gpu/drm/i915/i915_dma.c | |||
@@ -1004,6 +1004,13 @@ void i915_driver_postclose(struct drm_device *dev, struct drm_file *file) | |||
1004 | kfree(file_priv); | 1004 | kfree(file_priv); |
1005 | } | 1005 | } |
1006 | 1006 | ||
1007 | static int | ||
1008 | i915_gem_reject_pin_ioctl(struct drm_device *dev, void *data, | ||
1009 | struct drm_file *file) | ||
1010 | { | ||
1011 | return -ENODEV; | ||
1012 | } | ||
1013 | |||
1007 | const struct drm_ioctl_desc i915_ioctls[] = { | 1014 | const struct drm_ioctl_desc i915_ioctls[] = { |
1008 | DRM_IOCTL_DEF_DRV(I915_INIT, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), | 1015 | DRM_IOCTL_DEF_DRV(I915_INIT, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), |
1009 | DRM_IOCTL_DEF_DRV(I915_FLUSH, drm_noop, DRM_AUTH), | 1016 | DRM_IOCTL_DEF_DRV(I915_FLUSH, drm_noop, DRM_AUTH), |
@@ -1025,8 +1032,8 @@ const struct drm_ioctl_desc i915_ioctls[] = { | |||
1025 | DRM_IOCTL_DEF_DRV(I915_GEM_INIT, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), | 1032 | DRM_IOCTL_DEF_DRV(I915_GEM_INIT, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), |
1026 | DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH|DRM_UNLOCKED), | 1033 | DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH|DRM_UNLOCKED), |
1027 | DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER2, i915_gem_execbuffer2, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), | 1034 | DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER2, i915_gem_execbuffer2, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), |
1028 | DRM_IOCTL_DEF_DRV(I915_GEM_PIN, i915_gem_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), | 1035 | DRM_IOCTL_DEF_DRV(I915_GEM_PIN, i915_gem_reject_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), |
1029 | DRM_IOCTL_DEF_DRV(I915_GEM_UNPIN, i915_gem_unpin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), | 1036 | DRM_IOCTL_DEF_DRV(I915_GEM_UNPIN, i915_gem_reject_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), |
1030 | DRM_IOCTL_DEF_DRV(I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), | 1037 | DRM_IOCTL_DEF_DRV(I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED|DRM_RENDER_ALLOW), |
1031 | DRM_IOCTL_DEF_DRV(I915_GEM_SET_CACHING, i915_gem_set_caching_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), | 1038 | DRM_IOCTL_DEF_DRV(I915_GEM_SET_CACHING, i915_gem_set_caching_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), |
1032 | DRM_IOCTL_DEF_DRV(I915_GEM_GET_CACHING, i915_gem_get_caching_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), | 1039 | DRM_IOCTL_DEF_DRV(I915_GEM_GET_CACHING, i915_gem_get_caching_ioctl, DRM_UNLOCKED|DRM_RENDER_ALLOW), |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index f6f92f16c2cf..7a81ae2f00f9 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -1958,10 +1958,6 @@ struct drm_i915_gem_object { | |||
1958 | /** Record of address bit 17 of each page at last unbind. */ | 1958 | /** Record of address bit 17 of each page at last unbind. */ |
1959 | unsigned long *bit_17; | 1959 | unsigned long *bit_17; |
1960 | 1960 | ||
1961 | /** User space pin count and filp owning the pin */ | ||
1962 | unsigned long user_pin_count; | ||
1963 | struct drm_file *pin_filp; | ||
1964 | |||
1965 | union { | 1961 | union { |
1966 | /** for phy allocated objects */ | 1962 | /** for phy allocated objects */ |
1967 | struct drm_dma_handle *phys_handle; | 1963 | struct drm_dma_handle *phys_handle; |
@@ -2428,10 +2424,6 @@ int i915_gem_execbuffer(struct drm_device *dev, void *data, | |||
2428 | struct drm_file *file_priv); | 2424 | struct drm_file *file_priv); |
2429 | int i915_gem_execbuffer2(struct drm_device *dev, void *data, | 2425 | int i915_gem_execbuffer2(struct drm_device *dev, void *data, |
2430 | struct drm_file *file_priv); | 2426 | struct drm_file *file_priv); |
2431 | int i915_gem_pin_ioctl(struct drm_device *dev, void *data, | ||
2432 | struct drm_file *file_priv); | ||
2433 | int i915_gem_unpin_ioctl(struct drm_device *dev, void *data, | ||
2434 | struct drm_file *file_priv); | ||
2435 | int i915_gem_busy_ioctl(struct drm_device *dev, void *data, | 2427 | int i915_gem_busy_ioctl(struct drm_device *dev, void *data, |
2436 | struct drm_file *file_priv); | 2428 | struct drm_file *file_priv); |
2437 | int i915_gem_get_caching_ioctl(struct drm_device *dev, void *data, | 2429 | int i915_gem_get_caching_ioctl(struct drm_device *dev, void *data, |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index d2ba315f4c92..c630d4986376 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -3903,18 +3903,14 @@ static bool is_pin_display(struct drm_i915_gem_object *obj) | |||
3903 | if (!vma) | 3903 | if (!vma) |
3904 | return false; | 3904 | return false; |
3905 | 3905 | ||
3906 | /* There are 3 sources that pin objects: | 3906 | /* There are 2 sources that pin objects: |
3907 | * 1. The display engine (scanouts, sprites, cursors); | 3907 | * 1. The display engine (scanouts, sprites, cursors); |
3908 | * 2. Reservations for execbuffer; | 3908 | * 2. Reservations for execbuffer; |
3909 | * 3. The user. | ||
3910 | * | 3909 | * |
3911 | * We can ignore reservations as we hold the struct_mutex and | 3910 | * We can ignore reservations as we hold the struct_mutex and |
3912 | * are only called outside of the reservation path. The user | 3911 | * are only called outside of the reservation path. |
3913 | * can only increment pin_count once, and so if after | ||
3914 | * subtracting the potential reference by the user, any pin_count | ||
3915 | * remains, it must be due to another use by the display engine. | ||
3916 | */ | 3912 | */ |
3917 | return vma->pin_count - !!obj->user_pin_count; | 3913 | return vma->pin_count; |
3918 | } | 3914 | } |
3919 | 3915 | ||
3920 | /* | 3916 | /* |
@@ -4258,102 +4254,6 @@ i915_gem_object_unpin_fence(struct drm_i915_gem_object *obj) | |||
4258 | } | 4254 | } |
4259 | 4255 | ||
4260 | int | 4256 | int |
4261 | i915_gem_pin_ioctl(struct drm_device *dev, void *data, | ||
4262 | struct drm_file *file) | ||
4263 | { | ||
4264 | struct drm_i915_gem_pin *args = data; | ||
4265 | struct drm_i915_gem_object *obj; | ||
4266 | int ret; | ||
4267 | |||
4268 | if (drm_core_check_feature(dev, DRIVER_MODESET)) | ||
4269 | return -ENODEV; | ||
4270 | |||
4271 | ret = i915_mutex_lock_interruptible(dev); | ||
4272 | if (ret) | ||
4273 | return ret; | ||
4274 | |||
4275 | obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); | ||
4276 | if (&obj->base == NULL) { | ||
4277 | ret = -ENOENT; | ||
4278 | goto unlock; | ||
4279 | } | ||
4280 | |||
4281 | if (obj->madv != I915_MADV_WILLNEED) { | ||
4282 | DRM_DEBUG("Attempting to pin a purgeable buffer\n"); | ||
4283 | ret = -EFAULT; | ||
4284 | goto out; | ||
4285 | } | ||
4286 | |||
4287 | if (obj->pin_filp != NULL && obj->pin_filp != file) { | ||
4288 | DRM_DEBUG("Already pinned in i915_gem_pin_ioctl(): %d\n", | ||
4289 | args->handle); | ||
4290 | ret = -EINVAL; | ||
4291 | goto out; | ||
4292 | } | ||
4293 | |||
4294 | if (obj->user_pin_count == ULONG_MAX) { | ||
4295 | ret = -EBUSY; | ||
4296 | goto out; | ||
4297 | } | ||
4298 | |||
4299 | if (obj->user_pin_count == 0) { | ||
4300 | ret = i915_gem_obj_ggtt_pin(obj, args->alignment, PIN_MAPPABLE); | ||
4301 | if (ret) | ||
4302 | goto out; | ||
4303 | } | ||
4304 | |||
4305 | obj->user_pin_count++; | ||
4306 | obj->pin_filp = file; | ||
4307 | |||
4308 | args->offset = i915_gem_obj_ggtt_offset(obj); | ||
4309 | out: | ||
4310 | drm_gem_object_unreference(&obj->base); | ||
4311 | unlock: | ||
4312 | mutex_unlock(&dev->struct_mutex); | ||
4313 | return ret; | ||
4314 | } | ||
4315 | |||
4316 | int | ||
4317 | i915_gem_unpin_ioctl(struct drm_device *dev, void *data, | ||
4318 | struct drm_file *file) | ||
4319 | { | ||
4320 | struct drm_i915_gem_pin *args = data; | ||
4321 | struct drm_i915_gem_object *obj; | ||
4322 | int ret; | ||
4323 | |||
4324 | if (drm_core_check_feature(dev, DRIVER_MODESET)) | ||
4325 | return -ENODEV; | ||
4326 | |||
4327 | ret = i915_mutex_lock_interruptible(dev); | ||
4328 | if (ret) | ||
4329 | return ret; | ||
4330 | |||
4331 | obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); | ||
4332 | if (&obj->base == NULL) { | ||
4333 | ret = -ENOENT; | ||
4334 | goto unlock; | ||
4335 | } | ||
4336 | |||
4337 | if (obj->pin_filp != file) { | ||
4338 | DRM_DEBUG("Not pinned by caller in i915_gem_pin_ioctl(): %d\n", | ||
4339 | args->handle); | ||
4340 | ret = -EINVAL; | ||
4341 | goto out; | ||
4342 | } | ||
4343 | obj->user_pin_count--; | ||
4344 | if (obj->user_pin_count == 0) { | ||
4345 | obj->pin_filp = NULL; | ||
4346 | i915_gem_object_ggtt_unpin(obj); | ||
4347 | } | ||
4348 | |||
4349 | out: | ||
4350 | drm_gem_object_unreference(&obj->base); | ||
4351 | unlock: | ||
4352 | mutex_unlock(&dev->struct_mutex); | ||
4353 | return ret; | ||
4354 | } | ||
4355 | |||
4356 | int | ||
4357 | i915_gem_busy_ioctl(struct drm_device *dev, void *data, | 4257 | i915_gem_busy_ioctl(struct drm_device *dev, void *data, |
4358 | struct drm_file *file) | 4258 | struct drm_file *file) |
4359 | { | 4259 | { |
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h b/drivers/gpu/drm/i915/i915_gem_gtt.h index beaf4bcfdac8..92db6654f93b 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.h +++ b/drivers/gpu/drm/i915/i915_gem_gtt.h | |||
@@ -146,11 +146,10 @@ struct i915_vma { | |||
146 | 146 | ||
147 | /** | 147 | /** |
148 | * How many users have pinned this object in GTT space. The following | 148 | * How many users have pinned this object in GTT space. The following |
149 | * users can each hold at most one reference: pwrite/pread, pin_ioctl | 149 | * users can each hold at most one reference: pwrite/pread, execbuffer |
150 | * (via user_pin_count), execbuffer (objects are not allowed multiple | 150 | * (objects are not allowed multiple times for the same batchbuffer), |
151 | * times for the same batchbuffer), and the framebuffer code. When | 151 | * and the framebuffer code. When switching/pageflipping, the |
152 | * switching/pageflipping, the framebuffer code has at most two buffers | 152 | * framebuffer code has at most two buffers pinned per crtc. |
153 | * pinned per crtc. | ||
154 | * | 153 | * |
155 | * In the worst case this is 1 + 1 + 1 + 2*2 = 7. That would fit into 3 | 154 | * In the worst case this is 1 + 1 + 1 + 2*2 = 7. That would fit into 3 |
156 | * bits with absolutely no headroom. So use 4 bits. */ | 155 | * bits with absolutely no headroom. So use 4 bits. */ |
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c index cdaee6ce05f8..eea98d567431 100644 --- a/drivers/gpu/drm/i915/i915_gpu_error.c +++ b/drivers/gpu/drm/i915/i915_gpu_error.c | |||
@@ -679,8 +679,6 @@ static void capture_bo(struct drm_i915_error_buffer *err, | |||
679 | err->pinned = 0; | 679 | err->pinned = 0; |
680 | if (i915_gem_obj_is_pinned(obj)) | 680 | if (i915_gem_obj_is_pinned(obj)) |
681 | err->pinned = 1; | 681 | err->pinned = 1; |
682 | if (obj->user_pin_count > 0) | ||
683 | err->pinned = -1; | ||
684 | err->tiling = obj->tiling_mode; | 682 | err->tiling = obj->tiling_mode; |
685 | err->dirty = obj->dirty; | 683 | err->dirty = obj->dirty; |
686 | err->purgeable = obj->madv != I915_MADV_WILLNEED; | 684 | err->purgeable = obj->madv != I915_MADV_WILLNEED; |