Re: [PATCH 3/4] drm/i915: Clear the error PTE just once on finish

Tvrtko Ursulin
2018-10-02T12:27:06Z

On 01/10/2018 20:44, Chris Wilson wrote:
> We do not need to continually clear our dedicated PTE for error capture
> as it will be updated and invalidated to the next object. Only at the
> end do we wish to be sure that the PTE doesn't point back to any buffer.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_gpu_error.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
> index ed8c16cbfaa4..fed9574be5b6 100644
> --- a/drivers/gpu/drm/i915/i915_gpu_error.c
> +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
> @@ -995,7 +995,6 @@ i915_error_object_create(struct drm_i915_private *i915,
> }
>
> compress_fini(&compress, dst);
> - ggtt->vm.clear_range(&ggtt->vm, slot, PAGE_SIZE);
> return dst;
> }
>
> @@ -1781,6 +1780,14 @@ static unsigned long capture_find_epoch(const struct i915_gpu_state *error)
> return epoch;
> }
>
> +static void capture_finish(struct i915_gpu_state *error)
> +{
> + struct i915_ggtt *ggtt = &error->i915->ggtt;
> + const u64 slot = ggtt->error_capture.start;
> +
> + ggtt->vm.clear_range(&ggtt->vm, slot, PAGE_SIZE);
> +}
> +
> static int capture(void *data)
> {
> struct i915_gpu_state *error = data;
> @@ -1805,6 +1812,7 @@ static int capture(void *data)
>
> error->epoch = capture_find_epoch(error);
>
> + capture_finish(error);
> return 0;
> }
>
>

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

Tvrtko