On Mon, Feb 22, 2016 at 7:13 PM, Andy Lutomirski luto@amacapital.net wrote:
On Wed, Feb 17, 2016 at 5:36 PM, Andy Lutomirski luto@amacapital.net wrote:
On Wed, Feb 17, 2016 at 8:18 AM, Daniel Vetter daniel@ffwll.ch wrote:
On Tue, Feb 16, 2016 at 09:26:35AM -0800, Andy Lutomirski wrote:
On Tue, Feb 16, 2016 at 9:12 AM, Andy Lutomirski luto@amacapital.net wrote:
On Tue, Feb 16, 2016 at 8:12 AM, Daniel Vetter daniel@ffwll.ch wrote:
On Mon, Feb 15, 2016 at 06:58:33AM -0800, Andy Lutomirski wrote: > On Sun, Feb 14, 2016 at 6:59 PM, Andy Lutomirski luto@kernel.org wrote: > > Hi- > > > > On 4.5-rc3 on a Dell XPS 13 9350 (Skylake i915, no nvidia on this > > model), shortly after resume, I saw a single black flash on the > > screen. The log said: > > > > [Feb13 07:05] [drm:intel_cpu_fifo_underrun_irq_handler [i915]] *ERROR* > > CPU pipe A FIFO underrun > > > > I haven't seen this on 4.4. > > > > I'd be happy to dig up debugging info, but I don't know what would be > > useful. I have no i915 module options set. > > It's flashing quite frequently now, although I seem to get the > underrun warning only once per resume.
We shut up the warning irq source to avoid hijacking an entire cpu core ;-)
There's a fix from Matt right after 4.5-rc4 in Linus' branch. I'm hoping that should help.
Do you mean:
commit e2e407dc093f530b771ee8bf8fe1be41e3cea8b3 Author: Matt Roper matthew.d.roper@intel.com Date: Mon Feb 8 11:05:28 2016 -0800
drm/i915: Pretend cursor is always on for ILK-style WM calculations (v2)
If so, it didn't help. I'm currently doing a full rebuild just in case I messed something up, though.
Definitely not fixed. It seems to be okay after a reboot until the first suspend/resume.
This happened after resuming. Five cents says it's the root cause.
That's interesting, but doesn't ring a bell unfortunately. Can you try to attempt a bisect?
I probably can, but it's very slow. Is there a reasonably straightforward way to instrument the watermark computation to see what's going wrong? I'm reasonably confident that the bug is in the resume code or in something that only happens on resume, since I still haven't seen underruns after rebooting before suspending.
With some instrumentation applied, I got this:
[ 369.471064] skl_update_wm(crtc-0): computed update [ 369.471072] skl_update_other_pipe_wm(crtc-0): no change [ 369.471075] skl_write_wm_values... [ 369.471078] CRTC crtc-0 pipe A [ 369.471083] wm_linetime = 121 [ 369.471086] plane_wm level 0 plane 0 = 2147500036 [ 369.471090] plane_wm level 0 plane 1 = 0 [ 369.471094] plane_wm level 0 cursor = 2147500036 [ 369.471097] plane_wm level 1 plane 0 = 2147516439 [ 369.471101] plane_wm level 1 plane 1 = 0 [ 369.471104] plane_wm level 1 cursor = 2147516439 [ 369.471108] plane_wm level 2 plane 0 = 2147516448 [ 369.471111] plane_wm level 2 plane 1 = 0 [ 369.471115] plane_wm level 2 cursor = 0 [ 369.471118] plane_wm level 3 plane 0 = 2147532837 [ 369.471121] plane_wm level 3 plane 1 = 0 [ 369.471125] plane_wm level 3 cursor = 0 [ 369.471128] plane_wm level 4 plane 0 = 2147565639 [ 369.471131] plane_wm level 4 plane 1 = 0 [ 369.471135] plane_wm level 4 cursor = 0 [ 369.471138] plane_wm level 5 plane 0 = 2147582038 [ 369.471141] plane_wm level 5 plane 1 = 0 [ 369.471145] plane_wm level 5 cursor = 0 [ 369.471148] plane_wm level 6 plane 0 = 2147582044 [ 369.471151] plane_wm level 6 plane 1 = 0 [ 369.471155] plane_wm level 6 cursor = 0 [ 369.471158] plane_wm level 7 plane 0 = 2147598443 [ 369.471161] plane_wm level 7 plane 1 = 0 [ 369.471164] plane_wm level 7 cursor = 0 [ 369.471168] wm_trans plane 0 = 0 [ 369.471171] wm_trans plane 1 = 0 [ 369.471174] wm_trans cursor = 0 [ 369.471182] CRTC crtc-1 pipe B [ 369.471184] clean [ 369.471186] CRTC crtc-2 pipe C [ 369.471189] clean [ 369.471226] skl_update_wm(crtc-0): no update [ 372.068755] [drm:intel_cpu_fifo_underrun_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun [ 373.399396] skl_update_wm(crtc-0): computed update [ 373.399408] skl_update_other_pipe_wm(crtc-0): no change [ 373.399413] skl_write_wm_values... [ 373.399418] CRTC crtc-0 pipe A [ 373.399426] wm_linetime = 121 [ 373.399431] plane_wm level 0 plane 0 = 2147500036 [ 373.399438] plane_wm level 0 plane 1 = 0 [ 373.399443] plane_wm level 0 cursor = 16388 [ 373.399449] plane_wm level 1 plane 0 = 2147516439 [ 373.399455] plane_wm level 1 plane 1 = 0 [ 373.399460] plane_wm level 1 cursor = 32791 [ 373.399465] plane_wm level 2 plane 0 = 2147516448 [ 373.399471] plane_wm level 2 plane 1 = 0 [ 373.399476] plane_wm level 2 cursor = 0 [ 373.399481] plane_wm level 3 plane 0 = 2147532837 [ 373.399486] plane_wm level 3 plane 1 = 0 [ 373.399491] plane_wm level 3 cursor = 0 [ 373.399497] plane_wm level 4 plane 0 = 2147565639 [ 373.399502] plane_wm level 4 plane 1 = 0 [ 373.399557] plane_wm level 4 cursor = 0 [ 373.399562] plane_wm level 5 plane 0 = 2147582038 [ 373.399568] plane_wm level 5 plane 1 = 0 [ 373.399573] plane_wm level 5 cursor = 0 [ 373.399578] plane_wm level 6 plane 0 = 2147582044 [ 373.399591] plane_wm level 6 plane 1 = 0 [ 373.399596] plane_wm level 6 cursor = 0 [ 373.399602] plane_wm level 7 plane 0 = 2147598443 [ 373.399607] plane_wm level 7 plane 1 = 0 [ 373.399612] plane_wm level 7 cursor = 0 [ 373.399617] wm_trans plane 0 = 0 [ 373.399623] wm_trans plane 1 = 0 [ 373.399627] wm_trans cursor = 0 [ 373.399638] CRTC crtc-1 pipe B [ 373.399642] clean [ 373.399646] CRTC crtc-2 pipe C [ 373.399650] clean
The diff between those two dumps was:
--- a.txt 2016-02-22 18:56:32.613058614 -0800 +++ b.txt 2016-02-22 18:56:49.219079057 -0800 @@ -3,10 +3,10 @@ wm_linetime = 121 plane_wm level 0 plane 0 = 2147500036 plane_wm level 0 plane 1 = 0
- plane_wm level 0 cursor = 2147500036
- plane_wm level 0 cursor = 16388 plane_wm level 1 plane 0 = 2147516439 plane_wm level 1 plane 1 = 0
- plane_wm level 1 cursor = 2147516439
- plane_wm level 1 cursor = 32791 plane_wm level 2 plane 0 = 2147516448 plane_wm level 2 plane 1 = 0 plane_wm level 2 cursor = 0
The code that generated this is attached.
Is the fix from Matt that you mentioned this one:
commit e2e407dc093f530b771ee8bf8fe1be41e3cea8b3 Author: Matt Roper matthew.d.roper@intel.com Date: Mon Feb 8 11:05:28 2016 -0800
drm/i915: Pretend cursor is always on for ILK-style WM calculations (v2)
On brief inspection, it doesn't look like that patch will have any effect on Skylake.
Re-ping.
This is still broken AFAICT, and it's also not fixed in drm-intel-nightly.
dri-devel@lists.freedesktop.org