diff mbox

[1/2,i915] add module param "force_dp_sst"

Message ID 1457653404-19950-2-git-send-email-nmschulte@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Nathan Schulte March 10, 2016, 11:43 p.m. UTC
Adds an (unsafe; auto-kernel-tainting) boolean module parameter to the i915
drm driver: "force_dp_sst", which is disabled by default.  Enabling the
parameter forces newly connected DisplayPort sinks to report as not
supporting multi-stream transport (MST), thus "forcing" the use of
single-stream transport (SST).
---
 drivers/gpu/drm/i915/i915_drv.h    | 1 +
 drivers/gpu/drm/i915/i915_params.c | 5 +++++
 drivers/gpu/drm/i915/intel_dp.c    | 3 +++
 3 files changed, 9 insertions(+)

Comments

Jani Nikula March 11, 2016, 1:45 p.m. UTC | #1
On Fri, 11 Mar 2016, Nathan Schulte <nmschulte@gmail.com> wrote:
> Adds an (unsafe; auto-kernel-tainting) boolean module parameter to the i915
> drm driver: "force_dp_sst", which is disabled by default.  Enabling the
> parameter forces newly connected DisplayPort sinks to report as not
> supporting multi-stream transport (MST), thus "forcing" the use of
> single-stream transport (SST).

I'm not (yet) convinced we want this, but no matter what my quick
drive-by bikeshed is that the parameter should follow the "enable
feature" style, i.e. enable_mst or enable_dp_mst, defaulting to true.

BR,
Jani.


> ---
>  drivers/gpu/drm/i915/i915_drv.h    | 1 +
>  drivers/gpu/drm/i915/i915_params.c | 5 +++++
>  drivers/gpu/drm/i915/intel_dp.c    | 3 +++
>  3 files changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index b0847b9..515e335 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2701,6 +2701,7 @@ struct i915_params {
>  	int guc_log_level;
>  	int use_mmio_flip;
>  	int mmio_debug;
> +	bool force_dp_sst;
>  	bool verbose_state_checks;
>  	bool nuclear_pageflip;
>  	int edp_vswing;
> diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
> index 835d609..cc2aaf3 100644
> --- a/drivers/gpu/drm/i915/i915_params.c
> +++ b/drivers/gpu/drm/i915/i915_params.c
> @@ -51,6 +51,7 @@ struct i915_params i915 __read_mostly = {
>  	.disable_vtd_wa = 0,
>  	.use_mmio_flip = 0,
>  	.mmio_debug = 0,
> +	.force_dp_sst = false,
>  	.verbose_state_checks = 1,
>  	.nuclear_pageflip = 0,
>  	.edp_vswing = 0,
> @@ -181,6 +182,10 @@ MODULE_PARM_DESC(mmio_debug,
>  	"Enable the MMIO debug code for the first N failures (default: off). "
>  	"This may negatively affect performance.");
>  
> +module_param_named_unsafe(force_dp_sst, i915.force_dp_sst, bool, 0600);
> +MODULE_PARM_DESC(force_dp_sst,
> +	"Force single-stream transport (SST; disable MST) for new DisplayPort sinks (default: false). ");
> +
>  module_param_named(verbose_state_checks, i915.verbose_state_checks, bool, 0600);
>  MODULE_PARM_DESC(verbose_state_checks,
>  	"Enable verbose logs (ie. WARN_ON()) in case of unexpected hw state conditions.");
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 1d8de43..4c4725e 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -3969,6 +3969,9 @@ intel_dp_probe_mst(struct intel_dp *intel_dp)
>  {
>  	u8 buf[1];
>  
> +	if (i915.force_dp_sst)
> +		return false;
> +
>  	if (!intel_dp->can_mst)
>  		return false;
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index b0847b9..515e335 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2701,6 +2701,7 @@  struct i915_params {
 	int guc_log_level;
 	int use_mmio_flip;
 	int mmio_debug;
+	bool force_dp_sst;
 	bool verbose_state_checks;
 	bool nuclear_pageflip;
 	int edp_vswing;
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
index 835d609..cc2aaf3 100644
--- a/drivers/gpu/drm/i915/i915_params.c
+++ b/drivers/gpu/drm/i915/i915_params.c
@@ -51,6 +51,7 @@  struct i915_params i915 __read_mostly = {
 	.disable_vtd_wa = 0,
 	.use_mmio_flip = 0,
 	.mmio_debug = 0,
+	.force_dp_sst = false,
 	.verbose_state_checks = 1,
 	.nuclear_pageflip = 0,
 	.edp_vswing = 0,
@@ -181,6 +182,10 @@  MODULE_PARM_DESC(mmio_debug,
 	"Enable the MMIO debug code for the first N failures (default: off). "
 	"This may negatively affect performance.");
 
+module_param_named_unsafe(force_dp_sst, i915.force_dp_sst, bool, 0600);
+MODULE_PARM_DESC(force_dp_sst,
+	"Force single-stream transport (SST; disable MST) for new DisplayPort sinks (default: false). ");
+
 module_param_named(verbose_state_checks, i915.verbose_state_checks, bool, 0600);
 MODULE_PARM_DESC(verbose_state_checks,
 	"Enable verbose logs (ie. WARN_ON()) in case of unexpected hw state conditions.");
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 1d8de43..4c4725e 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -3969,6 +3969,9 @@  intel_dp_probe_mst(struct intel_dp *intel_dp)
 {
 	u8 buf[1];
 
+	if (i915.force_dp_sst)
+		return false;
+
 	if (!intel_dp->can_mst)
 		return false;