On Thu, Jun 07, 2012 at 09:26:23AM +0200, Daniel Vetter wrote: > On Thu, Jun 07, 2012 at 09:21:20AM +0200, Daniel Vetter wrote: > > On Wed, May 30, 2012 at 08:39:13AM -0700, Linus Torvalds wrote: > > > On Wed, May 30, 2012 at 1:27 AM, Daniel Vetter <daniel@xxxxxxxx> wrote: > > > > > > > > Ok, Chris couldn't reproduce this on his mba. Can you please boot with > > > > drm.debug=0xe, reproduce the noise and then attach the full dmesg? > > > > > > Hmm. Now *I* can't reproduce it either. > > > > > > I have updated my system in the meantime, so maybe this is related to > > > that. However, I suspect it's more likely that it's some race > > > condition, because when I got it, I got a *lot* of it, but they were > > > all very tightly bunched together: > > > > > > [ 1588.996413] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1588.996650] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1589.000983] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1589.001225] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1589.005975] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1589.006218] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1589.010980] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1589.011224] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1589.015976] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1589.016211] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1589.020986] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > [ 1589.021232] WARNING: at drivers/gpu/drm/i915/intel_dp.c:350 > > > intel_dp_check_edp+0x5d/0xb0() > > > > > > ie that's 12 of those warnings (each of them with that huge backtrace > > > etc), but they are all within 0.03 seconds of each other. So I suspect > > > it needs to hit some particular timing window, and I was just > > > (un)lucky. > > > > > > Because when I try it now with DRM debugging, I can't hit it. And just > > > to make sure, I re-did the test without debugging too (in case the > > > debugging would have changed timing), but can't reproduce it that way > > > either. > > > > Meh, I've been totally blind. Note to self: Next time around actually look > > at the backtrace. And I dunno how that escaped our dear QA that long ... > > Even more meh, this patch might actually work a bit better. > > /me doesn't have an edp panel to test this v3 is tested by our QA and hopefully works. I'll send it to Dave for -fixes in a few days, attached below just in case. Please yell if this doesn't fix your edp dmesg spam. Thanks, Daniel --- >From 2b64c5549c000a1c552b8c617129569e3784336f Mon Sep 17 00:00:00 2001 From: Daniel Vetter <daniel.vetter@xxxxxxxx> Date: Thu, 7 Jun 2012 08:59:49 +0200 Subject: [PATCH] drm/i915: enable edp vdd in intel_dp_detect We need this for dp aux communication. This issue can fill the dmesg with WARN spam when the panel is disable (e.g. while reconfiguring the mode or while resuming). v2: Actually enable edp vdd early enough. I've missed one dp aux channel thingy ... v3: We also enable/disable vdd in get_edid, which is called from within ->detect if a monitor is connected. But because we do some more dp aux transfers afterwards, vdd is actually off and we hit the WARN again. Hence move vdd enabling/disabling out of get_edid into the callsite. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50808 Reported-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Bugreport: http://permalink.gmane.org/gmane.comp.video.dri.devel/69695 Tested-by: Yang Guang <guang.a.yang@xxxxxxxxx> Cc: stable@xxxxxxxxxxxxxxx Signed-Off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> --- drivers/gpu/drm/i915/intel_dp.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 296cfc2..941edbf 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -2114,13 +2114,7 @@ g4x_dp_detect(struct intel_dp *intel_dp) static struct edid * intel_dp_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter) { - struct intel_dp *intel_dp = intel_attached_dp(connector); - struct edid *edid; - - ironlake_edp_panel_vdd_on(intel_dp); - edid = drm_get_edid(connector, adapter); - ironlake_edp_panel_vdd_off(intel_dp, false); - return edid; + return drm_get_edid(connector, adapter); } static int @@ -2152,6 +2146,7 @@ intel_dp_detect(struct drm_connector *connector, bool force) intel_dp->has_audio = false; + ironlake_edp_panel_vdd_on(intel_dp); if (HAS_PCH_SPLIT(dev)) status = ironlake_dp_detect(intel_dp); else @@ -2162,8 +2157,10 @@ intel_dp_detect(struct drm_connector *connector, bool force) intel_dp->dpcd[3], intel_dp->dpcd[4], intel_dp->dpcd[5], intel_dp->dpcd[6], intel_dp->dpcd[7]); - if (status != connector_status_connected) + if (status != connector_status_connected) { + ironlake_edp_panel_vdd_off(intel_dp, false); return status; + } intel_dp_probe_oui(intel_dp); @@ -2177,6 +2174,7 @@ intel_dp_detect(struct drm_connector *connector, bool force) kfree(edid); } } + ironlake_edp_panel_vdd_off(intel_dp, false); return connector_status_connected; } @@ -2235,6 +2233,7 @@ intel_dp_detect_audio(struct drm_connector *connector) struct edid *edid; bool has_audio = false; + ironlake_edp_panel_vdd_on(intel_dp); edid = intel_dp_get_edid(connector, &intel_dp->adapter); if (edid) { has_audio = drm_detect_monitor_audio(edid); @@ -2242,6 +2241,7 @@ intel_dp_detect_audio(struct drm_connector *connector) connector->display_info.raw_edid = NULL; kfree(edid); } + ironlake_edp_panel_vdd_off(intel_dp, false); return has_audio; } -- Daniel Vetter Mail: daniel@xxxxxxxx Mobile: +41 (0)79 365 57 48 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel