Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > [ text/plain ] > The get-reset-stats ioctl reports upon the statistics (number of hangs, > be it as a victim or the guilty party) of a particular context. It is > semantically better as being part of i915_gem_context.c user interface, > as opposed to the hardware level access of intel_uncore.c > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Reviewed-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_dma.c | 2 +- > drivers/gpu/drm/i915/i915_drv.h | 4 ++-- > drivers/gpu/drm/i915/i915_gem_context.c | 39 +++++++++++++++++++++++++++++++++ > drivers/gpu/drm/i915/intel_uncore.c | 39 --------------------------------- > 4 files changed, 42 insertions(+), 42 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c > index e42fa1769c10..05b2b1901d60 100644 > --- a/drivers/gpu/drm/i915/i915_dma.c > +++ b/drivers/gpu/drm/i915/i915_dma.c > @@ -1631,7 +1631,7 @@ const struct drm_ioctl_desc i915_ioctls[] = { > DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_CREATE, i915_gem_context_create_ioctl, DRM_RENDER_ALLOW), > DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_DESTROY, i915_gem_context_destroy_ioctl, DRM_RENDER_ALLOW), > DRM_IOCTL_DEF_DRV(I915_REG_READ, i915_reg_read_ioctl, DRM_RENDER_ALLOW), > - DRM_IOCTL_DEF_DRV(I915_GET_RESET_STATS, i915_get_reset_stats_ioctl, DRM_RENDER_ALLOW), > + DRM_IOCTL_DEF_DRV(I915_GET_RESET_STATS, i915_gem_context_reset_stats_ioctl, DRM_RENDER_ALLOW), > DRM_IOCTL_DEF_DRV(I915_GEM_USERPTR, i915_gem_userptr_ioctl, DRM_RENDER_ALLOW), > DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_GETPARAM, i915_gem_context_getparam_ioctl, DRM_RENDER_ALLOW), > DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_SETPARAM, i915_gem_context_setparam_ioctl, DRM_RENDER_ALLOW), > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index 7a0b51301337..d9d07b70f05c 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -3362,6 +3362,8 @@ int i915_gem_context_getparam_ioctl(struct drm_device *dev, void *data, > struct drm_file *file_priv); > int i915_gem_context_setparam_ioctl(struct drm_device *dev, void *data, > struct drm_file *file_priv); > +int i915_gem_context_reset_stats_ioctl(struct drm_device *dev, void *data, > + struct drm_file *file); > > /* i915_gem_evict.c */ > int __must_check i915_gem_evict_something(struct drm_device *dev, > @@ -3578,8 +3580,6 @@ extern void intel_detect_pch(struct drm_device *dev); > extern bool i915_semaphore_is_enabled(struct drm_i915_private *dev_priv); > int i915_reg_read_ioctl(struct drm_device *dev, void *data, > struct drm_file *file); > -int i915_get_reset_stats_ioctl(struct drm_device *dev, void *data, > - struct drm_file *file); > > /* overlay */ > extern struct intel_overlay_error_state * > diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c > index 0fffebcc0ace..f3c76ca6b411 100644 > --- a/drivers/gpu/drm/i915/i915_gem_context.c > +++ b/drivers/gpu/drm/i915/i915_gem_context.c > @@ -1040,3 +1040,42 @@ int i915_gem_context_setparam_ioctl(struct drm_device *dev, void *data, > > return ret; > } > + > +int i915_gem_context_reset_stats_ioctl(struct drm_device *dev, > + void *data, struct drm_file *file) > +{ > + struct drm_i915_private *dev_priv = dev->dev_private; > + struct drm_i915_reset_stats *args = data; > + struct i915_ctx_hang_stats *hs; > + struct intel_context *ctx; > + int ret; > + > + if (args->flags || args->pad) > + return -EINVAL; > + > + if (args->ctx_id == DEFAULT_CONTEXT_HANDLE && !capable(CAP_SYS_ADMIN)) > + return -EPERM; > + > + ret = mutex_lock_interruptible(&dev->struct_mutex); > + if (ret) > + return ret; > + > + ctx = i915_gem_context_get(file->driver_priv, args->ctx_id); > + if (IS_ERR(ctx)) { > + mutex_unlock(&dev->struct_mutex); > + return PTR_ERR(ctx); > + } > + hs = &ctx->hang_stats; > + > + if (capable(CAP_SYS_ADMIN)) > + args->reset_count = i915_reset_count(&dev_priv->gpu_error); > + else > + args->reset_count = 0; > + > + args->batch_active = hs->batch_active; > + args->batch_pending = hs->batch_pending; > + > + mutex_unlock(&dev->struct_mutex); > + > + return 0; > +} > diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c > index 0b1bd07dd04a..385114bca924 100644 > --- a/drivers/gpu/drm/i915/intel_uncore.c > +++ b/drivers/gpu/drm/i915/intel_uncore.c > @@ -1460,45 +1460,6 @@ out: > return ret; > } > > -int i915_get_reset_stats_ioctl(struct drm_device *dev, > - void *data, struct drm_file *file) > -{ > - struct drm_i915_private *dev_priv = dev->dev_private; > - struct drm_i915_reset_stats *args = data; > - struct i915_ctx_hang_stats *hs; > - struct intel_context *ctx; > - int ret; > - > - if (args->flags || args->pad) > - return -EINVAL; > - > - if (args->ctx_id == DEFAULT_CONTEXT_HANDLE && !capable(CAP_SYS_ADMIN)) > - return -EPERM; > - > - ret = mutex_lock_interruptible(&dev->struct_mutex); > - if (ret) > - return ret; > - > - ctx = i915_gem_context_get(file->driver_priv, args->ctx_id); > - if (IS_ERR(ctx)) { > - mutex_unlock(&dev->struct_mutex); > - return PTR_ERR(ctx); > - } > - hs = &ctx->hang_stats; > - > - if (capable(CAP_SYS_ADMIN)) > - args->reset_count = i915_reset_count(&dev_priv->gpu_error); > - else > - args->reset_count = 0; > - > - args->batch_active = hs->batch_active; > - args->batch_pending = hs->batch_pending; > - > - mutex_unlock(&dev->struct_mutex); > - > - return 0; > -} > - > static int i915_reset_complete(struct pci_dev *pdev) > { > u8 gdrst; > -- > 2.8.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx