[PATCH 41/43] fast-throttle-ioctl
Chris Wilson
chris at chris-wilson.co.uk
Fri Jun 2 18:10:22 UTC 2017
---
drivers/gpu/drm/i915/i915_drv.c | 2 +-
drivers/gpu/drm/i915/i915_drv.h | 5 +++--
drivers/gpu/drm/i915/i915_gem.c | 24 ++++++++++--------------
3 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index dc0cd9edbb46..66f635b3a029 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -2543,7 +2543,7 @@ static const struct drm_ioctl_desc i915_ioctls[] = {
DRM_DRIVER_IOCTL_DEF(I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_RENDER_ALLOW),
DRM_IOCTL_DEF_DRV(I915_GEM_SET_CACHING, i915_gem_set_caching_ioctl, DRM_RENDER_ALLOW),
DRM_DRIVER_IOCTL_DEF(I915_GEM_GET_CACHING, i915_gem_get_caching_ioctl, DRM_RENDER_ALLOW),
- DRM_IOCTL_DEF_DRV(I915_GEM_THROTTLE, i915_gem_throttle_ioctl, DRM_AUTH|DRM_RENDER_ALLOW),
+ DRM_DRIVER_IOCTL_DEF(I915_GEM_THROTTLE, i915_gem_throttle_ioctl, DRM_RENDER_ALLOW),
DRM_IOCTL_DEF_DRV(I915_GEM_ENTERVT, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
DRM_IOCTL_DEF_DRV(I915_GEM_LEAVEVT, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
DRM_IOCTL_DEF_DRV(I915_GEM_CREATE, i915_gem_create_ioctl, DRM_RENDER_ALLOW),
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 7dc1886636e4..3dee207d7522 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3208,8 +3208,9 @@ long i915_gem_get_caching_ioctl(struct file *filp,
unsigned long data);
int i915_gem_set_caching_ioctl(struct drm_device *dev, void *data,
struct drm_file *file);
-int i915_gem_throttle_ioctl(struct drm_device *dev, void *data,
- struct drm_file *file_priv);
+long i915_gem_throttle_ioctl(struct file *filp,
+ unsigned int cmd,
+ unsigned long data);
int i915_gem_madvise_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv);
int i915_gem_set_tiling_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 094660922a2b..7f483a15f3d1 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -4012,21 +4012,23 @@ i915_gem_object_set_to_cpu_domain(struct drm_i915_gem_object *obj, bool write)
* This should get us reasonable parallelism between CPU and GPU but also
* relatively low latency when blocking on a particular request to finish.
*/
-static int
-i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file)
+long
+i915_gem_throttle_ioctl(struct file *filp,
+ unsigned int cmd,
+ unsigned long data)
{
- struct drm_i915_private *dev_priv = to_i915(dev);
- struct drm_i915_file_private *file_priv = file->driver_priv;
+ struct drm_file *drm_file = filp->private_data;
+ struct drm_i915_file_private *file = drm_file->driver_priv;
unsigned long recent_enough = jiffies - DRM_I915_THROTTLE_JIFFIES;
struct drm_i915_gem_request *request, *target = NULL;
long ret;
/* ABI: return -EIO if already wedged */
- if (i915_terminally_wedged(&dev_priv->gpu_error))
+ if (i915_terminally_wedged(&file->dev_priv->gpu_error))
return -EIO;
- spin_lock(&file_priv->mm.lock);
- list_for_each_entry(request, &file_priv->mm.request_list, client_link) {
+ spin_lock(&file->mm.lock);
+ list_for_each_entry(request, &file->mm.request_list, client_link) {
if (time_after_eq(request->emitted_jiffies, recent_enough))
break;
@@ -4039,7 +4041,7 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file)
}
if (target)
i915_gem_request_get(target);
- spin_unlock(&file_priv->mm.lock);
+ spin_unlock(&file->mm.lock);
if (target == NULL)
return 0;
@@ -4267,12 +4269,6 @@ long i915_gem_busy_ioctl(struct file *filp,
return -ENOENT;
}
-int
-i915_gem_throttle_ioctl(struct drm_device *dev, void *data,
- struct drm_file *file_priv)
-{
- return i915_gem_ring_throttle(dev, file_priv);
-}
int
i915_gem_madvise_ioctl(struct drm_device *dev, void *data,
--
2.11.0
More information about the Intel-gfx-trybot
mailing list