drm/i915/guc: Introduce USES_GUC_xxx helper macros
authorMichal Wajdeczko <michal.wajdeczko@intel.com>
Wed, 6 Dec 2017 13:53:12 +0000 (13:53 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 6 Dec 2017 14:41:49 +0000 (14:41 +0000)
In the upcoming patch we will change the way how to recognize
when GuC is in use. Using helper macros will minimize scope
of that changes. While here, update dev_info message.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20171206135316.32556-3-michal.wajdeczko@intel.com
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem_context.c
drivers/gpu/drm/i915/i915_gem_gtt.c
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/intel_guc.c
drivers/gpu/drm/i915/intel_guc_log.c
drivers/gpu/drm/i915/intel_gvt.c
drivers/gpu/drm/i915/intel_uc.c
drivers/gpu/drm/i915/selftests/intel_guc.c

index bd4eea51c9edfc81cf3a3ffde1cbf6c35ce8d421..937fa02300e31ec8acd5b7b38891de8be555d706 100644 (file)
@@ -3239,6 +3239,10 @@ intel_info(const struct drm_i915_private *dev_priv)
 #define HAS_HUC(dev_priv)      (HAS_GUC(dev_priv))
 #define HAS_HUC_UCODE(dev_priv)        (HAS_GUC(dev_priv))
 
+/* Having a GuC is not the same as using a GuC */
+#define USES_GUC(dev_priv)             (i915_modparams.enable_guc_loading)
+#define USES_GUC_SUBMISSION(dev_priv)  (i915_modparams.enable_guc_submission)
+
 #define HAS_RESOURCE_STREAMER(dev_priv) ((dev_priv)->info.has_resource_streamer)
 
 #define HAS_POOLED_EU(dev_priv)        ((dev_priv)->info.has_pooled_eu)
index ce3139e5ec4c4406d50b84fe041559e5c62d1683..21ce374d9924fbbaa5a67297a3bec8a8806ada5a 100644 (file)
@@ -316,7 +316,7 @@ __create_hw_context(struct drm_i915_private *dev_priv,
         * present or not in use we still need a small bias as ring wraparound
         * at offset 0 sometimes hangs. No idea why.
         */
-       if (HAS_GUC(dev_priv) && i915_modparams.enable_guc_loading)
+       if (USES_GUC(dev_priv))
                ctx->ggtt_offset_bias = GUC_WOPCM_TOP;
        else
                ctx->ggtt_offset_bias = I915_GTT_PAGE_SIZE;
@@ -409,7 +409,7 @@ i915_gem_context_create_gvt(struct drm_device *dev)
        i915_gem_context_set_closed(ctx); /* not user accessible */
        i915_gem_context_clear_bannable(ctx);
        i915_gem_context_set_force_single_submission(ctx);
-       if (!i915_modparams.enable_guc_submission)
+       if (!USES_GUC_SUBMISSION(to_i915(dev)))
                ctx->ring_size = 512 * PAGE_SIZE; /* Max ring buffer size */
 
        GEM_BUG_ON(i915_gem_context_is_kernel(ctx));
index 41a203e0c1604c3d71fc4472a060fd665f176c01..86fbd67388f311d9976eb4e47f15e6042b463ee9 100644 (file)
@@ -3503,7 +3503,7 @@ int i915_ggtt_probe_hw(struct drm_i915_private *dev_priv)
         * currently don't have any bits spare to pass in this upper
         * restriction!
         */
-       if (HAS_GUC(dev_priv) && i915_modparams.enable_guc_loading) {
+       if (USES_GUC(dev_priv)) {
                ggtt->base.total = min_t(u64, ggtt->base.total, GUC_GGTT_TOP);
                ggtt->mappable_end = min(ggtt->mappable_end, ggtt->base.total);
        }
index 7cac07db89b99aebfc361b64f706f9177d0ad318..3517c6548e2cccd3c21985a0c52266c1f818d99c 100644 (file)
@@ -1400,7 +1400,7 @@ gen8_cs_irq_handler(struct intel_engine_cs *engine, u32 iir, int test_shift)
 
        if (iir & (GT_RENDER_USER_INTERRUPT << test_shift)) {
                notify_ring(engine);
-               tasklet |= i915_modparams.enable_guc_submission;
+               tasklet |= USES_GUC_SUBMISSION(engine->i915);
        }
 
        if (tasklet)
index df86907383691d26603d8cac94dcabd6b2cc79c2..177ee69ca9b1256715ecfafb2c0e63ce1cdd622d 100644 (file)
@@ -129,7 +129,7 @@ void intel_guc_init_params(struct intel_guc *guc)
        }
 
        /* If GuC submission is enabled, set up additional parameters here */
-       if (i915_modparams.enable_guc_submission) {
+       if (USES_GUC_SUBMISSION(dev_priv)) {
                u32 ads = guc_ggtt_offset(guc->ads_vma) >> PAGE_SHIFT;
                u32 pgs = guc_ggtt_offset(dev_priv->guc.stage_desc_pool);
                u32 ctx_in_16 = GUC_MAX_STAGE_DESCRIPTORS / 16;
index 76d3eb1e4614123052807b3bf978d716fefb59e9..1a2c5eed9929efe7fcddc56c7f60e7d84d984249 100644 (file)
@@ -505,7 +505,7 @@ static void guc_flush_logs(struct intel_guc *guc)
 {
        struct drm_i915_private *dev_priv = guc_to_i915(guc);
 
-       if (!i915_modparams.enable_guc_submission ||
+       if (!USES_GUC_SUBMISSION(dev_priv) ||
            (i915_modparams.guc_log_level < 0))
                return;
 
@@ -646,7 +646,7 @@ int i915_guc_log_control(struct drm_i915_private *dev_priv, u64 control_val)
 
 void i915_guc_log_register(struct drm_i915_private *dev_priv)
 {
-       if (!i915_modparams.enable_guc_submission ||
+       if (!USES_GUC_SUBMISSION(dev_priv) ||
            (i915_modparams.guc_log_level < 0))
                return;
 
@@ -657,7 +657,7 @@ void i915_guc_log_register(struct drm_i915_private *dev_priv)
 
 void i915_guc_log_unregister(struct drm_i915_private *dev_priv)
 {
-       if (!i915_modparams.enable_guc_submission)
+       if (!USES_GUC_SUBMISSION(dev_priv))
                return;
 
        mutex_lock(&dev_priv->drm.struct_mutex);
index 126f7c769c69416313a79d6a169668ce926fa3b8..a2fe7c8d44775e06e4e4168336f250c4be02bfa2 100644 (file)
@@ -95,7 +95,7 @@ int intel_gvt_init(struct drm_i915_private *dev_priv)
                return 0;
        }
 
-       if (i915_modparams.enable_guc_submission) {
+       if (USES_GUC_SUBMISSION(dev_priv)) {
                DRM_ERROR("i915 GVT-g loading failed due to Graphics virtualization is not yet supported with GuC submission\n");
                return -EIO;
        }
index 4b7f2a78b3788fca0986ed41fe2ae5b631063e8d..ed2dd764fed77b341022bbcf59d312ae1638a567 100644 (file)
@@ -152,7 +152,7 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
        struct intel_guc *guc = &dev_priv->guc;
        int ret, attempts;
 
-       if (!i915_modparams.enable_guc_loading)
+       if (!USES_GUC(dev_priv))
                return 0;
 
        guc_disable_communication(guc);
@@ -161,7 +161,7 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
        /* We need to notify the guc whenever we change the GGTT */
        i915_ggtt_enable_guc(dev_priv);
 
-       if (i915_modparams.enable_guc_submission) {
+       if (USES_GUC_SUBMISSION(dev_priv)) {
                /*
                 * This is stuff we need to have available at fw load time
                 * if we are planning to enable submission later
@@ -211,7 +211,7 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
                goto err_log_capture;
 
        intel_huc_auth(&dev_priv->huc);
-       if (i915_modparams.enable_guc_submission) {
+       if (USES_GUC_SUBMISSION(dev_priv)) {
                if (i915_modparams.guc_log_level >= 0)
                        gen9_enable_guc_interrupts(dev_priv);
 
@@ -220,11 +220,10 @@ int intel_uc_init_hw(struct drm_i915_private *dev_priv)
                        goto err_interrupts;
        }
 
-       dev_info(dev_priv->drm.dev, "GuC %s (firmware %s [version %u.%u])\n",
-                i915_modparams.enable_guc_submission ? "submission enabled" :
-                                                       "loaded",
-                guc->fw.path,
+       dev_info(dev_priv->drm.dev, "GuC firmware version %u.%u\n",
                 guc->fw.major_ver_found, guc->fw.minor_ver_found);
+       dev_info(dev_priv->drm.dev, "GuC submission %s\n",
+                enableddisabled(USES_GUC_SUBMISSION(dev_priv)));
 
        return 0;
 
@@ -243,7 +242,7 @@ err_interrupts:
 err_log_capture:
        guc_capture_load_err_log(guc);
 err_submission:
-       if (i915_modparams.enable_guc_submission)
+       if (USES_GUC_SUBMISSION(dev_priv))
                intel_guc_submission_fini(guc);
 err_guc:
        i915_ggtt_disable_guc(dev_priv);
@@ -257,7 +256,7 @@ err_guc:
                ret = 0;
        }
 
-       if (i915_modparams.enable_guc_submission) {
+       if (USES_GUC_SUBMISSION(dev_priv)) {
                i915_modparams.enable_guc_submission = 0;
                DRM_NOTE("Falling back from GuC submission to execlist mode\n");
        }
@@ -273,15 +272,15 @@ void intel_uc_fini_hw(struct drm_i915_private *dev_priv)
 
        guc_free_load_err_log(guc);
 
-       if (!i915_modparams.enable_guc_loading)
+       if (!USES_GUC(dev_priv))
                return;
 
-       if (i915_modparams.enable_guc_submission)
+       if (USES_GUC_SUBMISSION(dev_priv))
                intel_guc_submission_disable(guc);
 
        guc_disable_communication(guc);
 
-       if (i915_modparams.enable_guc_submission) {
+       if (USES_GUC_SUBMISSION(dev_priv)) {
                gen9_disable_guc_interrupts(dev_priv);
                intel_guc_submission_fini(guc);
        }
index 7b23597858bbf55d190d389be9612d35d13a5b2b..68d6a69c738fdc836542f068bbd5eb3fb2c784ea 100644 (file)
@@ -362,7 +362,7 @@ int intel_guc_live_selftest(struct drm_i915_private *dev_priv)
                SUBTEST(igt_guc_doorbells),
        };
 
-       if (!i915_modparams.enable_guc_submission)
+       if (!USES_GUC_SUBMISSION(dev_priv))
                return 0;
 
        return i915_subtests(tests, dev_priv);