From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: Matthew Auld <matthew.william.auld@gmail.com>
Cc: Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
ML dri-devel <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH v3 08/17] drm/i915: Call i915_gem_evict_vm in vm_fault_gtt to prevent new ENOSPC errors
Date: Fri, 17 Dec 2021 16:29:34 +0100 [thread overview]
Message-ID: <35307def-2373-eaa5-1d2c-94cf89ff7dee@linux.intel.com> (raw)
In-Reply-To: <CAM0jSHOL-dxs7v314p=iKDkRLDfR3Q=6bFoejydxTMd7Tbw=vQ@mail.gmail.com>
On 17-12-2021 12:58, Matthew Auld wrote:
> On Thu, 16 Dec 2021 at 14:28, Maarten Lankhorst
> <maarten.lankhorst@linux.intel.com> wrote:
>> Now that we cannot unbind kill the currently locked object directly
> "unbind kill"
>
>> because we're removing short term pinning, we may have to unbind the
>> object from gtt manually, using a i915_gem_evict_vm() call.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Maybe mention that this only in preparation for some future patches,
> once the actual eviction is trylock and evict_for_vm can also handle
> shared dma-resv? At this point in the series we shouldn't expect to
> hit -ENOSPC, right?
>
>> ---
>> drivers/gpu/drm/i915/gem/i915_gem_mman.c | 18 ++++++++++++++++--
>> 1 file changed, 16 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
>> index af81d6c3332a..00cd9642669a 100644
>> --- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
>> +++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
>> @@ -358,8 +358,22 @@ static vm_fault_t vm_fault_gtt(struct vm_fault *vmf)
>> vma = i915_gem_object_ggtt_pin_ww(obj, &ww, &view, 0, 0, flags);
>> }
>>
>> - /* The entire mappable GGTT is pinned? Unexpected! */
>> - GEM_BUG_ON(vma == ERR_PTR(-ENOSPC));
>> + /*
>> + * The entire mappable GGTT is pinned? Unexpected!
>> + * Try to evict the object we locked too, as normally we skip it
>> + * due to lack of short term pinning inside execbuf.
>> + */
>> + if (vma == ERR_PTR(-ENOSPC)) {
>> + ret = mutex_lock_interruptible(&ggtt->vm.mutex);
>> + if (!ret) {
>> + ret = i915_gem_evict_vm(&ggtt->vm);
>> + mutex_unlock(&ggtt->vm.mutex);
>> + }
>> + if (ret)
>> + goto err_reset;
>> + vma = i915_gem_object_ggtt_pin_ww(obj, &ww, &view, 0, 0, flags);
>> + }
>> + GEM_WARN_ON(vma == ERR_PTR(-ENOSPC));
> Looks like this is being triggered in CI, I assume because the trylock
> could easily fail, due to contention? Is this expected for now? Do we
> keep the WARN and track it as a known issue?
I think it makes sense. I can probably fix i915_gem_evict_vm to attempt to take all objects in a blocking way.
I had some primitives that could lock for eviction, and keep a refcount on the object. i915_gem_evict_vm could probably be changed to use it.
>> }
>> if (IS_ERR(vma)) {
>> ret = PTR_ERR(vma);
>> --
>> 2.34.1
>>
next prev parent reply other threads:[~2021-12-17 15:29 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-16 14:27 [PATCH v3 00/17] drm/i915: Remove short term pins from execbuf by requiring lock to unbind Maarten Lankhorst
2021-12-16 14:27 ` [PATCH v3 01/17] drm/i915: Remove unused bits of i915_vma/active api Maarten Lankhorst
2021-12-16 14:27 ` [PATCH v3 02/17] drm/i915: Change shrink ordering to use locking around unbinding Maarten Lankhorst
2021-12-16 14:27 ` [PATCH v3 03/17] drm/i915: Remove pages_mutex and intel_gtt->vma_ops.set/clear_pages members, v3 Maarten Lankhorst
2021-12-17 15:21 ` [Intel-gfx] " Matthew Auld
2021-12-16 14:27 ` [PATCH v3 04/17] drm/i915: Take object lock in i915_ggtt_pin if ww is not set Maarten Lankhorst
2021-12-17 10:44 ` Matthew Auld
2021-12-16 14:27 ` [PATCH v3 05/17] drm/i915: Force ww lock for i915_gem_object_ggtt_pin_ww, v2 Maarten Lankhorst
2021-12-17 10:46 ` [Intel-gfx] " Matthew Auld
2021-12-16 14:27 ` [PATCH v3 06/17] drm/i915: Ensure gem_contexts selftests work with unbind changes, v2 Maarten Lankhorst
2021-12-16 14:27 ` [PATCH v3 07/17] drm/i915: Ensure i915_vma tests do not get -ENOSPC with the locking changes Maarten Lankhorst
2021-12-17 11:25 ` Matthew Auld
2021-12-16 14:27 ` [PATCH v3 08/17] drm/i915: Call i915_gem_evict_vm in vm_fault_gtt to prevent new ENOSPC errors Maarten Lankhorst
2021-12-17 11:58 ` Matthew Auld
2021-12-17 15:29 ` Maarten Lankhorst [this message]
2021-12-16 14:27 ` [PATCH v3 09/17] drm/i915: Trylock the object when shrinking Maarten Lankhorst
2021-12-17 12:53 ` Matthew Auld
2021-12-16 14:27 ` [PATCH v3 10/17] drm/i915: Require object lock when freeing pages during destruction Maarten Lankhorst
2021-12-16 14:27 ` [PATCH v3 11/17] drm/i915: Add ww ctx to i915_gem_object_trylock Maarten Lankhorst
2021-12-17 12:55 ` [Intel-gfx] " Matthew Auld
2021-12-16 14:27 ` [PATCH v3 12/17] drm/i915: Add locking to i915_gem_evict_vm() Maarten Lankhorst
2021-12-17 13:19 ` [Intel-gfx] " Matthew Auld
2021-12-16 14:27 ` [PATCH v3 13/17] drm/i915: Add object locking to i915_gem_evict_for_node and i915_gem_evict_something Maarten Lankhorst
2021-12-17 13:55 ` [Intel-gfx] " Matthew Auld
2021-12-17 15:04 ` Maarten Lankhorst
2021-12-16 14:27 ` [PATCH v3 14/17] drm/i915: Add i915_vma_unbind_unlocked, and take obj lock for i915_vma_unbind, v2 Maarten Lankhorst
2021-12-16 14:27 ` [PATCH v3 15/17] drm/i915: Remove assert_object_held_shared Maarten Lankhorst
2021-12-16 14:27 ` [PATCH v3 16/17] drm/i915: Remove support for unlocked i915_vma unbind Maarten Lankhorst
2021-12-16 14:27 ` [PATCH v3 17/17] drm/i915: Remove short-term pins from execbuf, v5 Maarten Lankhorst
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=35307def-2373-eaa5-1d2c-94cf89ff7dee@linux.intel.com \
--to=maarten.lankhorst@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=matthew.william.auld@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).