diff options
author | Jani Nikula <jani.nikula@intel.com> | 2016-12-16 12:13:26 +0200 |
---|---|---|
committer | Martin Peres <martin.peres@linux.intel.com> | 2017-01-16 20:00:32 +0200 |
commit | 3c0e3c5fced6aa993a1b0693a0c219383ce389f7 (patch) | |
tree | a028d2454565ac8c73477ccc304c2c81a4daebb9 | |
parent | 209fdfaafbb591a3d8e5e13f2a1c5c088b1a5ac0 (diff) |
HACK: drm/i915/dp: add module parameter to inject link training failuresdp-compliance
NOT FOR UPSTREAM.
Set i915.train_fail=N to force the link training code to think there was
an error in link training, for the next N link training attempts. This
should cause link status property change to BAD and a hotplug uevent.
Changes via /sys/module/i915/parameters/train_fail will also be picked
up runtime, so no need to set this at boot or module load. However,
changing the value won't cause an immediate fail, you need to force link
training separately (modeset, hotplug, etc.).
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
-rw-r--r-- | drivers/gpu/drm/i915/i915_params.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_params.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp_link_training.c | 6 |
3 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c index 0e280fbd52f1..3970540b8933 100644 --- a/drivers/gpu/drm/i915/i915_params.c +++ b/drivers/gpu/drm/i915/i915_params.c @@ -63,8 +63,12 @@ struct i915_params i915 __read_mostly = { .inject_load_failure = 0, .enable_dpcd_backlight = false, .enable_gvt = false, + .train_fail = 0, }; +module_param_named(train_fail, i915.train_fail, int, 0600); +MODULE_PARM_DESC(modeset, "fail link training clock recovery on the next N attempts, default 0"); + module_param_named(modeset, i915.modeset, int, 0400); MODULE_PARM_DESC(modeset, "Use kernel modesetting [KMS] (0=disable, " diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h index 8e433de04679..846d4349167f 100644 --- a/drivers/gpu/drm/i915/i915_params.h +++ b/drivers/gpu/drm/i915/i915_params.h @@ -66,6 +66,7 @@ struct i915_params { bool enable_dp_mst; bool enable_dpcd_backlight; bool enable_gvt; + int train_fail; }; extern struct i915_params i915 __read_mostly; diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c index 2a6795bfae6f..933e32032178 100644 --- a/drivers/gpu/drm/i915/intel_dp_link_training.c +++ b/drivers/gpu/drm/i915/intel_dp_link_training.c @@ -176,6 +176,12 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp) return false; } + if (i915.train_fail > 0) { + DRM_ERROR("injecting clock recovery fail\n"); + i915.train_fail--; + return false; + } + if (drm_dp_clock_recovery_ok(link_status, intel_dp->lane_count)) { DRM_DEBUG_KMS("clock recovery OK\n"); return true; |