Bug 93915 - [BXT-P/ APL] xrandr shows DP panel as disconnect after resume from S3
Summary: [BXT-P/ APL] xrandr shows DP panel as disconnect after resume from S3
Status: CLOSED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Matt Roper
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-01-28 23:05 UTC by Humberto Israel Perez Rodriguez
Modified: 2017-07-24 22:43 UTC (History)
4 users (show)

See Also:
i915 platform: BXT
i915 features: display/DP


Attachments
dmesg.log (1.86 MB, text/plain)
2016-01-28 23:05 UTC, Humberto Israel Perez Rodriguez
no flags Details
xrandr.log (4.59 KB, text/plain)
2016-01-28 23:06 UTC, Humberto Israel Perez Rodriguez
no flags Details

Description Humberto Israel Perez Rodriguez 2016-01-28 23:05:40 UTC
Created attachment 121373 [details]
dmesg.log

System environment
---------------------------
Panel used as 4K : Asus 28" LED-Lit 4K monitor-PB287Q
BXT-P : CPU QDF QKG2
KSC : 1.06
BIOS : APLK_IFWI_X64_R_2016_02_4_00 (119.10)
Cores : 4
Microcode Revision : 9002100A
Processor : Intel (R) Genuinen processor
Speed : 1200 Mhz
BXT SOC : A0
GOP : 10.0.1022
CPU Flavor : APL RVP 1A (01)
FAB ID : FAB1
BOAD ID : APL RVP 1A (01)
Total Memory : 8GB


Software configuration
-----------------------------
OS : Ubuntu 15.10 x86_64
kernel : drm-intel-nightly

commit 8fe9e785ae04fa7c37f7935cff12d62e38054b60
Author: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Date:   Thu Jan 21 11:03:06 2016 +0000
drm-intel-nightly: 2016y-01m-21d-11h-02m-42s UTC integration manifest

--> Component : drm 
url : http://cgit.freedesktop.org/mesa/drm 
tag : libdrm-2.4.66-2-ge342c0f 
commit : e342c0f 
author : Ville Syrjälä <ville.syrjala@linux.intel.com> 
age : 6 weeks ago 
--> Component : mesa 
url : http://cgit.freedesktop.org/mesa/mesa 
tag : mesa-11.0.8 
commit : 261daab 
author : Emil Velikov <emil.velikov@collabora.com> 
age : 5 weeks ago 
--> Component : xf86-video-intel 
url : http://cgit.freedesktop.org/xorg/driver/xf86-video-intel 
tag : 2.99.917 
commit : baec802 
author : Chris Wilson <chris@chris-wilson.co.uk> 
age : 1 year 1 month ago 
--> Component : libva 
url : http://cgit.freedesktop.org/libva/ 
tag : libva-1.6.1-34-gcb418f6 
commit : cb418f6 
author : Lim Siew Hoon <siew.hoon.lim@intel.com> 
age : 3 weeks ago 
--> Component : vaapi (intel-driver) 
url : http://cgit.freedesktop.org/vaapi/intel-driver 
tag : 1.6.1-88-g2110b3a 
commit : 2110b3a 
author : peng.chen <peng.c.chen@intel.com> 
age : 13 days ago 
--> Component : cairo 
url : http://cgit.freedesktop.org/cairo 
tag : 1.15.2 
commit : db8a7f1 
author : Bryce Harrington <bryce@osg.samsung.com> 
age : 7 weeks ago 
--> Component : xserver 
url : http://cgit.freedesktop.org/xorg/xserver 
tag : xorg-server-1.18.0 
commit : 43fb888 
author : Adam Jackson <ajax@redhat.com> 
age : 3 months ago

Regresion
--------------
not sure

Bug detailed description
-------------------------------
After resume from S3 state with DP connected, xrandr shows DP as disconnected instead connected and the image on DP disappears

Steps to reproduce
-------------------------
1-Connect DP panel to BXT-P system and type xrandr to see how it recognizes DP panel
2-Go to S3 state with the command :
# echo mem > /sys/power/state
3-Wait for 30 seconds
4-Resume from S3 state by keyboard or power bottom
5-type xrandr

The failure is seen in step 5

Expected result
--------------------
After resume from S3 DP panel will shows in xrandr and the image as well

Actual results
-----------------
After resume from S3 state with DP connected, xrandr shows DP as disconnected instead connected and the image on DP disappears


Additional info
------------------
grub options :
 
