[PATCH 1/2] drm/i915/guc: Don't double enable a context
Daniele Ceraolo Spurio
daniele.ceraolospurio at intel.com
Wed Nov 15 21:18:02 UTC 2023
On 11/9/2023 4:54 PM, John.C.Harrison at Intel.com wrote:
> From: John Harrison <John.C.Harrison at Intel.com>
>
> If a context is blocked, unblocked and subitted repeatedly in rapid
> succession, the driver can end up trying to enable the context while
> the previous enable request is still in flight. This can lead to much
> confusion in the state tracking.
>
> Prevent that by checking the pending enable flag before trying to
> enable a context.
>
> Signed-off-by: John Harrison <John.C.Harrison at Intel.com>
Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
Daniele
> ---
> drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> index d37698bd6b91a..d399e4d238c10 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c
> @@ -720,7 +720,7 @@ static int __guc_add_request(struct intel_guc *guc, struct i915_request *rq)
> if (unlikely(context_blocked(ce) && !intel_context_is_parent(ce)))
> goto out;
>
> - enabled = context_enabled(ce) || context_blocked(ce);
> + enabled = context_enabled(ce) || context_blocked(ce) || context_pending_enable(ce);
>
> if (!enabled) {
> action[len++] = INTEL_GUC_ACTION_SCHED_CONTEXT_MODE_SET;
More information about the dri-devel
mailing list