diff mbox

[v3] drm/i915: Fake HDMI live status

Message ID 1461237606-16491-1-git-send-email-shashank.sharma@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Sharma, Shashank April 21, 2016, 11:18 a.m. UTC
This patch does the following:
- Fakes live status of HDMI as connected (even if that's not).
  While testing certain (monitor + cable) combinations with
  various intel  platforms, it seems that live status register
  doesn't work reliably on some older devices. So limit the
  live_status check for HDMI detection, only for platforms
  from gen7 onwards.

Fixes: 237ed86c693d ("drm/i915: Check live status before reading edid")
Cc: stable@vger.kernel.org # v4.4

V2: restrict faking live_status to certain platforms
V3: (Ville)
   - keep the debug message for !live_status case
   - fix indentation of comment
   - remove "warning" from the debug message

    (Jani)
   - Change format of fix details in the commit message

Suggested-by: Ville Syrjala <ville.syrjala@linux.intel.com>
Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
---
 drivers/gpu/drm/i915/intel_hdmi.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

Comments

Ville Syrjälä April 21, 2016, 12:14 p.m. UTC | #1
On Thu, Apr 21, 2016 at 04:48:32PM +0530, Shashank Sharma wrote:
> This patch does the following:
> - Fakes live status of HDMI as connected (even if that's not).
>   While testing certain (monitor + cable) combinations with
>   various intel  platforms, it seems that live status register
>   doesn't work reliably on some older devices. So limit the
>   live_status check for HDMI detection, only for platforms
>   from gen7 onwards.
> 
> Fixes: 237ed86c693d ("drm/i915: Check live status before reading edid")
> Cc: stable@vger.kernel.org # v4.4
> 
> V2: restrict faking live_status to certain platforms
> V3: (Ville)
>    - keep the debug message for !live_status case
>    - fix indentation of comment
>    - remove "warning" from the debug message
> 
>     (Jani)
>    - Change format of fix details in the commit message
> 
> Suggested-by: Ville Syrjala <ville.syrjala@linux.intel.com>
> Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/intel_hdmi.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index b199ede..2cdab73 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -1412,8 +1412,16 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
>  				hdmi_to_dig_port(intel_hdmi));
>  	}
>  
> -	if (!live_status)
> -		DRM_DEBUG_KMS("Live status not up!");
> +	if (!live_status) {
> +		DRM_DEBUG_KMS("HDMI live status down\n");
> +		/*
> +		 * Live status register is not reliable on all intel platforms.
> +		 * So consider live_status only for certain platforms, for
> +		 * others, read EDID to determine presence of sink.
> +		 */
> +		if (INTEL_INFO(dev_priv)->gen < 7 || IS_IVYBRIDGE(dev_priv))
> +			live_status = true;
> +	}
>  
>  	intel_hdmi_unset_edid(connector);
>  
> -- 
> 1.9.1
Ville Syrjälä April 22, 2016, 5:23 p.m. UTC | #2
On Thu, Apr 21, 2016 at 04:54:28PM -0000, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/i915: Fake HDMI live status (rev3)
> URL   : https://patchwork.freedesktop.org/series/6038/
> State : success
> 
> == Summary ==
> 
> Series 6038v3 drm/i915: Fake HDMI live status
> http://patchwork.freedesktop.org/api/1.0/series/6038/revisions/3/mbox/
> 
> Test gem_busy:
>         Subgroup basic-blt:
>                 skip       -> PASS       (bsw-nuc-2)
> Test gem_sync:
>         Subgroup basic-render:
>                 pass       -> INCOMPLETE (bdw-nuci7) UNSTABLE

Hmm. Random machine death? Looking at the long term history this seems
to be semi-frequent on this machine.

