aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichał Winiarski <michal.winiarski@intel.com>2018-03-20 07:55:17 -0400
committerChris Wilson <chris@chris-wilson.co.uk>2018-03-20 10:55:58 -0400
commit03380d173a697475c747e4cd6ea2be739005dedc (patch)
tree7ee3b8430fdc91265064f99d917e7e056c457aa7
parentd3d57927995f872e5786ff6ae517a6c3e7a94d75 (diff)
drm/i915/guc: Don't try to enable GuC logging when we're not using GuC
When changing the default values for guc_log_level, we accidentally left the log enabled on non-guc platforms. Let's fix that. v2: Define the levels used and remove (now obsolete) comments (Chris) v3: Use "IS" rather than "TO" for booleans (Chris) Fixes: 9605d1ce7c6b ("drm/i915/guc: Default to non-verbose GuC logging") Reported-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Michał Winiarski <michal.winiarski@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com> Cc: Michal Wajdeczko <michal.wajdeczko@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/20180320115517.20423-1-michal.winiarski@intel.com
-rw-r--r--drivers/gpu/drm/i915/intel_guc.c4
-rw-r--r--drivers/gpu/drm/i915/intel_guc_log.c7
-rw-r--r--drivers/gpu/drm/i915/intel_guc_log.h12
-rw-r--r--drivers/gpu/drm/i915/intel_uc.c23
4 files changed, 23 insertions, 23 deletions
diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
index ee5230cc722e..4b7c9c6415dd 100644
--- a/drivers/gpu/drm/i915/intel_guc.c
+++ b/drivers/gpu/drm/i915/intel_guc.c
@@ -229,10 +229,10 @@ static u32 get_log_control_flags(void)
229 229
230 GEM_BUG_ON(level < 0); 230 GEM_BUG_ON(level < 0);
231 231
232 if (!GUC_LOG_LEVEL_TO_ENABLED(level)) 232 if (!GUC_LOG_LEVEL_IS_ENABLED(level))
233 flags |= GUC_LOG_DEFAULT_DISABLED; 233 flags |= GUC_LOG_DEFAULT_DISABLED;
234 234
235 if (!GUC_LOG_LEVEL_TO_VERBOSE(level)) 235 if (!GUC_LOG_LEVEL_IS_VERBOSE(level))
236 flags |= GUC_LOG_DISABLED; 236 flags |= GUC_LOG_DISABLED;
237 else 237 else
238 flags |= GUC_LOG_LEVEL_TO_VERBOSITY(level) << 238 flags |= GUC_LOG_LEVEL_TO_VERBOSITY(level) <<
diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c
index 4cb422ceb283..ae9b2569adab 100644
--- a/drivers/gpu/drm/i915/intel_guc_log.c
+++ b/drivers/gpu/drm/i915/intel_guc_log.c
@@ -515,8 +515,7 @@ int intel_guc_log_level_set(struct intel_guc_log *log, u64 val)
515 * GuC is recognizing log levels starting from 0 to max, we're using 0 515 * GuC is recognizing log levels starting from 0 to max, we're using 0
516 * as indication that logging should be disabled. 516 * as indication that logging should be disabled.
517 */ 517 */
518 if (val < GUC_LOG_LEVEL_DISABLED || 518 if (val < GUC_LOG_LEVEL_DISABLED || val > GUC_LOG_LEVEL_MAX)
519 val > GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX))
520 return -EINVAL; 519 return -EINVAL;
521 520
522 mutex_lock(&dev_priv->drm.struct_mutex); 521 mutex_lock(&dev_priv->drm.struct_mutex);
@@ -527,8 +526,8 @@ int intel_guc_log_level_set(struct intel_guc_log *log, u64 val)
527 } 526 }
528 527
529 intel_runtime_pm_get(dev_priv); 528 intel_runtime_pm_get(dev_priv);
530 ret = guc_log_control(guc, GUC_LOG_LEVEL_TO_VERBOSE(val), 529 ret = guc_log_control(guc, GUC_LOG_LEVEL_IS_VERBOSE(val),
531 GUC_LOG_LEVEL_TO_ENABLED(val), 530 GUC_LOG_LEVEL_IS_ENABLED(val),
532 GUC_LOG_LEVEL_TO_VERBOSITY(val)); 531 GUC_LOG_LEVEL_TO_VERBOSITY(val));
533 intel_runtime_pm_put(dev_priv); 532 intel_runtime_pm_put(dev_priv);
534 if (ret) { 533 if (ret) {
diff --git a/drivers/gpu/drm/i915/intel_guc_log.h b/drivers/gpu/drm/i915/intel_guc_log.h
index af1532c0d3e4..1b0d2fa4c0b6 100644
--- a/drivers/gpu/drm/i915/intel_guc_log.h
+++ b/drivers/gpu/drm/i915/intel_guc_log.h
@@ -46,14 +46,16 @@ struct intel_guc;
46 * log enabling, and separate bit for default logging - which "conveniently" 46 * log enabling, and separate bit for default logging - which "conveniently"
47 * ignores the enable bit. 47 * ignores the enable bit.
48 */ 48 */
49#define GUC_LOG_LEVEL_DISABLED 0 49#define GUC_LOG_LEVEL_DISABLED 0
50#define GUC_LOG_LEVEL_TO_ENABLED(x) ((x) > 0) 50#define GUC_LOG_LEVEL_NON_VERBOSE 1
51#define GUC_LOG_LEVEL_TO_VERBOSE(x) ((x) > 1) 51#define GUC_LOG_LEVEL_IS_ENABLED(x) ((x) > GUC_LOG_LEVEL_DISABLED)
52#define GUC_LOG_LEVEL_IS_VERBOSE(x) ((x) > GUC_LOG_LEVEL_NON_VERBOSE)
52#define GUC_LOG_LEVEL_TO_VERBOSITY(x) ({ \ 53#define GUC_LOG_LEVEL_TO_VERBOSITY(x) ({ \
53 typeof(x) _x = (x); \ 54 typeof(x) _x = (x); \
54 GUC_LOG_LEVEL_TO_VERBOSE(_x) ? _x - 2 : 0; \ 55 GUC_LOG_LEVEL_IS_VERBOSE(_x) ? _x - 2 : 0; \
55}) 56})
56#define GUC_VERBOSITY_TO_LOG_LEVEL(x) ((x) + 2) 57#define GUC_VERBOSITY_TO_LOG_LEVEL(x) ((x) + 2)
58#define GUC_LOG_LEVEL_MAX GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX)
57 59
58struct intel_guc_log { 60struct intel_guc_log {
59 u32 flags; 61 u32 flags;
diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c
index 34e847d0ee4c..2befcafbaabe 100644
--- a/drivers/gpu/drm/i915/intel_uc.c
+++ b/drivers/gpu/drm/i915/intel_uc.c
@@ -69,14 +69,15 @@ static int __get_platform_enable_guc(struct drm_i915_private *dev_priv)
69 69
70static int __get_default_guc_log_level(struct drm_i915_private *dev_priv) 70static int __get_default_guc_log_level(struct drm_i915_private *dev_priv)
71{ 71{
72 int guc_log_level = 1; /* non-verbose */ 72 int guc_log_level;
73 73
74 /* Enable if we're running on platform with GuC and debug config */ 74 if (!HAS_GUC(dev_priv) || !intel_uc_is_using_guc())
75 if (HAS_GUC(dev_priv) && intel_uc_is_using_guc() && 75 guc_log_level = GUC_LOG_LEVEL_DISABLED;
76 (IS_ENABLED(CONFIG_DRM_I915_DEBUG) || 76 else if (IS_ENABLED(CONFIG_DRM_I915_DEBUG) ||
77 IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM))) 77 IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM))
78 guc_log_level = 78 guc_log_level = GUC_LOG_LEVEL_MAX;
79 GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX); 79 else
80 guc_log_level = GUC_LOG_LEVEL_NON_VERBOSE;
80 81
81 /* Any platform specific fine-tuning can be done here */ 82 /* Any platform specific fine-tuning can be done here */
82 83
@@ -143,19 +144,17 @@ static void sanitize_options_early(struct drm_i915_private *dev_priv)
143 i915_modparams.guc_log_level = 0; 144 i915_modparams.guc_log_level = 0;
144 } 145 }
145 146
146 if (i915_modparams.guc_log_level > 147 if (i915_modparams.guc_log_level > GUC_LOG_LEVEL_MAX) {
147 GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX)) {
148 DRM_WARN("Incompatible option detected: %s=%d, %s!\n", 148 DRM_WARN("Incompatible option detected: %s=%d, %s!\n",
149 "guc_log_level", i915_modparams.guc_log_level, 149 "guc_log_level", i915_modparams.guc_log_level,
150 "verbosity too high"); 150 "verbosity too high");
151 i915_modparams.guc_log_level = 151 i915_modparams.guc_log_level = GUC_LOG_LEVEL_MAX;
152 GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX);
153 } 152 }
154 153
155 DRM_DEBUG_DRIVER("guc_log_level=%d (enabled:%s, verbose:%s, verbosity:%d)\n", 154 DRM_DEBUG_DRIVER("guc_log_level=%d (enabled:%s, verbose:%s, verbosity:%d)\n",
156 i915_modparams.guc_log_level, 155 i915_modparams.guc_log_level,
157 yesno(i915_modparams.guc_log_level), 156 yesno(i915_modparams.guc_log_level),
158 yesno(GUC_LOG_LEVEL_TO_VERBOSE(i915_modparams.guc_log_level)), 157 yesno(GUC_LOG_LEVEL_IS_VERBOSE(i915_modparams.guc_log_level)),
159 GUC_LOG_LEVEL_TO_VERBOSITY(i915_modparams.guc_log_level)); 158 GUC_LOG_LEVEL_TO_VERBOSITY(i915_modparams.guc_log_level));
160 159
161 /* Make sure that sanitization was done */ 160 /* Make sure that sanitization was done */