[PATCH 5/5] haxup
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Mon Jul 5 09:38:40 UTC 2021
Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
---
drivers/gpu/drm/i915/gt/intel_context.c | 15 +--------------
drivers/gpu/drm/i915/gt/intel_context.h | 7 ++++++-
drivers/gpu/drm/i915/i915_request.c | 1 +
3 files changed, 8 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_context.c b/drivers/gpu/drm/i915/gt/intel_context.c
index b5f7c4a80c3e..7842f97bddb9 100644
--- a/drivers/gpu/drm/i915/gt/intel_context.c
+++ b/drivers/gpu/drm/i915/gt/intel_context.c
@@ -92,13 +92,6 @@ static int intel_context_active_acquire(struct intel_context *ce)
return err;
}
-static void intel_context_active_release(struct intel_context *ce)
-{
- /* Nodes preallocated in intel_context_active() */
- i915_active_acquire_barrier(&ce->active);
- i915_active_release(&ce->active);
-}
-
static int __context_pin_state(struct i915_vma *vma, struct i915_gem_ww_ctx *ww)
{
unsigned int bias = i915_ggtt_pin_bias(vma) | PIN_OFFSET_BIAS;
@@ -285,13 +278,7 @@ void intel_context_unpin(struct intel_context *ce)
{
CE_TRACE(ce, "unpin\n");
- /*
- * Once released, we may asynchronously drop the active reference.
- * As that may be the only reference keeping the context alive,
- * take an extra now so that it is not freed before we finish
- * dereferencing it.
- */
- intel_context_active_release(ce);
+ i915_active_release(&ce->active);
}
static void __intel_context_retire(struct i915_active *active)
diff --git a/drivers/gpu/drm/i915/gt/intel_context.h b/drivers/gpu/drm/i915/gt/intel_context.h
index 9bed8cd387d5..2eb710178f47 100644
--- a/drivers/gpu/drm/i915/gt/intel_context.h
+++ b/drivers/gpu/drm/i915/gt/intel_context.h
@@ -93,7 +93,12 @@ static inline bool intel_context_pin_if_active(struct intel_context *ce)
static inline int intel_context_pin(struct intel_context *ce)
{
if (likely(intel_context_pin_if_active(ce))) {
- int err = i915_active_acquire_preallocate_barrier(&ce->active,
+ int err;
+
+ if (intel_context_is_barrier(ce))
+ return 0;
+
+ err = i915_active_acquire_preallocate_barrier(&ce->active,
ce->engine);
if (err)
diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
index c5989c0b83d3..cdeab52db094 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -424,6 +424,7 @@ bool i915_request_retire(struct i915_request *rq)
__list_del_entry(&rq->link); /* poison neither prev/next (RCU walks) */
intel_context_exit(rq->context);
+ i915_active_acquire_barrier(&rq->context->active);
intel_context_unpin(rq->context);
free_capture_list(rq);
--
2.31.0
More information about the Intel-gfx-trybot
mailing list