Re: [PATCH] drm/i915: Add module param to test the load detect code

Ander Conselvan De Oliveira
2015-03-27T09:57:58Z

Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com>

On Tue, 2015-03-03 at 18:03 +0100, Daniel Vetter wrote:
> This is useful for writing igts to make sure we don't break this,
> without being forced to own a one of these dinosaurs.
>
> Suggested-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 1 +
> drivers/gpu/drm/i915/i915_params.c | 8 +++++++-
> drivers/gpu/drm/i915/intel_crt.c | 6 ++++--
> 3 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index e07a1cb5db67..878b16ed61b3 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2429,6 +2429,7 @@ struct i915_params {
> bool enable_hangcheck;
> bool fastboot;
> bool prefault_disable;
> + bool load_detect_test;
> bool reset;
> bool disable_display;
> bool disable_vtd_wa;
> diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
> index 44f2262a5553..9f7f9a644c45 100644
> --- a/drivers/gpu/drm/i915/i915_params.c
> +++ b/drivers/gpu/drm/i915/i915_params.c
> @@ -44,6 +44,7 @@ struct i915_params i915 __read_mostly = {
> .enable_ips = 1,
> .fastboot = 0,
> .prefault_disable = 0,
> + .load_detect_test = 0,
> .reset = true,
> .invert_brightness = 0,
> .disable_display = 0,
> @@ -144,11 +145,16 @@ module_param_named(fastboot, i915.fastboot, bool, 0600);
> MODULE_PARM_DESC(fastboot,
> "Try to skip unnecessary mode sets at boot time (default: false)");
>
> -module_param_named(prefault_disable, i915.prefault_disable, bool, 0600);
> +module_param_named_unsafe(prefault_disable, i915.prefault_disable, bool, 0600);
> MODULE_PARM_DESC(prefault_disable,
> "Disable page prefaulting for pread/pwrite/reloc (default:false). "
> "For developers only.");
>
> +module_param_named_unsafe(load_detect_test, i915.load_detect_test, bool, 0600);
> +MODULE_PARM_DESC(load_detect_test,
> + "Force-enable the VGA load detect code for testing (default:false). "
> + "For developers only.");
> +
> module_param_named(invert_brightness, i915.invert_brightness, int, 0600);
> MODULE_PARM_DESC(invert_brightness,
> "Invert backlight brightness "
> diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
> index e66e17af0a56..b3421ac0be57 100644
> --- a/drivers/gpu/drm/i915/intel_crt.c
> +++ b/drivers/gpu/drm/i915/intel_crt.c
> @@ -690,7 +690,7 @@ intel_crt_detect(struct drm_connector *connector, bool force)
> * broken monitor (without edid) to work behind a broken kvm (that fails
> * to have the right resistors for HP detection) needs to fix this up.
> * For now just bail out. */
> - if (I915_HAS_HOTPLUG(dev)) {
> + if (I915_HAS_HOTPLUG(dev) && !i915.load_detect_test) {
> status = connector_status_disconnected;
> goto out;
> }
> @@ -706,8 +706,10 @@ intel_crt_detect(struct drm_connector *connector, bool force)
> if (intel_get_load_detect_pipe(connector, NULL, &tmp, &ctx)) {
> if (intel_crt_detect_ddc(connector))
> status = connector_status_connected;
> - else
> + else if (INTEL_INFO(dev)->gen < 4)
> status = intel_crt_load_detect(crt);
> + else
> + status = connector_status_unknown;
> intel_release_load_detect_pipe(connector, &tmp);
> } else
> status = connector_status_unknown;