Skip to content

Commit

Permalink
drm/i915/gt: Use the local engine wakeref when checking RING registers
Browse files Browse the repository at this point in the history
Now that we can atomically acquire the engine wakeref, make use of it
when check whether the RING registers are idle.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190812091045.29587-7-chris@chris-wilson.co.uk
  • Loading branch information
Chris Wilson committed Aug 12, 2019
1 parent acb9488 commit 4ecd20c
Showing 1 changed file with 3 additions and 7 deletions.
10 changes: 3 additions & 7 deletions drivers/gpu/drm/i915/gt/intel_engine_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1008,16 +1008,12 @@ void intel_engine_get_instdone(struct intel_engine_cs *engine,

static bool ring_is_idle(struct intel_engine_cs *engine)
{
struct drm_i915_private *dev_priv = engine->i915;
intel_wakeref_t wakeref;
bool idle = true;

if (I915_SELFTEST_ONLY(!engine->mmio_base))
return true;

/* If the whole device is asleep, the engine must be idle */
wakeref = intel_runtime_pm_get_if_in_use(&dev_priv->runtime_pm);
if (!wakeref)
if (!intel_engine_pm_get_if_awake(engine))
return true;

/* First check that no commands are left in the ring */
Expand All @@ -1026,11 +1022,11 @@ static bool ring_is_idle(struct intel_engine_cs *engine)
idle = false;

/* No bit for gen2, so assume the CS parser is idle */
if (INTEL_GEN(dev_priv) > 2 &&
if (INTEL_GEN(engine->i915) > 2 &&
!(ENGINE_READ(engine, RING_MI_MODE) & MODE_IDLE))
idle = false;

intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref);
intel_engine_pm_put(engine);

return idle;
}
Expand Down

0 comments on commit 4ecd20c

Please sign in to comment.