drm/i915: Decouple GuC log setup from verbosity parameter
authorSagar Arun Kamble <sagar.a.kamble@intel.com>
Wed, 12 Oct 2016 16:24:27 +0000 (21:54 +0530)
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>
Tue, 25 Oct 2016 08:34:06 +0000 (09:34 +0100)
GuC Log buffer allocation was tied up with verbosity level module param
i915.guc_log_level. User would be given a provision to enable firmware
logging at runtime, through a host2guc action, and not necessarily during
Driver load time. But the address of log buffer can be passed only in
init params, at firmware load time, so GuC has to be reset and firmware
needs to be reloaded to pass the log buffer address at runtime.
To avoid reset of GuC & reload of firmware, allocation of log buffer will
be done always but logging would be enabled initially on GuC side based on
the value of module parameter guc_log_level.

v2: Update commit message to describe the constraint with allocation of
    log buffer at runtime. (Tvrtko)

v3: Rebase.

Signed-off-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Signed-off-by: Akash Goel <akash.goel@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
drivers/gpu/drm/i915/i915_guc_submission.c
drivers/gpu/drm/i915/intel_guc_loader.c

index a1f76c8f8cde057b247d24aef7e020113981f43f..a1bea7ead6969e3cb9754de7e435068f6c513e16 100644 (file)
@@ -853,9 +853,6 @@ static void guc_log_create(struct intel_guc *guc)
        unsigned long offset;
        uint32_t size, flags;
 
-       if (i915.guc_log_level < GUC_LOG_VERBOSITY_MIN)
-               return;
-
        if (i915.guc_log_level > GUC_LOG_VERBOSITY_MAX)
                i915.guc_log_level = GUC_LOG_VERBOSITY_MAX;
 
index 3c8eaae13732ac2f40220defc18442ff86e06c7b..740be0b2a3609f24fa3eb7a8a73d62a4ad98a33d 100644 (file)
@@ -211,11 +211,13 @@ static void guc_params_init(struct drm_i915_private *dev_priv)
        params[GUC_CTL_FEATURE] |= GUC_CTL_DISABLE_SCHEDULER |
                        GUC_CTL_VCS2_ENABLED;
 
+       params[GUC_CTL_LOG_PARAMS] = guc->log_flags;
+
        if (i915.guc_log_level >= 0) {
-               params[GUC_CTL_LOG_PARAMS] = guc->log_flags;
                params[GUC_CTL_DEBUG] =
                        i915.guc_log_level << GUC_LOG_VERBOSITY_SHIFT;
-       }
+       } else
+               params[GUC_CTL_DEBUG] = GUC_LOG_DISABLED;
 
        if (guc->ads_vma) {
                u32 ads = i915_ggtt_offset(guc->ads_vma) >> PAGE_SHIFT;