80 lines
2.7 KiB
Diff
80 lines
2.7 KiB
Diff
|
From d472fcc8379c062bd56a3876fc6ef22258f14a91 Mon Sep 17 00:00:00 2001
|
||
|
From: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||
|
Date: Mon, 24 Nov 2014 11:12:42 +0100
|
||
|
Subject: [PATCH] drm/i915: Disallow pin ioctl completely for kms drivers
|
||
|
|
||
|
The problem here is that SNA pins batchbuffers to etch out a bit more
|
||
|
performance. Iirc it started out as a w/a for i830M (which we've
|
||
|
implemented in the kernel since a long time already). The problem is
|
||
|
that the pin ioctl wasn't added in
|
||
|
|
||
|
commit d23db88c3ab233daed18709e3a24d6c95344117f
|
||
|
Author: Chris Wilson <chris@chris-wilson.co.uk>
|
||
|
Date: Fri May 23 08:48:08 2014 +0200
|
||
|
|
||
|
drm/i915: Prevent negative relocation deltas from wrapping
|
||
|
|
||
|
Fix this by simply disallowing pinning from userspace so that the
|
||
|
kernel is in full control of batch placement again. Especially since
|
||
|
distros are moving towards running X as non-root, so most users won't
|
||
|
even be able to see any benefits.
|
||
|
|
||
|
UMS support is dead now, but we need this minimal patch for
|
||
|
backporting. Follow-up patch will remove the pin ioctl code
|
||
|
completely.
|
||
|
|
||
|
Note to backporters: You must have both
|
||
|
|
||
|
commit b45305fce5bb1abec263fcff9d81ebecd6306ede
|
||
|
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||
|
Date: Mon Dec 17 16:21:27 2012 +0100
|
||
|
|
||
|
drm/i915: Implement workaround for broken CS tlb on i830/845
|
||
|
|
||
|
which laned in 3.8 and
|
||
|
|
||
|
commit c4d69da167fa967749aeb70bc0e94a457e5d00c1
|
||
|
Author: Chris Wilson <chris@chris-wilson.co.uk>
|
||
|
Date: Mon Sep 8 14:25:41 2014 +0100
|
||
|
|
||
|
drm/i915: Evict CS TLBs between batches
|
||
|
|
||
|
which is also marked cc: stable. Otherwise this could introduce a
|
||
|
regression by disabling the userspace w/a without the kernel w/a being
|
||
|
fully functional on i830/45.
|
||
|
|
||
|
References: https://bugs.freedesktop.org/show_bug.cgi?id=76554#c116
|
||
|
Cc: stable@vger.kernel.org # requires c4d69da167fa967749a and v3.8
|
||
|
Cc: Chris Wilson <chris@chris-wilson.co.uk>
|
||
|
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
||
|
---
|
||
|
drivers/gpu/drm/i915/i915_gem.c | 5 ++++-
|
||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
|
||
|
index fd17cca..97b86a5 100644
|
||
|
--- a/drivers/gpu/drm/i915/i915_gem.c
|
||
|
+++ b/drivers/gpu/drm/i915/i915_gem.c
|
||
|
@@ -4263,7 +4263,7 @@ i915_gem_pin_ioctl(struct drm_device *dev, void *data,
|
||
|
struct drm_i915_gem_object *obj;
|
||
|
int ret;
|
||
|
|
||
|
- if (INTEL_INFO(dev)->gen >= 6)
|
||
|
+ if (drm_core_check_feature(dev, DRIVER_MODESET))
|
||
|
return -ENODEV;
|
||
|
|
||
|
ret = i915_mutex_lock_interruptible(dev);
|
||
|
@@ -4319,6 +4319,9 @@ i915_gem_unpin_ioctl(struct drm_device *dev, void *data,
|
||
|
struct drm_i915_gem_object *obj;
|
||
|
int ret;
|
||
|
|
||
|
+ if (drm_core_check_feature(dev, DRIVER_MODESET))
|
||
|
+ return -ENODEV;
|
||
|
+
|
||
|
ret = i915_mutex_lock_interruptible(dev);
|
||
|
if (ret)
|
||
|
return ret;
|
||
|
--
|
||
|
2.2.0
|
||
|
|