From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: Bug/Patch : resolved i830 black screen Date: Tue, 7 Jan 2014 15:53:12 +0200 Message-ID: <20140107135312.GB4800@intel.com> References: <52C9D322.7020304@math.tu-berlin.de> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 816CBFA432 for ; Tue, 7 Jan 2014 05:53:16 -0800 (PST) Content-Disposition: inline In-Reply-To: <52C9D322.7020304@math.tu-berlin.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: Thomas Richter Cc: Daniel Vetter , intel-gfx List-Id: intel-gfx@lists.freedesktop.org On Sun, Jan 05, 2014 at 10:48:18PM +0100, Thomas Richter wrote: > Dear intel-experts, > = > a while ago I reported that the latest kernel from intel-drm-nightly = > broke operations on i830 completely. In the meantime, > I found the reason. The trouble is in intel_crtcl_init(): > = > static void intel_crtc_init(struct drm_device *dev, int pipe) > { > = > .... > = > /* > * On gen2/3 only plane A can do fbc, but the panel fitter and lvds = > port > * is hooked to plane B. Hence we want plane A feeding pipe B. > */ > intel_crtc->pipe =3D pipe; > intel_crtc->plane =3D pipe; > if (IS_MOBILE(dev) && IS_GEN3(dev)) { > DRM_DEBUG_KMS("swapping pipes & planes for FBC\n"); > intel_crtc->plane =3D !pipe; > } > = > The new code has here the condition "IS_MOBILE(dev) && = > INTEL_INFO(dev)->gen < 4", which however, gives a nonworking > display on my Fujitsu-Siemens. Apparently, this swap is not correct. It = > might do the right thing on gen3 (I do not have a > gen3-based system so I cannot verify), but it does not work on GEN2. The = > check (as above) conditioned on IS_GEN3() only > restores a working display on this system. I got my hands on a 830M laptop as well and found the same thing. The real issue seems to be that that pipe B must be also be enabled when moving plane B from pipe B to A, even if the plane is already disabled. As a quick fix I have a patch to limit the plane swapping to FBC capabable platforms (which 830M is not). I'll post that ASAP. > = > Two additional observations: > = > 1) Panning did not work on i830 due to an incorrect watermark setting. = > The watermark register must be at least 6 *on this specific machine*. On = > the R31, it had to be at least four. I noticed we're slightly miscalculating the plane A FIFO size, but I'm not sure that can explain the panning issues. I'll have to test it on my 830M machine at some point. > = > 2) I do not seem to need the PIPE_A workaround on this Fujitsu laptop. = > It also boots with disabling the quirk. I have not tested suspend to = > ram, but it did not work before, and it likely does not work now. = > Probably the pipe A quirk is only required for suspend to ram? Acocrding to folk lore DPLL B is somehow slaved to DPLL A, so if you want to use pipe B you need DPLL A still running. I've not found any note about this in the docs though. There are a few other DPLL related problems noted in the docs however, and I'm not sure we handle all of them properly. > = > Even without the pipe A quirk, the bios seems to keep pipe A busy. At = > least this is what I get from xrandr: > = > Screen 0: minimum 320 x 200, current 2048 x 1536, maximum 2048 x 2048 > VGA1 unknown connection (normal left inverted right x axis y axis) > 1360x768 59.8 > 1152x864 60.0 > 1024x768 60.0 > 800x600 60.3 > 640x480 59.9 > DVI1 connected 2048x1536+0+0 (normal left inverted right x axis y axis) = > 0mm x 0mm panning 2048x1536+0+0 > 1024x768 60.0* > 800x600 60.3 56.2 > 640x480 59.9 > = > Greetings and Happy New Year, > = > Thomas > = > = > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- = Ville Syrj=E4l=E4 Intel OTC