aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2014-11-24 05:21:52 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-12-03 03:35:11 -0500
commit4feb765943c42dbc706dac348e8a893325b1153f (patch)
treed38dd1f56d36707e0174b8f4f990e387d58ce017
parentd65621c496a2afe6c6724cbd7150e2ec60b42f13 (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.c4
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c11
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h8
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c106
-rw-r--r--drivers/gpu/drm/i915/i915_gem_gtt.h9
-rw-r--r--drivers/gpu/drm/i915/i915_gpu_error.c2
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
97static const char *get_pin_flag(struct drm_i915_gem_object *obj) 97static 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
1007static int
1008i915_gem_reject_pin_ioctl(struct drm_device *dev, void *data,
1009 struct drm_file *file)
1010{
1011 return -ENODEV;
1012}
1013
1007const struct drm_ioctl_desc i915_ioctls[] = { 1014const 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);
2429int i915_gem_execbuffer2(struct drm_device *dev, void *data, 2425int i915_gem_execbuffer2(struct drm_device *dev, void *data,
2430 struct drm_file *file_priv); 2426 struct drm_file *file_priv);
2431int i915_gem_pin_ioctl(struct drm_device *dev, void *data,
2432 struct drm_file *file_priv);
2433int i915_gem_unpin_ioctl(struct drm_device *dev, void *data,
2434 struct drm_file *file_priv);
2435int i915_gem_busy_ioctl(struct drm_device *dev, void *data, 2427int i915_gem_busy_ioctl(struct drm_device *dev, void *data,
2436 struct drm_file *file_priv); 2428 struct drm_file *file_priv);
2437int i915_gem_get_caching_ioctl(struct drm_device *dev, void *data, 2429int 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
4260int 4256int
4261i915_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);
4309out:
4310 drm_gem_object_unreference(&obj->base);
4311unlock:
4312 mutex_unlock(&dev->struct_mutex);
4313 return ret;
4314}
4315
4316int
4317i915_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
4349out:
4350 drm_gem_object_unreference(&obj->base);
4351unlock:
4352 mutex_unlock(&dev->struct_mutex);
4353 return ret;
4354}
4355
4356int
4357i915_gem_busy_ioctl(struct drm_device *dev, void *data, 4257i915_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;