acpi_enforce_resources=lax initcall_debug maxcpus=1 no_console_suspend log_buf_len=4M ignore_loglevel i915.enable_rc6=0 drm.debug=0x1e

Bios options :

1- Device Manager > System Setup > CPU Configuration > CPU Power Management > Max Package C State "S0ix default" to "C0"
2- Device Manager > System Setup > CPU Configuration > CPU Power Management > Max Core C State "Fused value default" to "Core C6"

Attachment
---------------
dmesg.log
xrandr.log
Comment 1 Humberto Israel Perez Rodriguez 2016-01-28 23:06:18 UTC
Created attachment 121374 [details]
xrandr.log
Comment 2 Matt Roper 2016-02-04 00:51:37 UTC
(In reply to Humberto Israel Perez Rodriguez from comment #1)
> Created attachment 121374 [details]
> xrandr.log

BXT has an 'HPD sense invert' bit in the HOTPLUG_CTL register that causes display detection to be inverted; that value needs to be saved and restored across suspend/resume.  This patch from Bob Paauwe should solve the problem here:

http://patchwork.freedesktop.org/patch/72566/
Comment 3 cprigent 2016-03-27 12:44:32 UTC
Hi Humberto,
Could check with the patch?
Thanks
Comment 4 Humberto Israel Perez Rodriguez 2016-04-05 15:34:01 UTC
After test with the patch from @Matt Roper this issue is gone

kernel information :
===================
commit f5d413cccefa1f93d64c34f357151d42add63a84
Author: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Date:   Thu Mar 24 14:35:16 2016 +0000

    drm-intel-nightly: 2016y-03m-24d-14h-34m-29s UTC integration manifest
Comment 5 cprigent 2016-04-05 17:08:38 UTC
Matt,
Could you add a comment when the patch is integrated. Then we will check again.
Comment 6 Matt Roper 2016-04-05 17:33:09 UTC
(In reply to cprigent from comment #5)
> Matt,
> Could you add a comment when the patch is integrated. Then we will check
> again.

This patch probably won't be accepted upstream since the review feedback was that we should read the value from VBT rather than saving/restoring it.  I believe someone from VPG (Sivakumar?) is working on some patches for that.

The VBT solution won't work on embedded platforms that lack any kind of firmware that can provide a VBT, but it should work in most other cases.
Comment 7 Imre Deak 2016-04-05 17:57:58 UTC
(In reply to Matt Roper from comment #6)
> (In reply to cprigent from comment #5)
> > Matt,
> > Could you add a comment when the patch is integrated. Then we will check
> > again.
> 
> This patch probably won't be accepted upstream since the review feedback was
> that we should read the value from VBT rather than saving/restoring it.  I
> believe someone from VPG (Sivakumar?) is working on some patches for that.
> 
> The VBT solution won't work on embedded platforms that lack any kind of
> firmware that can provide a VBT, but it should work in most other cases.

Would it be possible to read out the register during booting and program it after resume during hpd setup time accordingly? That could be still overwritten  by any VBT settings.
Comment 8 Jani Nikula 2016-04-06 11:35:31 UTC
(In reply to Matt Roper from comment #6)
> (In reply to cprigent from comment #5)
> > Matt,
> > Could you add a comment when the patch is integrated. Then we will check
> > again.
> 
> This patch probably won't be accepted upstream since the review feedback was
> that we should read the value from VBT rather than saving/restoring it.  I
> believe someone from VPG (Sivakumar?) is working on some patches for that.
> 
> The VBT solution won't work on embedded platforms that lack any kind of
> firmware that can provide a VBT, but it should work in most other cases.

Pushed the VBT solution to dinq as

commit d252bf68b75792108ae2821c3a6e1cdc58e88cb9
Author: Shubhangi Shrivastava <shubhangi.shrivastava@intel.com>
Date:   Thu Mar 31 16:11:47 2016 +0530

    drm/i915: Set invert bit for hpd based on VBT

to make progress.

I'm closing this one as fixed, please file another bug about the non-VBT issue.

---

I've been slowly pushing towards abstracting VBT access from the rest of the driver to hide all the gory details. For example, the above commit adds a function to query the invert status, instead of directly accessing the VBT data.

We already have a function init_vbt_defaults() that we call in intel_bios_init() regardless of whether VBT is present. In this case, I could imagine adding a function to fill in more of dev_priv->vbt with sensible data when VBT is not present. Alternatively, the accessor functions could check if VBT was present or not and provide the data from somewhere else.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.