summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJani Nikula <jani.nikula@intel.com>2016-12-16 12:13:26 +0200
committerMartin Peres <martin.peres@linux.intel.com>2017-01-16 20:00:32 +0200
commit3c0e3c5fced6aa993a1b0693a0c219383ce389f7 (patch)
treea028d2454565ac8c73477ccc304c2c81a4daebb9
parent209fdfaafbb591a3d8e5e13f2a1c5c088b1a5ac0 (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.c4
-rw-r--r--drivers/gpu/drm/i915/i915_params.h1
-rw-r--r--drivers/gpu/drm/i915/intel_dp_link_training.c6
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;