| Summary: | [CI][DRMTIP] igt@gem_exec_await@wide-contexts - dmesg-warn - WARNING: possible circular locking dependency detected | ||
|---|---|---|---|
| Product: | DRI | Reporter: | Lakshmi <lakshminarayana.vudum> |
| Component: | DRM/Intel | Assignee: | Intel GFX Bugs mailing list <intel-gfx-bugs> |
| Status: | RESOLVED FIXED | QA Contact: | Intel GFX Bugs mailing list <intel-gfx-bugs> |
| Severity: | normal | ||
| Priority: | medium | CC: | intel-gfx-bugs |
| Version: | DRI git | ||
| Hardware: | Other | ||
| OS: | All | ||
| Whiteboard: | |||
| i915 platform: | ICL | i915 features: | GEM/Other |
|
Description
Lakshmi
2019-09-30 09:47:20 UTC
The CI Bug Log issue associated to this bug has been updated. ### New filters associated * ICL: igt@gem_exec_await@wide-contexts - dmesg-warn - WARNING: possible circular locking dependency detected - https://intel-gfx-ci.01.org/tree/drm-tip/drmtip_379/fi-icl-dsi/igt@gem_exec_await@wide-contexts.html That doesn't make much sense, nothing has changed here for a long time. Recursion onto the same engine from within a submit is not possible -- we use an irq-work to break out of the engine lock to signal any completion events spotted while submitting. The dependency chain looks mighty odd as well. A fluke then? The fact that it happened once would support that. So I think the suspect is:
__unwind_incomplete_requests:
/*
* Decouple the virtual breadcrumb before moving it
* back to the virtual engine -- we don't want the
* request to complete in the background and try
* and cancel the breadcrumb on the virtual engine
* (instead of the old engine where it is linked)!
*/
if (test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
&rq->fence.flags)) {
spin_lock(&rq->lock);
i915_request_cancel_breadcrumb(rq);
spin_unlock(&rq->lock);
}
That would be an extremely rare path to hit, so would be rarely seen by lockdep.
After a bit of thought, the rule is that such a spin_lock(rq->lock) inside engine->active.lock needs nesting annotation, as on the signaling path it is reversed (but we guarantee that it's a different set of engines). https://patchwork.freedesktop.org/series/67621/ commit 08ad9a3846fc72b047b110b36d162ffbcf298fa2 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Oct 4 20:47:58 2019 +0100 drm/i915/execlists: Fix annotation for decoupling virtual request As we may signal a request and take the engine->active.lock within the signaler, the engine submission paths have to use a nested annotation on their requests -- but we guarantee that we can never submit on the same engine as the signaling fence. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.