diff options
author | Michał Winiarski <michal.winiarski@intel.com> | 2018-03-20 07:55:17 -0400 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2018-03-20 10:55:58 -0400 |
commit | 03380d173a697475c747e4cd6ea2be739005dedc (patch) | |
tree | 7ee3b8430fdc91265064f99d917e7e056c457aa7 | |
parent | d3d57927995f872e5786ff6ae517a6c3e7a94d75 (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.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_guc_log.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_guc_log.h | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_uc.c | 23 |
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 | ||
58 | struct intel_guc_log { | 60 | struct 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 | ||
70 | static int __get_default_guc_log_level(struct drm_i915_private *dev_priv) | 70 | static 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 */ |