Commit 35fe703c authored by Michal Wajdeczko's avatar Michal Wajdeczko Committed by Chris Wilson

drm/i915/guc: Change values for i915_guc_log_control

Today we have format mismatch between read/write operations
of i915_guc_log_control entry. For read we return (0, 1..4)
that represents disable/verbosity levels, but for write we
force user to follow internal structure format (0,1,9,11,13).
Let's hide internals from the user and accept same values
as we support for read and related guc_log_level modparam.
Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20180111152441.21676-2-michal.wajdeczko@intel.comReviewed-by: default avatarSagar Arun Kamble <sagar.a.kamble@intel.com>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent 0ed87953
...@@ -58,11 +58,15 @@ static int guc_log_flush(struct intel_guc *guc) ...@@ -58,11 +58,15 @@ static int guc_log_flush(struct intel_guc *guc)
return intel_guc_send(guc, action, ARRAY_SIZE(action)); return intel_guc_send(guc, action, ARRAY_SIZE(action));
} }
static int guc_log_control(struct intel_guc *guc, u32 control_val) static int guc_log_control(struct intel_guc *guc, bool enable, u32 verbosity)
{ {
union guc_log_control control_val = {
.logging_enabled = enable,
.verbosity = verbosity,
};
u32 action[] = { u32 action[] = {
INTEL_GUC_ACTION_UK_LOG_ENABLE_LOGGING, INTEL_GUC_ACTION_UK_LOG_ENABLE_LOGGING,
control_val control_val.value
}; };
return intel_guc_send(guc, action, ARRAY_SIZE(action)); return intel_guc_send(guc, action, ARRAY_SIZE(action));
...@@ -567,28 +571,27 @@ void intel_guc_log_destroy(struct intel_guc *guc) ...@@ -567,28 +571,27 @@ void intel_guc_log_destroy(struct intel_guc *guc)
int i915_guc_log_control(struct drm_i915_private *dev_priv, u64 control_val) int i915_guc_log_control(struct drm_i915_private *dev_priv, u64 control_val)
{ {
struct intel_guc *guc = &dev_priv->guc; struct intel_guc *guc = &dev_priv->guc;
bool enable_logging = control_val > 0;
union guc_log_control log_param; u32 verbosity;
int ret; int ret;
log_param.value = control_val; BUILD_BUG_ON(GUC_LOG_VERBOSITY_MIN);
if (control_val > 1 + GUC_LOG_VERBOSITY_MAX)
if (log_param.verbosity < GUC_LOG_VERBOSITY_MIN ||
log_param.verbosity > GUC_LOG_VERBOSITY_MAX)
return -EINVAL; return -EINVAL;
/* This combination doesn't make sense & won't have any effect */ /* This combination doesn't make sense & won't have any effect */
if (!log_param.logging_enabled && !i915_modparams.guc_log_level) if (!enable_logging && !i915_modparams.guc_log_level)
return 0; return 0;
ret = guc_log_control(guc, log_param.value); verbosity = enable_logging ? control_val - 1 : 0;
ret = guc_log_control(guc, enable_logging, verbosity);
if (ret < 0) { if (ret < 0) {
DRM_DEBUG_DRIVER("guc_logging_control action failed %d\n", ret); DRM_DEBUG_DRIVER("guc_logging_control action failed %d\n", ret);
return ret; return ret;
} }
if (log_param.logging_enabled) { if (enable_logging) {
i915_modparams.guc_log_level = 1 + log_param.verbosity; i915_modparams.guc_log_level = 1 + verbosity;
/* /*
* If log was disabled at boot time, then the relay channel file * If log was disabled at boot time, then the relay channel file
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment