diff mbox

Fwd: Re: Macbook Pro Retina display problems

Message ID 20120806193125.GA25373@phenom.ffwll.local (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter Aug. 6, 2012, 7:31 p.m. UTC
On Mon, Aug 06, 2012 at 11:40:36PM +1000, Francois Rigaut wrote:
> Daniel,
> 
> On Mon, Aug 6, 2012 at 7:17 PM, Daniel Vetter <daniel@ffwll.ch
> <mailto:daniel@ffwll.ch>> wrote:
> 
>    On Mon, Aug 6, 2012 at 10:59 AM, Francois Rigaut <frigaut@gmail.com
>    <mailto:frigaut@gmail.com>> wrote:
>     > Daniel,
>     >
>     >
>     > my bad for the dmesg. It's there:
>     >
>    http://maumae.net/retina/intel_corrupted_drm_debug/dmesg_intel_corrupted_drm_debug
>     >
>     > I took pictures with a camera, and uploaded them at
>     > Small 800x600 versions:
>     >
>    http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg
>     >
>    http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_right_small.jpg
>     >
>    <http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg>
>     >
>    http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_whole_screen_small.jpg
>     >
>    <http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg>
>     > full resolution versions:
>     >
>    http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left.jpg
>     >
>    <http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg>
>     >
>    http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_right.jpg
>     >
>    <http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg>
>     >
>    http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_whole_screen.jpg
>     >
>    <http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg>
>     >
>     > Otherwise, the display works and behave normally (it's not
>    static, doesn't
>     > flicker). I can interact normally with the GUI element, display
>    stuff, it's
>     > accelerated (I run compiz and window wiggle normally, I can play
>    videos, I
>     > have control of backlight, etc).
> 
>    Wow, that's a pretty impressive light-show ;-) Are the wrong colors
>    always wrong in this manner, or does it change from boot to boot?
> 
> 
> everything (color and sync) are always wrong in the same manner.
> 
> the last git version of intel_reg_dumper gives me:
> with i915 loaded:
> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded
> with i915.die=1:
> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_not_loaded

Can you please try the below quick hack. If that doesn't cut it, I need to
improve the reg_dumper tool first, the efi firmware sets things up on pipe
C, which we currently don't dump.
-Daniel

Mail: daniel@ffwll.ch
Mobile: +41 (0)79 365 57 48

Comments

Francois Rigaut Aug. 7, 2012, 8:08 a.m. UTC | #1
Daniel,

nope, the hack didn't succeed. No apparent change.
Francois

On Tue 07 Aug 2012 05:31:25 EST, Daniel Vetter wrote:
> On Mon, Aug 06, 2012 at 11:40:36PM +1000, Francois Rigaut wrote:
>> Daniel,
>>
>> On Mon, Aug 6, 2012 at 7:17 PM, Daniel Vetter <daniel@ffwll.ch
>> <mailto:daniel@ffwll.ch>> wrote:
>>
>>     On Mon, Aug 6, 2012 at 10:59 AM, Francois Rigaut <frigaut@gmail.com
>>     <mailto:frigaut@gmail.com>> wrote:
>>      > Daniel,
>>      >
>>      >
>>      > my bad for the dmesg. It's there:
>>      >
>>     http://maumae.net/retina/intel_corrupted_drm_debug/dmesg_intel_corrupted_drm_debug
>>      >
>>      > I took pictures with a camera, and uploaded them at
>>      > Small 800x600 versions:
>>      >
>>     http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg
>>      >
>>     http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_right_small.jpg
>>      >
>>     <http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg>
>>      >
>>     http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_whole_screen_small.jpg
>>      >
>>     <http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg>
>>      > full resolution versions:
>>      >
>>     http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left.jpg
>>      >
>>     <http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg>
>>      >
>>     http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_right.jpg
>>      >
>>     <http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg>
>>      >
>>     http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_whole_screen.jpg
>>      >
>>     <http://maumae.net/retina/intel_corrupted_drm_debug/intel_corrupted_upper_left_small.jpg>
>>      >
>>      > Otherwise, the display works and behave normally (it's not
>>     static, doesn't
>>      > flicker). I can interact normally with the GUI element, display
>>     stuff, it's
>>      > accelerated (I run compiz and window wiggle normally, I can play
>>     videos, I
>>      > have control of backlight, etc).
>>
>>     Wow, that's a pretty impressive light-show ;-) Are the wrong colors
>>     always wrong in this manner, or does it change from boot to boot?
>>
>>
>> everything (color and sync) are always wrong in the same manner.
>>
>> the last git version of intel_reg_dumper gives me:
>> with i915 loaded:
>> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded
>> with i915.die=1:
>> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_not_loaded
>
> Can you please try the below quick hack. If that doesn't cut it, I need to
> improve the reg_dumper tool first, the efi firmware sets things up on pipe
> C, which we currently don't dump.
> -Daniel
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 0a56b9a..d7462da 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -920,9 +920,9 @@ intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode,
>   	/* Split out the IBX/CPU vs CPT settings */
>
>   	if (is_cpu_edp(intel_dp) && IS_GEN7(dev)) {
> -		if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
> +		//if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
>   			intel_dp->DP |= DP_SYNC_HS_HIGH;
> -		if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC)
> +		//if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC)
>   			intel_dp->DP |= DP_SYNC_VS_HIGH;
>   		intel_dp->DP |= DP_LINK_TRAIN_OFF_CPT;
Daniel Vetter Aug. 7, 2012, 12:53 p.m. UTC | #2
On Tue, Aug 07, 2012 at 06:08:51PM +1000, Francois Rigaut wrote:
> Daniel,
> 
> nope, the hack didn't succeed. No apparent change.

Ok, I've updated the reg_dumper to also dump the registers for pipe C. Can
you please update your intel-gpu-tools checkout and then grab a new
register dump for both i915 loaded and not loaded?

To make comparing easier, please switch the panel to pipe C when i915 is
loaded with

$ xrandr --output eDP1 --auto --crtc 2

that way the register dumps are much easier to compare.

Thanks, Daniel
Francois Rigaut Aug. 7, 2012, 2:17 p.m. UTC | #3
Daniel,

ok, updated intel-gpu-tools and dumped the various config.
Unfortunately, X froze when I tried the to switch to pipe C (--crtc 2). 
I have three dumps with the various config:

http://maumae.net/retina/intel_corrupted_drm_debug/ird_inteldie << 
that's with i915.die=1

http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_notC_inX 
 << that's with i915 loaded, within X, and not switched to pipe C (had 
restarted X after the freeze mentionned above)

