drm/i915/guc: Take enable_guc_loading check out of GEM core code
authorOscar Mateo <oscar.mateo@intel.com>
Tue, 28 Mar 2017 16:53:47 +0000 (09:53 -0700)
committerJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Thu, 30 Mar 2017 10:11:40 +0000 (13:11 +0300)
The should happen as soon as possible, but always within the logic that
depends on it (and not interrupting the top-level driver control flow).

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1490720027-23234-1-git-send-email-oscar.mateo@intel.com
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/intel_uc.c

index 6d9944a00b7db04fda8ff5cd66bbe10e72f52a11..0b381167319992a493fd18e9db6ed3e0cdb3bc02 100644 (file)
@@ -549,8 +549,7 @@ static const struct vga_switcheroo_client_ops i915_switcheroo_ops = {
 static void i915_gem_fini(struct drm_i915_private *dev_priv)
 {
        mutex_lock(&dev_priv->drm.struct_mutex);
-       if (i915.enable_guc_loading)
-               intel_uc_fini_hw(dev_priv);
+       intel_uc_fini_hw(dev_priv);
        i915_gem_cleanup_engines(dev_priv);
        i915_gem_context_fini(dev_priv);
        mutex_unlock(&dev_priv->drm.struct_mutex);
index 84ea249c6f4f4b6fd4e97a588941e4fe34675822..2709be922512fe9fab88e43751cba50c71f68399 100644 (file)
@@ -4611,12 +4611,10 @@ int i915_gem_init_hw(struct drm_i915_private *dev_priv)
 
        intel_mocs_init_l3cc_table(dev_priv);
 
-       if (i915.enable_guc_loading) {
-               /* We can't enable contexts until all firmware is loaded */
-               ret = intel_uc_init_hw(dev_priv);
-               if (ret)
-                       goto out;
-       }
+       /* We can't enable contexts until all firmware is loaded */
+       ret = intel_uc_init_hw(dev_priv);
+       if (ret)
+               goto out;
 
 out:
        intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
index c767dc351c6399772e5efac60aeeec7f19a1bece..19653224b68347ba5862856c733845dcefeb91c8 100644 (file)
@@ -254,6 +254,9 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
 {
        int ret, attempts;
 
+       if (!i915.enable_guc_loading)
+               return 0;
+
        gen9_reset_guc_interrupts(dev_priv);
 
        /* We need to notify the guc whenever we change the GGTT */
@@ -343,6 +346,9 @@ err_guc:
 
 void intel_uc_fini_hw(struct drm_i915_private *dev_priv)
 {
+       if (!i915.enable_guc_loading)
+               return;
+
        if (i915.enable_guc_submission) {
                i915_guc_submission_disable(dev_priv);
                gen9_disable_guc_interrupts(dev_priv);