> Test kms_pipe_crc_basic:
>         Subgroup hang-read-crc-pipe-c:
>                 incomplete -> PASS       (bdw-nuci7)
> 
> bdw-nuci7        total:176  pass:164  dwarn:0   dfail:0   fail:0   skip:11 
> bdw-ultra        total:194  pass:170  dwarn:0   dfail:0   fail:1   skip:23 
> bsw-nuc-2        total:193  pass:154  dwarn:0   dfail:0   fail:0   skip:39 
> byt-nuc          total:193  pass:155  dwarn:0   dfail:0   fail:0   skip:38 
> hsw-brixbox      total:194  pass:170  dwarn:0   dfail:0   fail:0   skip:24 
> hsw-gt2          total:194  pass:175  dwarn:0   dfail:0   fail:0   skip:19 
> ilk-hp8440p      total:194  pass:137  dwarn:0   dfail:0   fail:0   skip:57 
> ivb-t430s        total:194  pass:166  dwarn:0   dfail:0   fail:0   skip:28 
> skl-i7k-2        total:194  pass:168  dwarn:0   dfail:0   fail:1   skip:25 
> skl-nuci5        total:194  pass:183  dwarn:0   dfail:0   fail:0   skip:11 
> snb-dellxps      total:193  pass:155  dwarn:0   dfail:0   fail:0   skip:38 
> snb-x220t        total:193  pass:155  dwarn:0   dfail:0   fail:1   skip:37 
> 
> Results at /archive/results/CI_IGT_test/Patchwork_1977/
> 
> 9dabb0053b63bc32ab6ad5d13209d1e43395313f drm-intel-nightly: 2016y-04m-21d-09h-27m-12s UTC integration manifest
> 4bd2e76 drm/i915: Fake HDMI live status
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Ville Syrjälä April 22, 2016, 5:34 p.m. UTC | #3
On Thu, Apr 21, 2016 at 04:48:32PM +0530, Shashank Sharma wrote:
> This patch does the following:
> - Fakes live status of HDMI as connected (even if that's not).
>   While testing certain (monitor + cable) combinations with
>   various intel  platforms, it seems that live status register
>   doesn't work reliably on some older devices. So limit the
>   live_status check for HDMI detection, only for platforms
>   from gen7 onwards.
> 
> Fixes: 237ed86c693d ("drm/i915: Check live status before reading edid")
> Cc: stable@vger.kernel.org # v4.4
> 
> V2: restrict faking live_status to certain platforms
> V3: (Ville)
>    - keep the debug message for !live_status case
>    - fix indentation of comment
>    - remove "warning" from the debug message
> 
>     (Jani)
>    - Change format of fix details in the commit message
> 
> Suggested-by: Ville Syrjala <ville.syrjala@linux.intel.com>
> Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>

Pushed to dinq. Thanks for the patch.

> ---
>  drivers/gpu/drm/i915/intel_hdmi.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> index b199ede..2cdab73 100644
> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> @@ -1412,8 +1412,16 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
>  				hdmi_to_dig_port(intel_hdmi));
>  	}
>  
> -	if (!live_status)
> -		DRM_DEBUG_KMS("Live status not up!");
> +	if (!live_status) {
> +		DRM_DEBUG_KMS("HDMI live status down\n");
> +		/*
> +		 * Live status register is not reliable on all intel platforms.
> +		 * So consider live_status only for certain platforms, for
> +		 * others, read EDID to determine presence of sink.
> +		 */
> +		if (INTEL_INFO(dev_priv)->gen < 7 || IS_IVYBRIDGE(dev_priv))
> +			live_status = true;
> +	}
>  
>  	intel_hdmi_unset_edid(connector);
>  
> -- 
> 1.9.1
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index b199ede..2cdab73 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1412,8 +1412,16 @@  intel_hdmi_detect(struct drm_connector *connector, bool force)
 				hdmi_to_dig_port(intel_hdmi));
 	}
 
-	if (!live_status)
-		DRM_DEBUG_KMS("Live status not up!");
+	if (!live_status) {
+		DRM_DEBUG_KMS("HDMI live status down\n");
+		/*
+		 * Live status register is not reliable on all intel platforms.
+		 * So consider live_status only for certain platforms, for
+		 * others, read EDID to determine presence of sink.
+		 */
+		if (INTEL_INFO(dev_priv)->gen < 7 || IS_IVYBRIDGE(dev_priv))
+			live_status = true;
+	}
 
 	intel_hdmi_unset_edid(connector);