http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_from_fb 
 << that with i915 loaded, switch to pipe C (probably not working) and 
done in a console (the freeze didn't affect the keyboard so I was able 
to switch VT). Probably not very useful.

Hope that helps,
Thanks,
Francois

On Tue 07 Aug 2012 22:53:42 EST, Daniel Vetter wrote:
> On Tue, Aug 07, 2012 at 06:08:51PM +1000, Francois Rigaut wrote:
>> Daniel,
>>
>> nope, the hack didn't succeed. No apparent change.
>
> Ok, I've updated the reg_dumper to also dump the registers for pipe C. Can
> you please update your intel-gpu-tools checkout and then grab a new
> register dump for both i915 loaded and not loaded?
>
> To make comparing easier, please switch the panel to pipe C when i915 is
> loaded with
>
> $ xrandr --output eDP1 --auto --crtc 2
>
> that way the register dumps are much easier to compare.
>
> Thanks, Daniel
Daniel Vetter Aug. 7, 2012, 3:19 p.m. UTC | #4
On Wed, Aug 08, 2012 at 12:17:50AM +1000, Francois Rigaut wrote:
> Daniel,
> 
> ok, updated intel-gpu-tools and dumped the various config.
> Unfortunately, X froze when I tried the to switch to pipe C (--crtc
> 2). I have three dumps with the various config:
> 
> http://maumae.net/retina/intel_corrupted_drm_debug/ird_inteldie <<
> that's with i915.die=1
> 
> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_notC_inX
> << that's with i915 loaded, within X, and not switched to pipe C
> (had restarted X after the freeze mentionned above)
> 
> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_from_fb
> << that with i915 loaded, switch to pipe C (probably not working)
> and done in a console (the freeze didn't affect the keyboard so I
> was able to switch VT). Probably not very useful.

Hm, is there anything in dmesg/Xorg.log about this freeze when you switch
to pipe C? Can you try to connect gbd to X and grab a backtrace to figure
out where it is stuck (note: don't vt-switch when gdb is connected to X,
it sends a signal to X, which gdb intercepts and then stops X,
resulting in a hung vt-switch ...)?
-Daniel
Daniel Vetter Aug. 7, 2012, 4:19 p.m. UTC | #5
On Wed, Aug 08, 2012 at 12:17:50AM +1000, Francois Rigaut wrote:
> Daniel,
> 
> ok, updated intel-gpu-tools and dumped the various config.
> Unfortunately, X froze when I tried the to switch to pipe C (--crtc
> 2). I have three dumps with the various config:
> 
> http://maumae.net/retina/intel_corrupted_drm_debug/ird_inteldie <<
> that's with i915.die=1
> 
> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_notC_inX
> << that's with i915 loaded, within X, and not switched to pipe C
> (had restarted X after the freeze mentionned above)
> 
> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_from_fb
> << that with i915 loaded, switch to pipe C (probably not working)
> and done in a console (the freeze didn't affect the keyboard so I
> was able to switch VT). Probably not very useful.

