mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-03 20:34:23 -04:00
Revert "drm/i915: Avoid waking the engines just to check if they are idle"
This reverts commit0b702dca26. CI reports that this is not as reliable as it first appears, with failures starting to sporadically occur in selftests. Fixes:0b702dca26("drm/i915: Avoid waking the engines just to check if they are idle") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Mika Kuoppala <mika.kuoppala@intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190227204654.14907-1-chris@chris-wilson.co.uk
This commit is contained in:
@@ -1007,7 +1007,6 @@ static bool ring_is_idle(struct intel_engine_cs *engine)
|
||||
{
|
||||
struct drm_i915_private *dev_priv = engine->i915;
|
||||
intel_wakeref_t wakeref;
|
||||
unsigned long flags;
|
||||
bool idle = true;
|
||||
|
||||
if (I915_SELFTEST_ONLY(!engine->mmio_base))
|
||||
@@ -1018,19 +1017,15 @@ static bool ring_is_idle(struct intel_engine_cs *engine)
|
||||
if (!wakeref)
|
||||
return true;
|
||||
|
||||
spin_lock_irqsave(&dev_priv->uncore.lock, flags);
|
||||
|
||||
/*
|
||||
* Check that no commands are left in the ring.
|
||||
*
|
||||
* If the engine is not awake, both reads return 0 as we do so without
|
||||
* forcewake.
|
||||
*/
|
||||
if ((I915_READ_FW(RING_HEAD(engine->mmio_base)) & HEAD_ADDR) !=
|
||||
(I915_READ_FW(RING_TAIL(engine->mmio_base)) & TAIL_ADDR))
|
||||
/* First check that no commands are left in the ring */
|
||||
if ((I915_READ_HEAD(engine) & HEAD_ADDR) !=
|
||||
(I915_READ_TAIL(engine) & TAIL_ADDR))
|
||||
idle = false;
|
||||
|
||||
/* No bit for gen2, so assume the CS parser is idle */
|
||||
if (INTEL_GEN(dev_priv) > 2 && !(I915_READ_MODE(engine) & MODE_IDLE))
|
||||
idle = false;
|
||||
|
||||
spin_unlock_irqrestore(&dev_priv->uncore.lock, flags);
|
||||
intel_runtime_pm_put(dev_priv, wakeref);
|
||||
|
||||
return idle;
|
||||
|
||||
Reference in New Issue
Block a user