All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mika Kuoppala <mika.kuoppala@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Cc: stable@vger.kernel.org, Chris Wilson <chris@chris-wilson.co.uk>
Subject: Re: [Intel-gfx] [PATCH] drm/i915: Watch out for idling during i915_gem_evict_something
Date: Tue, 12 May 2020 13:39:31 +0300	[thread overview]
Message-ID: <87lflx309o.fsf@gaia.fi.intel.com> (raw)
In-Reply-To: <20200509115217.26853-1-chris@chris-wilson.co.uk>

Chris Wilson <chris@chris-wilson.co.uk> writes:

> i915_gem_evict_something() is charged with finding a slot within the GTT
> that we may reuse. Since our goal is not to stall, we first look for a
> slot that only overlaps idle vma. To this end, on the first pass we move
> any active vma to the end of the search list. However, we only stopped
> moving active vma after we see the first active vma twice. If during the
> search, that first active vma completed, we would not notice and keep on
> extending the search list.
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/1746
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: <stable@vger.kernel.org> # v5.5+

Only thing I would change is tune up the subject line.
It fixes a possible busy loop in eviction so I feel 'watch out' is not
strong enough for my liking.

Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/i915_gem_evict.c | 26 ++++++++++++--------------
>  1 file changed, 12 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c b/drivers/gpu/drm/i915/i915_gem_evict.c
> index 0ba7b1e881c0..6501939929d5 100644
> --- a/drivers/gpu/drm/i915/i915_gem_evict.c
> +++ b/drivers/gpu/drm/i915/i915_gem_evict.c
> @@ -128,6 +128,13 @@ i915_gem_evict_something(struct i915_address_space *vm,
>  	active = NULL;
>  	INIT_LIST_HEAD(&eviction_list);
>  	list_for_each_entry_safe(vma, next, &vm->bound_list, vm_link) {
> +		if (vma == active) { /* now seen this vma twice */
> +			if (flags & PIN_NONBLOCK)
> +				break;
> +
> +			active = ERR_PTR(-EAGAIN);
> +		}
> +
>  		/*
>  		 * We keep this list in a rough least-recently scanned order
>  		 * of active elements (inactive elements are cheap to reap).
> @@ -143,21 +150,12 @@ i915_gem_evict_something(struct i915_address_space *vm,
>  		 * To notice when we complete one full cycle, we record the
>  		 * first active element seen, before moving it to the tail.
>  		 */
> -		if (i915_vma_is_active(vma)) {
> -			if (vma == active) {
> -				if (flags & PIN_NONBLOCK)
> -					break;
> -
> -				active = ERR_PTR(-EAGAIN);
> -			}
> -
> -			if (active != ERR_PTR(-EAGAIN)) {
> -				if (!active)
> -					active = vma;
> +		if (active != ERR_PTR(-EAGAIN) && i915_vma_is_active(vma)) {
> +			if (!active)
> +				active = vma;
>  
> -				list_move_tail(&vma->vm_link, &vm->bound_list);
> -				continue;
> -			}
> +			list_move_tail(&vma->vm_link, &vm->bound_list);
> +			continue;
>  		}
>  
>  		if (mark_free(&scan, vma, flags, &eviction_list))
> -- 
> 2.20.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

WARNING: multiple messages have this Message-ID (diff)
From: Mika Kuoppala <mika.kuoppala@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Cc: stable@vger.kernel.org, Chris Wilson <chris@chris-wilson.co.uk>
Subject: Re: [Intel-gfx] [PATCH] drm/i915: Watch out for idling during i915_gem_evict_something
Date: Tue, 12 May 2020 13:39:31 +0300	[thread overview]
Message-ID: <87lflx309o.fsf@gaia.fi.intel.com> (raw)
In-Reply-To: <20200509115217.26853-1-chris@chris-wilson.co.uk>

Chris Wilson <chris@chris-wilson.co.uk> writes:

> i915_gem_evict_something() is charged with finding a slot within the GTT
> that we may reuse. Since our goal is not to stall, we first look for a
> slot that only overlaps idle vma. To this end, on the first pass we move
> any active vma to the end of the search list. However, we only stopped
> moving active vma after we see the first active vma twice. If during the
> search, that first active vma completed, we would not notice and keep on
> extending the search list.
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/1746
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: <stable@vger.kernel.org> # v5.5+

Only thing I would change is tune up the subject line.
It fixes a possible busy loop in eviction so I feel 'watch out' is not
strong enough for my liking.

Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/i915_gem_evict.c | 26 ++++++++++++--------------
>  1 file changed, 12 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c b/drivers/gpu/drm/i915/i915_gem_evict.c
> index 0ba7b1e881c0..6501939929d5 100644
> --- a/drivers/gpu/drm/i915/i915_gem_evict.c
> +++ b/drivers/gpu/drm/i915/i915_gem_evict.c
> @@ -128,6 +128,13 @@ i915_gem_evict_something(struct i915_address_space *vm,
>  	active = NULL;
>  	INIT_LIST_HEAD(&eviction_list);
>  	list_for_each_entry_safe(vma, next, &vm->bound_list, vm_link) {
> +		if (vma == active) { /* now seen this vma twice */
> +			if (flags & PIN_NONBLOCK)
> +				break;
> +
> +			active = ERR_PTR(-EAGAIN);
> +		}
> +
>  		/*
>  		 * We keep this list in a rough least-recently scanned order
>  		 * of active elements (inactive elements are cheap to reap).
> @@ -143,21 +150,12 @@ i915_gem_evict_something(struct i915_address_space *vm,
>  		 * To notice when we complete one full cycle, we record the
>  		 * first active element seen, before moving it to the tail.
>  		 */
> -		if (i915_vma_is_active(vma)) {
> -			if (vma == active) {
> -				if (flags & PIN_NONBLOCK)
> -					break;
> -
> -				active = ERR_PTR(-EAGAIN);
> -			}
> -
> -			if (active != ERR_PTR(-EAGAIN)) {
> -				if (!active)
> -					active = vma;
> +		if (active != ERR_PTR(-EAGAIN) && i915_vma_is_active(vma)) {
> +			if (!active)
> +				active = vma;
>  
> -				list_move_tail(&vma->vm_link, &vm->bound_list);
> -				continue;
> -			}
> +			list_move_tail(&vma->vm_link, &vm->bound_list);
> +			continue;
>  		}
>  
>  		if (mark_free(&scan, vma, flags, &eviction_list))
> -- 
> 2.20.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2020-05-12 10:41 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-09 11:52 [Intel-gfx] [PATCH] drm/i915: Watch out for idling during i915_gem_evict_something Chris Wilson
2020-05-09 11:52 ` Chris Wilson
2020-05-09 12:02 ` [Intel-gfx] " Chris Wilson
2020-05-09 12:02   ` Chris Wilson
2020-05-09 12:44 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2020-05-09 15:00 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2020-05-12 10:39 ` Mika Kuoppala [this message]
2020-05-12 10:39   ` [Intel-gfx] [PATCH] " Mika Kuoppala
2020-05-12 10:51   ` Chris Wilson
2020-05-12 10:51     ` Chris Wilson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lflx309o.fsf@gaia.fi.intel.com \
    --to=mika.kuoppala@linux.intel.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.