Pardon me but I've fumbled the pipe C reg dumping patch. Can you please
regrab with an update intel-gpu-tools (now it should work)?

Thanks, Daniel
Francois Rigaut Aug. 8, 2012, 12:35 p.m. UTC | #6
Daniel,

On 08/08/12 02:19, Daniel Vetter wrote:
> On Wed, Aug 08, 2012 at 12:17:50AM +1000, Francois Rigaut wrote:
>> Daniel,
>>
>> ok, updated intel-gpu-tools and dumped the various config.
>> Unfortunately, X froze when I tried the to switch to pipe C (--crtc
>> 2). I have three dumps with the various config:
>>
>> http://maumae.net/retina/intel_corrupted_drm_debug/ird_inteldie <<
>> that's with i915.die=1
>>
>> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_notC_inX
>> << that's with i915 loaded, within X, and not switched to pipe C
>> (had restarted X after the freeze mentionned above)
>>
>> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_from_fb
>> << that with i915 loaded, switch to pipe C (probably not working)
>> and done in a console (the freeze didn't affect the keyboard so I
>> was able to switch VT). Probably not very useful.
> Pardon me but I've fumbled the pipe C reg dumping patch. Can you please
> regrab with an update intel-gpu-tools (now it should work)?
no worries. I have regrab the reg_dumps (intel-gpu-tools updated and 
re-built) with the same restrictions (xrandr --crtc2 freezes X so I did 
not attempt it):

http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_inX_take2
i915 loaded, reg_dump done within X, no-pipeC.

http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_not_loaded_take2

obtained from the console with i915 not loaded (i915.die=1).

Let me know. Thanks,
Francois


>
> Thanks, Daniel
Daniel Vetter Aug. 8, 2012, 8:07 p.m. UTC | #7
On Wed, Aug 08, 2012 at 10:35:53PM +1000, Francois Rigaut wrote:
> Daniel,
> 
> On 08/08/12 02:19, Daniel Vetter wrote:
> >On Wed, Aug 08, 2012 at 12:17:50AM +1000, Francois Rigaut wrote:
> >>Daniel,
> >>
> >>ok, updated intel-gpu-tools and dumped the various config.
> >>Unfortunately, X froze when I tried the to switch to pipe C (--crtc
> >>2). I have three dumps with the various config:
> >>
> >>http://maumae.net/retina/intel_corrupted_drm_debug/ird_inteldie <<
> >>that's with i915.die=1
> >>
> >>http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_notC_inX
> >><< that's with i915 loaded, within X, and not switched to pipe C
> >>(had restarted X after the freeze mentionned above)
> >>
> >>http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_from_fb
> >><< that with i915 loaded, switch to pipe C (probably not working)
> >>and done in a console (the freeze didn't affect the keyboard so I
> >>was able to switch VT). Probably not very useful.
> >Pardon me but I've fumbled the pipe C reg dumping patch. Can you please
> >regrab with an update intel-gpu-tools (now it should work)?
> no worries. I have regrab the reg_dumps (intel-gpu-tools updated and
> re-built) with the same restrictions (xrandr --crtc2 freezes X so I
> did not attempt it):
> 
> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_loaded_inX_take2
> i915 loaded, reg_dump done within X, no-pipeC.
> 
> http://maumae.net/retina/intel_corrupted_drm_debug/ird_i915_not_loaded_take2
> 
> obtained from the console with i915 not loaded (i915.die=1).

Sorry to pester you again, but this time around I've forgotten to actually
push out the new code, it's still without pipe C :( "tools/reg_dumper:
really dump pipe C regs" is the patch you need. Can you please re-grab the
dumps?

Sorry, Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 0a56b9a..d7462da 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -920,9 +920,9 @@  intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode,
 	/* Split out the IBX/CPU vs CPT settings */
 
 	if (is_cpu_edp(intel_dp) && IS_GEN7(dev)) {
-		if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
+		//if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
 			intel_dp->DP |= DP_SYNC_HS_HIGH;
-		if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC)
+		//if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC)
 			intel_dp->DP |= DP_SYNC_VS_HIGH;
 		intel_dp->DP |= DP_LINK_TRAIN_OFF_CPT;
-- 
Daniel Vetter