Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756714Ab1FPLtW (ORCPT ); Thu, 16 Jun 2011 07:49:22 -0400 Received: from alice.et.bocholt.fh-gelsenkirchen.de ([193.175.197.63]:41132 "EHLO alice.et.bocholt.fh-gelsenkirchen.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756300Ab1FPLtT (ORCPT ); Thu, 16 Jun 2011 07:49:19 -0400 X-DKIM: Sendmail DKIM Filter v2.8.3 alice.et.bocholt.fh-gelsenkirchen.de p5GBnC7R029206 From: Dirk Gouders To: Jesse Barnes Cc: linux-kernel@vger.kernel.org, Chris Wilson Subject: Re: [2.6.39] drm/i915: blank screen on Lenovo Ideapad U160 In-Reply-To: (Dirk Gouders's message of "Thu, 16 Jun 2011 09:38:05 +0200") References: <20110615115903.685acba0@jbarnes-desktop> <20110615144132.074167f3@jbarnes-desktop> <20110615150737.79cd5de7@jbarnes-desktop> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) Date: Thu, 16 Jun 2011 13:49:11 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Greylist: Sender succeeded STARTTLS authentication, not delayed by milter-greylist-4.2.3 (alice.et.bocholt.fh-gelsenkirchen.de [192.168.0.63]); Thu, 16 Jun 2011 13:49:12 +0200 (CEST) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4642 Lines: 105 Dirk Gouders writes: > Jesse Barnes writes: > >> On Thu, 16 Jun 2011 00:03:38 +0200 >> Dirk Gouders wrote: >> >>> Jesse Barnes writes: >>> >>> > Oh is this not an LVDS panel? I'm curious which of the port disables >>> > is at fault in your config then. If you have an eDP panel, it would >>> > likely be the PCH_DP_D write. It could be a side effect of the >>> > PANEL_UNLOCK_REGS write as well though, can you try commenting each of >>> > those out? >>> >>> Yes, you are right. Commenting out a single line helps: >>> >>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c >>> index 81a9059..ed95cbf 100644 >>> --- a/drivers/gpu/drm/i915/intel_display.c >>> +++ b/drivers/gpu/drm/i915/intel_display.c >>> @@ -1356,7 +1356,7 @@ static void intel_disable_pch_ports(struct drm_i915_private *dev_priv, >>> u32 reg, val; >>> >>> val = I915_READ(PCH_PP_CONTROL); >>> - I915_WRITE(PCH_PP_CONTROL, val | PANEL_UNLOCK_REGS); >>> + //I915_WRITE(PCH_PP_CONTROL, val | PANEL_UNLOCK_REGS); >>> >>> disable_pch_dp(dev_priv, pipe, PCH_DP_B); >>> disable_pch_dp(dev_priv, pipe, PCH_DP_C); >> >> Ok interesting, that means one of the locked regs we're trying to write >> later is the real culprit for this issue... those include the LVDS reg >> and the panel timing regs. I'll see if I can figure out which one >> might be the problem. > > Thanks a lot for your help. > > Perhaps this information is helpful: with the above change, a trace is > generated during boot: > > ------------[ cut here ]------------ > WARNING: at drivers/gpu/drm/i915/intel_display.c:1020 ironlake_crtc_disable+0x65 > 4/0x124c() > Hardware name: 08946MG > PCH LVDS enabled on transcoder A, should be disabled > Modules linked in: > Pid: 1, comm: swapper Not tainted 3.0.0-rc3-00055-gada9c93-dirty #6 > Call Trace: > [] ? warn_slowpath_common+0x78/0x8c > [] ? warn_slowpath_fmt+0x45/0x4a > [] ? ironlake_crtc_disable+0x654/0x124c > [] ? intel_panel_set_backlight+0x3e/0x2b7 > [] ? intel_crtc_dpms+0x38/0xfd > [] ? intel_crtc_disable+0x1a/0x4f > [] ? drm_helper_disable_unused_functions+0xd0/0xfb > [] ? intel_modeset_init+0x1500/0x15c0 > [] ? i915_driver_load+0xc0d/0x13d9 > [] ? drm_get_minor+0x22b/0x288 > [] ? drm_get_pci_dev+0x149/0x253 > [] ? _raw_spin_lock_irqsave+0x16/0x34 > [] ? local_pci_probe+0x49/0x95 > [] ? pci_device_probe+0xc4/0xf3 > [] ? driver_sysfs_add+0x66/0x8d > [] ? driver_probe_device+0xa8/0x138 > [] ? __driver_attach+0x4f/0x6f > [] ? driver_probe_device+0x138/0x138 > [] ? bus_for_each_dev+0x47/0x72 > [] ? bus_add_driver+0xae/0x1fe > [] ? drm_core_init+0x121/0x121 > [] ? driver_register+0x8d/0xf5 > [] ? drm_core_init+0x121/0x121 > [] ? __pci_register_driver+0x50/0xbb > [] ? drm_core_init+0x121/0x121 > [] ? do_one_initcall+0x78/0x12b > [] ? kernel_init+0xa8/0x126 > [] ? kernel_thread_helper+0x4/0x10 > [] ? start_kernel+0x337/0x337 > [] ? gs_change+0xb/0xb > ---[ end trace bb2314f7f28ba213 ]--- Some redundant information, but if I change one line at another place in the i915 code (whithout the above modification) the result is more satisfactory on my machine, because in that case the display even works after I close and reopen the lid: diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c index 927442a..ebb67ae 100644 --- a/drivers/gpu/drm/i915/intel_bios.c +++ b/drivers/gpu/drm/i915/intel_bios.c @@ -267,7 +267,7 @@ static int intel_bios_ssc_frequency(struct drm_device *dev, case 4: return alternate ? 100 : 96; default: - return alternate ? 100 : 120; + return alternate ? 120 : 100; } } Dirk -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/