From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [Intel-gfx] [PATCH 22/22] drm/i915: Ensure we hold the pin mutex
Date: Mon, 30 Mar 2020 16:35:45 +0200 [thread overview]
Message-ID: <20200330143545.4371-22-maarten.lankhorst@linux.intel.com> (raw)
In-Reply-To: <20200330143545.4371-1-maarten.lankhorst@linux.intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
drivers/gpu/drm/i915/gt/intel_renderstate.c | 2 +-
drivers/gpu/drm/i915/i915_vma.c | 9 ++++++++-
drivers/gpu/drm/i915/i915_vma.h | 1 +
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_renderstate.c b/drivers/gpu/drm/i915/gt/intel_renderstate.c
index c39d73142950..df42ba06711a 100644
--- a/drivers/gpu/drm/i915/gt/intel_renderstate.c
+++ b/drivers/gpu/drm/i915/gt/intel_renderstate.c
@@ -207,7 +207,7 @@ int intel_renderstate_init(struct intel_renderstate *so,
if (err)
goto err_context;
- err = i915_vma_pin(so->vma, 0, 0, PIN_GLOBAL | PIN_HIGH);
+ err = i915_vma_pin_ww(so->vma, &so->ww, 0, 0, PIN_GLOBAL | PIN_HIGH);
if (err)
goto err_context;
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index e3d82be503dc..e22f287ba382 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -892,6 +892,8 @@ int i915_vma_pin_ww(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
#ifdef CONFIG_PROVE_LOCKING
if (debug_locks && lockdep_is_held(&vma->vm->i915->drm.struct_mutex))
WARN_ON(!ww);
+ if (debug_locks && ww && vma->resv)
+ assert_vma_held(vma);
#endif
BUILD_BUG_ON(PIN_GLOBAL != I915_VMA_GLOBAL_BIND);
@@ -1032,8 +1034,13 @@ int i915_ggtt_pin(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
GEM_BUG_ON(!i915_vma_is_ggtt(vma));
+ WARN_ON(!ww && vma->resv && dma_resv_held(vma->resv));
+
do {
- err = i915_vma_pin_ww(vma, ww, 0, align, flags | PIN_GLOBAL);
+ if (ww)
+ err = i915_vma_pin_ww(vma, ww, 0, align, flags | PIN_GLOBAL);
+ else
+ err = i915_vma_pin(vma, 0, align, flags | PIN_GLOBAL);
if (err != -ENOSPC) {
if (!err) {
err = i915_vma_wait_for_bind(vma);
diff --git a/drivers/gpu/drm/i915/i915_vma.h b/drivers/gpu/drm/i915/i915_vma.h
index da577729931f..b730f86e54f4 100644
--- a/drivers/gpu/drm/i915/i915_vma.h
+++ b/drivers/gpu/drm/i915/i915_vma.h
@@ -242,6 +242,7 @@ i915_vma_pin_ww(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
static inline int __must_check
i915_vma_pin(struct i915_vma *vma, u64 size, u64 alignment, u64 flags)
{
+ WARN_ON_ONCE(vma->resv && dma_resv_held(vma->resv));
return i915_vma_pin_ww(vma, NULL, size, alignment, flags);
}
--
2.25.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2020-03-30 14:36 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-30 14:35 [Intel-gfx] [PATCH 01/22] Revert "drm/i915/gem: Drop relocation slowpath" Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 02/22] perf/core: Only copy-to-user after completely unlocking all locks. (CI test) Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 03/22] drm/i915: Add an implementation for i915_gem_ww_ctx locking, v2 Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 04/22] drm/i915: Remove locking from i915_gem_object_prepare_read/write Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 05/22] drm/i915: Parse command buffer earlier in eb_relocate(slow) Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 06/22] drm/i915: Use per object locking in execbuf, v7 Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 07/22] drm/i915: Use ww locking in intel_renderstate Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 08/22] drm/i915: Add ww context handling to context_barrier_task Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 09/22] drm/i915: Nuke arguments to eb_pin_engine Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 10/22] drm/i915: Pin engine before pinning all objects, v3 Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 11/22] drm/i915: Rework intel_context pinning to do everything outside of pin_mutex Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 12/22] drm/i915: Make sure execbuffer always passes ww state to i915_vma_pin Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 13/22] drm/i915: Convert i915_gem_object/client_blt.c to use ww locking as well, v2 Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 14/22] drm/i915: Kill last user of intel_context_create_request outside of selftests Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 15/22] drm/i915: Convert i915_perf to ww locking as well Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 16/22] drm/i915: Dirty hack to fix selftests locking inversion Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 17/22] drm/i915/selftests: Fix locking inversion in lrc selftest Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 18/22] drm/i915: Use ww pinning for intel_context_create_request() Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 19/22] drm/i915: Move i915_vma_lock in the selftests to avoid lock inversion, v2 Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 20/22] drm/i915: Add ww locking to vm_fault_gtt Maarten Lankhorst
2020-03-30 14:35 ` [Intel-gfx] [PATCH 21/22] drm/i915: Add ww locking to pin_to_display_plane Maarten Lankhorst
2020-03-30 14:35 ` Maarten Lankhorst [this message]
2020-03-30 20:37 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for series starting with [01/22] Revert "drm/i915/gem: Drop relocation slowpath" Patchwork
-- strict thread matches above, loose matches on Subject: below --
2020-03-30 14:09 [Intel-gfx] [PATCH 01/22] " Maarten Lankhorst
2020-03-30 14:09 ` [Intel-gfx] [PATCH 22/22] drm/i915: Ensure we hold the pin mutex 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=20200330143545.4371-22-maarten.lankhorst@linux.intel.com \
--to=maarten.lankhorst@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox