drm/i915: Clear per-engine fault register as early as possible
authorMichel Thierry <michel.thierry@intel.com>
Sat, 11 Nov 2017 00:44:47 +0000 (16:44 -0800)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 13 Nov 2017 19:03:13 +0000 (19:03 +0000)
From gen6, the hardware tracks address lookup failures and we should
clear those registers upon startup to prevent false positives. However,
this was happening before we have the engines defined (intel_uncore_init())
and the for_each_engine loop was just a nop. The earliest we can call
this is inside intel_engines_init_mmio().

Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Michel Thierry <michel.thierry@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20171111004448.12360-1-michel.thierry@intel.com
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/intel_engine_cs.c
drivers/gpu/drm/i915/intel_uncore.c

index a0f9d0e..70bbe8e 100644 (file)
@@ -289,6 +289,8 @@ int intel_engines_init_mmio(struct drm_i915_private *dev_priv)
 
        device_info->num_rings = hweight32(mask);
 
+       i915_check_and_clear_faults(dev_priv);
+
        return 0;
 
 cleanup:
index 211acee..a78ceaf 100644 (file)
@@ -1420,8 +1420,6 @@ void intel_uncore_init(struct drm_i915_private *dev_priv)
 
        iosf_mbi_register_pmic_bus_access_notifier(
                &dev_priv->uncore.pmic_bus_access_nb);
-
-       i915_check_and_clear_faults(dev_priv);
 }
 
 void intel_uncore_fini(struct drm_i915_private *dev_priv)