Bug 94593 - Flickering Screen on Dell XPS13 9350
Summary: Flickering Screen on Dell XPS13 9350
Status: CLOSED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: high major
Assignee: Rodrigo Vivi
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-03-17 15:01 UTC by thomas bonfort
Modified: 2017-09-13 08:55 UTC (History)
10 users (show)

See Also:
i915 platform: SKL
i915 features: display/watermark


Attachments
revert of bisected commit... (1.86 KB, text/plain)
2016-04-04 18:06 UTC, Rodrigo Vivi
no flags Details
dmesg with drm.debug on 4.4.0-18 up until first flicker (131.05 KB, text/plain)
2016-04-10 07:05 UTC, thomas bonfort
no flags Details
Xorg.0.log (24.45 KB, text/plain)
2016-04-10 07:06 UTC, thomas bonfort
no flags Details
dmesg with enable_dc=0 disable_power_well=0 , up to first flicker (131.06 KB, text/plain)
2016-04-10 07:24 UTC, thomas bonfort
no flags Details
bisect log for underrun FIFO Error (10.26 KB, text/plain)
2016-04-21 00:24 UTC, Nico Hwege
no flags Details

Description thomas bonfort 2016-03-17 15:01:04 UTC
I'm experiencing what seems to be random flickering (not related to hiding cursor as seen on #93945).

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1554613 contains my bisection of the issue.

[359d2243117a79599435141fda0047d01ef324e8] drm/i915: Update DRIVER_DATE to 20160314
from drm-intel-next still exhibits the issue
Comment 1 thomas bonfort 2016-03-17 19:55:30 UTC
I've bisected this down with relative confidence (had to mark commits from 4.3 as artificially good as the system was not usable with this older version of the kernel):

921ec285a6589cf3beb7f56a70744f75b09349f8 is the first bad commit
commit 921ec285a6589cf3beb7f56a70744f75b09349f8
Author: Rodrigo Vivi <rodrigo.vivi@intel.com>
Date:   Wed Nov 18 11:21:12 2015 -0800


Here is the full bisect log:

git bisect start '--' 'drivers/gpu/drm/i915' 'include/drm/' 'include/uapi/drm/'
# bad: [359d2243117a79599435141fda0047d01ef324e8] drm/i915: Update DRIVER_DATE to 20160314
git bisect bad 359d2243117a79599435141fda0047d01ef324e8
# good: [1cb8570bf04ab12a03c31c397a4d158f24895d9c] Linux 4.4.2
git bisect good 1cb8570bf04ab12a03c31c397a4d158f24895d9c
# good: [afd2ff9b7e1b367172f18ba7f693dfb62bdcb2dc] Linux 4.4
git bisect good afd2ff9b7e1b367172f18ba7f693dfb62bdcb2dc
# bad: [2a33d93486f247924e46b5402b8ffb43d1b9b38c] drm/i915/bios: add support for MIPI sequence block v3
git bisect bad 2a33d93486f247924e46b5402b8ffb43d1b9b38c
# bad: [013d37520af735fd55f78e33edf55cc6fb3858eb] drm/i915: Introduce bdw_{update,enable,disable}_pipe_irq()
git bisect bad 013d37520af735fd55f78e33edf55cc6fb3858eb
# good: [b1a14c6e40413f833dadc1d23b43c530f4b8e381] drm/i915: refactor stepping info retrieval
git bisect good b1a14c6e40413f833dadc1d23b43c530f4b8e381
# good: [78e0d2e3477aa3e8bdac70698ddd2aad020016d1] drm/i915: Store DVO SRCDIM register offset under intel_dvo_device
git bisect good 78e0d2e3477aa3e8bdac70698ddd2aad020016d1
# good: [a6d09186fa27dea720ddd668a814cb6e4f78d53b] drm/i915: Stuff rotation params into view union
git bisect good a6d09186fa27dea720ddd668a814cb6e4f78d53b
# good: [ca1a95334ddaf624c1b0424113fe9b8100da1614] drm/i915: Remove duplicated dpcd write on hsw_psr_enable_sink.
git bisect good ca1a95334ddaf624c1b0424113fe9b8100da1614
# bad: [9bbc8258ae5914af1986561767d971417cee7a28] drm/i915: Check for underruns after crtc disable
git bisect bad 9bbc8258ae5914af1986561767d971417cee7a28
# bad: [05eec3c2709d8966cbfcc7cd395f37889c492678] drm/i915: Remove PSR Perf Counter for SKL+
git bisect bad 05eec3c2709d8966cbfcc7cd395f37889c492678
# bad: [bb929cbc1f58c72eaf7981281dbb024ad92ef24d] drm/i915: PSR: Mask LPSP hw tracking back again.
git bisect bad bb929cbc1f58c72eaf7981281dbb024ad92ef24d
# bad: [921ec285a6589cf3beb7f56a70744f75b09349f8] drm/i915: PSR: Let's rely more on frontbuffer tracking.
git bisect bad 921ec285a6589cf3beb7f56a70744f75b09349f8
# first bad commit: [921ec285a6589cf3beb7f56a70744f75b09349f8] drm/i915: PSR: Let's rely more on frontbuffer tracking.
Comment 2 Christopher M. Penalver 2016-04-04 02:52:48 UTC
Could someone at Intel please assign this to offending commit committer Rodrigo Vivi (or request he assign himself)?

Unfortunately, bugzilla won't allow one to either assign him or CC as per error message:
Assignee:
rodrigo.vivi AT intel DOT com did not match anything 

Also, this seems strange one cannot assign him given Intel's documentation states to report here as per https://01.org/linuxgraphics/documentation/how-report-bugs , but yet bugzilla cannot reach the appropriate developer?

Despite this, increasing importance, given it's bisected, reproducible for a few folks as reported downstream, and reproducible in latest drm-intel-nightly.
Comment 3 Jani Nikula 2016-04-04 08:49:51 UTC
(In reply to Christopher M. Penalver from comment #2)
> Could someone at Intel please assign this to offending commit committer
> Rodrigo Vivi (or request he assign himself)?
> 
> Unfortunately, bugzilla won't allow one to either assign him or CC as per
> error message:
> Assignee:
> rodrigo.vivi AT intel DOT com did not match anything 

Done now, it's just that he's registered here with another email address. Writing just parts of the name will show up alternatives.
Comment 4 Rodrigo Vivi 2016-04-04 18:06:18 UTC
Created attachment 122707 [details]
revert of bisected commit...

Hi there,

First of all please accept my apologies for using different emails here and in the commits. But besides the auto-complete with only my name as Jani suggested I'm always open for direct emails.

So, there are 2 separated tests that I'd like you to to perform:

1. Apply the attached patch and let me know if the issue goes away.

2. Without applying any patch boot with i915.enable_psr=2.

Thanks,
Rodrigo.
Comment 5 thomas bonfort 2016-04-04 18:15:50 UTC
Rodrigo:
I have already tried reverting that commit (in ubuntu's mainline kernel, i.e. in their backported i915_bpo module) but the flickering still occurs.
I may have messed up my bisect: from memory, b1a14c6e40413f8 78e0d2e3477aa3e8bdac a6d09186fa27dea7 ca1a95334ddaf624c1b0424 may have been marked wrongly as "good" as at least the last two of them did not allow me boot up the computer.
I will try psr=2 and let you know.
Comment 6 thomas bonfort 2016-04-04 18:22:28 UTC
enable_psr=2 still flickers with 4.4.0-16. unable to try latest 4.4.0-17 as X doesn't start with it.

dmesg|grep i915
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-16-generic i915.enable_psr=2 i915_bpo.enable_psr=2 root=UUID=432cb01b-c9c7-4cb0-8129-5c0abadbf9f8 ro quiet splash vt.handoff=7
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-16-generic i915.enable_psr=2 i915_bpo.enable_psr=2 root=UUID=432cb01b-c9c7-4cb0-8129-5c0abadbf9f8 ro quiet splash vt.handoff=7
[    1.540320] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26)
[    1.566144] [drm] Initialized i915_bpo 1.6.0 20160214 for 0000:00:02.0 on minor 0
[    1.820091] i915_bpo 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    3.962877] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915_bpo])
[  191.798099] [drm:intel_cpu_fifo_underrun_irq_handler [i915_bpo]] *ERROR* CPU pipe A FIFO underrun
Comment 7 Rodrigo Vivi 2016-04-04 19:45:32 UTC
what about i915.enable_psr=0?
Comment 8 thomas bonfort 2016-04-05 07:28:14 UTC
4.4.0-17 (which backports i915 from 4.6.0-rc1 IIUC) flickers with enable_psr = 0, 1 and 2.
My impression after a short test is that the flickering occurs more frequently when set to 0 than 1 or 2.
Comment 9 Rodrigo Vivi 2016-04-05 16:34:33 UTC
Given it happens even with i915.enable_psr=0 I'm sure the bisect was misslead at some point.

I'm starting to suspect on Watermark.

Could you please try to apply the following series to see if it helps:
https://patchwork.freedesktop.org/patch/76098/
https://patchwork.freedesktop.org/patch/76100/
https://patchwork.freedesktop.org/patch/76099/
https://patchwork.freedesktop.org/patch/76101/
https://patchwork.freedesktop.org/patch/76094/
https://patchwork.freedesktop.org/patch/76204/
https://patchwork.freedesktop.org/patch/76207/
https://patchwork.freedesktop.org/patch/76095/

Thanks,
Rodrigo.
Comment 10 thomas bonfort 2016-04-05 18:23:19 UTC
On top of which SHA do you want me to apply these? Should I apply them all or test the one by one ?
Comment 11 Rodrigo Vivi 2016-04-05 18:26:37 UTC
All at once preferably on top of drm-intel-nightly.
In case you have conflicts just let me know that I try to prepare a repo for you.
Comment 12 thomas bonfort 2016-04-05 18:33:24 UTC
could you quickly walk me through as to how to apply these please? I know nothing about patchwork.
Comment 13 thomas bonfort 2016-04-05 18:48:50 UTC
OK, I'm applying them manually.
The 7th one is failing:

git apply -v /home/tbonfort-scratch/Downloads/7-8*
Checking patch drivers/gpu/drm/i915/i915_dma.c...
error: while searching for:
#include <linux/pm.h>
#include <linux/pm_runtime.h>
#include <linux/oom.h>


static int i915_getparam(struct drm_device *dev, void *data,

error: patch failed: drivers/gpu/drm/i915/i915_dma.c:49
error: drivers/gpu/drm/i915/i915_dma.c: patch does not apply
Checking patch drivers/gpu/drm/i915/i915_drv.h...
Hunk #1 succeeded at 1984 (offset -38 lines).
Comment 14 thomas bonfort 2016-04-05 19:27:19 UTC
using 3-way:

/**
 * i915_driver_init_mmio - setup device MMIO
 * @dev_priv: device private
 *
 * Setup minimal device state necessary for MMIO accesses later in the
 * initialization sequence. The setup here should avoid any other device-wide
 * side effects or exposing the driver via kernel internal or user space
 * interfaces.
 */
static int i915_driver_init_mmio(struct drm_i915_private *dev_priv)
{
        struct drm_device *dev = dev_priv->dev;
        int ret;

<<<<<<< ours
        if (i915_inject_load_failure())
                return -ENODEV;
=======
        /* walk the dmi device table for getting platform memory information */
        dev_priv->dmi.valid = true;
        dmi_walk(dmi_decode_memory_info, dev_priv);
        if (!dev_priv->dmi.mem_speed)
                dev_priv->dmi.valid = false;

        /* Setup the write-once "constant" device info */
        device_info = (struct intel_device_info *)&dev_priv->info;
        memcpy(device_info, info, sizeof(dev_priv->info));
        device_info->device_id = dev->pdev->device;
>>>>>>> theirs

        if (i915_get_bridge_dev(dev))
                return -EIO;

        ret = i915_mmio_setup(dev);
        if (ret < 0)
                goto put_bridge;

        intel_uncore_init(dev);

        return 0;

put_bridge:
        pci_dev_put(dev_priv->bridge_dev);

        return ret;
}
Comment 15 Rodrigo Vivi 2016-04-05 19:49:02 UTC
hm, I had a different conflict on my patch 7 here, so not sure... Anyway I prepared a branch with these 8 patches on top of nightly:

https://cgit.freedesktop.org/~vivijim/drm-intel/log/?h=watermarks-wa
Comment 16 thomas bonfort 2016-04-05 19:53:40 UTC
Rodrigo,
sorry for being a noob here...: what remote should I add to get to that branch?
Comment 17 Rodrigo Vivi 2016-04-05 19:59:46 UTC
there is nothing wrong that needs apologies here ;)

Thank you very much for your report and effort helping us here!

git remote add vivijim git://people.freedesktop.org/~vivijim/drm-intel
git fetch vivijim
git checkout vivijim/watermarks-wa -b vivijim-watermarks-wa
Comment 18 thomas bonfort 2016-04-05 20:10:36 UTC
can you please advise as to the workflow I should be using to compile a meaningfull kernel to test this, starting from the config used by ubuntu?

this is what I'm inclined to do:

make mrproper
cp /boot/config-4.4.0-17-generic .config
make oldconfig
#reply to the questions to the best of my knowledge, set i915 debugging to true
#should there be some questions I should reply with something non-default?
make
make modules
sudo make modules_install
sudo make modules
Comment 19 Timo Aaltonen 2016-04-05 20:58:19 UTC
better way is to just

make -j N deb-pkg INSTALL_MOD_STRIP=1

after copying the config there, and adjust N to match your cpu thread count
Comment 20 thomas bonfort 2016-04-05 22:19:05 UTC
Flickering still present on watermarks-wa

cp /boot/config-4.4.0-17-generic .config
make -j 4 deb-pkg INSTALL_MOD_STRIP=1
#answer default on everything except i915 debugging

booted using no specific enable_psr flags

$ dmesg|grep i915
[    1.754871] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26)
[    2.280124] [drm] Initialized i915 1.6.0 20160330 for 0000:00:02.0 on minor 0
[    3.331669] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    4.452639] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[  207.155111] [drm:intel_cpu_fifo_underrun_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun

the first flickering occurs at the time the underrun message appears in the logs (after a minute or so of usage)
Comment 21 thomas bonfort 2016-04-05 22:28:00 UTC
booting with enable_psr=1 leads to same results:

$ dmesg|grep i915
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.6.0-rc2+ i915.enable_psr=1 root=UUID=432cb01b-c9c7-4cb0-8129-5c0abadbf9f8 ro quiet splash vt.handoff=7
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.6.0-rc2+ i915.enable_psr=1 root=UUID=432cb01b-c9c7-4cb0-8129-5c0abadbf9f8 ro quiet splash vt.handoff=7
[    1.743617] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.26)
[    1.774134] [drm] Initialized i915 1.6.0 20160330 for 0000:00:02.0 on minor 0
[    3.376327] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    4.397625] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[  185.017240] [drm:intel_cpu_fifo_underrun_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun
Comment 22 thomas bonfort 2016-04-07 17:19:30 UTC
The bug's status is NEEDINFO. Is there anything more you need from me?
Comment 23 Rodrigo Vivi 2016-04-07 18:22:14 UTC
Another bisect attempt would be ideal.

Since it happens with i915.enable_psr=0 it is not PSR related.

But anyway, could you please provide more info about your system:
- full dmesg after booting with drm.debug=0xe
- /var/log/Xorg.0.log
- what graphical environment you use
- do you have an external monitor attached?
- Is there anything special that triggers the flickering? something like: "it starts flickering when having more than one monitor I try to move the cursor to the external one"
- Could you please try i915.enable_dc=0 i915.disable_power_well=0

Thanks,
Rodrigo.
Comment 24 thomas bonfort 2016-04-10 07:05:03 UTC
Created attachment 122843 [details]
dmesg with drm.debug on 4.4.0-18 up until first flicker
Comment 25 thomas bonfort 2016-04-10 07:06:07 UTC
Created attachment 122844 [details]
Xorg.0.log
Comment 26 thomas bonfort 2016-04-10 07:17:00 UTC
>what graphical environment you use
KDE plasma
>do you have an external monitor attached?
No
>Is there anything special that triggers the flickering? something like: "it starts flickering when having more than one monitor I try to move the cursor to the external one"
No special trigger. First happens between 30secs and 5 minutes after boot, then by salves of ~3-10 flickers separated by a few seconds, followed by a few minutes with no flickering. Flickers seem to happen essentially when the machine is more or less idling.
Comment 27 thomas bonfort 2016-04-10 07:24:50 UTC
Created attachment 122845 [details]
dmesg with enable_dc=0 disable_power_well=0 , up to first flicker
Comment 28 Nico Hwege 2016-04-10 07:36:51 UTC
(In reply to thomas bonfort from comment #27)
> Created attachment 122845 [details]
> dmesg with enable_dc=0 disable_power_well=0 , up to first flicker

Ive been following this bug for a while.

It seems to me that the bug does not occur while fullscreen video playback, which includes fullscreen chrome youtube and netflix, as well als fullscreen vlc playback. Can someone confirm? Hope this helps.

Is another bisect still needed? I might be able to do that.
Comment 29 Peter Y. Chuang 2016-04-15 19:57:49 UTC
(In reply to thomas bonfort from comment #26)
> >what graphical environment you use
> KDE plasma
> >do you have an external monitor attached?
> No
> >Is there anything special that triggers the flickering? something like: "it starts flickering when having more than one monitor I try to move the cursor to the external one"
> No special trigger. First happens between 30secs and 5 minutes after boot,
> then by salves of ~3-10 flickers separated by a few seconds, followed by a
> few minutes with no flickering. Flickers seem to happen essentially when the
> machine is more or less idling.

I believe I am having the same problem. I am on XPS 13 9350 too, and now on 4.6-rc3 kernel. And yes the flickers do tend to occur when the machine is kind of idling.

My suspicion is that it has something to do with RC6. When I change the  i915.enable_rc6 parameter from 7 to 0, the flickering seems to go away. The problem is, of course, disabling RC6 will drain battery a lot faster.

PS. I notice that even with i915.enable_rc6=7, the GPU never goes to RC6p and RC6pp. Is that not supported on Skylake yet?
Comment 30 Rodrigo Vivi 2016-04-15 20:06:11 UTC
RC6p/RC6pp split got deprecated few generations ago. So on Skylake RC6 is the deepest already.

Thomas, do you confirm disabling RC6 the flickerings goes away for you as well?
Comment 31 Rodrigo Vivi 2016-04-15 20:07:48 UTC
nhellwege another bisect would be awesome for sure. Thanks
Comment 32 Rodrigo Vivi 2016-04-15 20:17:23 UTC
Uhm interesting that even with i915.enable_dc=0 you Thomas are getting
[   17.788425] [drm:gen9_set_dc_state] Setting DC state from 00 to 02

What firmware version do you have loaded?
cat /sys/kernel/debug/dri/0/i915_dmc_info
Comment 33 Peter Y. Chuang 2016-04-16 22:03:58 UTC
Here's the dmesg FYI:

$ dmesg|grep i915
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-linux-mainline root=UUID=0e20ff18-cf60-41db-b0ec-d752d5df0844 rw cryptdevice=/dev/disk/by-uuid/12f4a4fd-0a88-4327-b272-f3ca8fd5d82d:lvm:allow-discards quiet resume=/dev/disk/by-uuid/886bcda0-2e8a-4068-aba2-664991526834 pcie_aspm=force i915.enable_execlists=0 i915.enable_psr=1
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-linux-mainline root=UUID=0e20ff18-cf60-41db-b0ec-d752d5df0844 rw cryptdevice=/dev/disk/by-uuid/12f4a4fd-0a88-4327-b272-f3ca8fd5d82d:lvm:allow-discards quiet resume=/dev/disk/by-uuid/886bcda0-2e8a-4068-aba2-664991526834 pcie_aspm=force i915.enable_execlists=0 i915.enable_psr=1
[    0.897902] [drm] Finished loading i915/skl_dmc_ver1.bin (v1.23)
[    0.917624] [drm] Initialized i915 1.6.0 20160229 for 0000:00:02.0 on minor 0
[    2.644829] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    9.329977] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_exit [i915])
[   24.371605] WARNING: CPU: 0 PID: 884 at drivers/gpu/drm/i915/intel_uncore.c:649 __unclaimed_reg_debug+0x80/0x90 [i915]
[   24.371669]  af_alg dm_crypt dm_mod sd_mod rtsx_pci_sdmmc mmc_core atkbd libps2 crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd ahci libahci xhci_pci libata xhci_hcd rtsx_pci scsi_mod usbcore usb_common i8042 serio i915 video button i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm intel_agp intel_gtt
[   24.371722]  [<ffffffffa013f0e0>] __unclaimed_reg_debug+0x80/0x90 [i915]
[   24.371731]  [<ffffffffa013fb8e>] gen9_read32+0x33e/0x3b0 [i915]
[   24.371742]  [<ffffffffa0149b49>] i915_audio_component_codec_wake_override+0x39/0xb0 [i915]
[  342.932696] [drm:intel_cpu_fifo_underrun_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun
Comment 34 Nico Hwege 2016-04-18 01:28:41 UTC
I am currently bisecting the kernel again and one thing I realize is that I can detect an error through dmesg and then set the commit to bad, but after reviewing some kernels which I have marked as good, it turns out these were bad too. This messed up my bisect and I have to start over again.

Does anyone know how to specifically excite the error? So far I mostly open chrome and open netflix and youtube, since browsing through the galleries sometimes helps to see the bug, but unfortunately not always. Any method is welcomed and could speed up my bisect a lot :)
Comment 35 thomas bonfort 2016-04-18 06:02:19 UTC
(In reply to Rodrigo Vivi from comment #30)
> RC6p/RC6pp split got deprecated few generations ago. So on Skylake RC6 is
> the deepest already.
> 
> Thomas, do you confirm disabling RC6 the flickerings goes away for you as
> well?

with i915.enable_rc6=0 the flickering is gone. Maybe unrelated, but after waking up from suspend I am now getting a new message:

i915_bpo 0000:00:02.0: BAR 6: [??? 0x00000000 flags 0x2] has bogus alignment
Comment 36 thomas bonfort 2016-04-18 06:02:50 UTC
(In reply to Rodrigo Vivi from comment #32)
> Uhm interesting that even with i915.enable_dc=0 you Thomas are getting
> [   17.788425] [drm:gen9_set_dc_state] Setting DC state from 00 to 02
> 
> What firmware version do you have loaded?
> cat /sys/kernel/debug/dri/0/i915_dmc_info

 
fw loaded: yes
path: i915/skl_dmc_ver1.bin
version: 1.26
DC3 -> DC5 count: 0
DC5 -> DC6 count: 0
program base: 0x09004040
ssp base: 0x00002fc0
htp: 0x00b40068
Comment 37 thomas bonfort 2016-04-18 06:55:20 UTC
(In reply to thomas bonfort from comment #35)
> (In reply to Rodrigo Vivi from comment #30)
> > RC6p/RC6pp split got deprecated few generations ago. So on Skylake RC6 is
> > the deepest already.
> > 
> > Thomas, do you confirm disabling RC6 the flickerings goes away for you as
> > well?
> 
> with i915.enable_rc6=0 the flickering is gone. Maybe unrelated, but after
> waking up from suspend I am now getting a new message:
> 
> i915_bpo 0000:00:02.0: BAR 6: [??? 0x00000000 flags 0x2] has bogus alignment

I thought I had waited long enough before reporting, but apparently not so :)
I just had a salve of flickers even with rc6=0. dmesg shows the usual:

[17243.901481] [drm:intel_cpu_fifo_underrun_irq_handler [i915_bpo]] *ERROR* CPU pipe A FIFO underrun
Comment 38 tranceash 2016-04-18 07:20:37 UTC
looks like a power management issues dating 8 months back, Also happened on the broadwell systems https://bugs.freedesktop.org/show_bug.cgi?id=91393.
This makes any linux system a pain to work because of this integrated gpu driver . Skylake has been out for 7 months and we still have problems
Comment 39 Peter Y. Chuang 2016-04-18 09:29:03 UTC
I'm not sure if this is kind of expected for this particular bug, but it seems that the problem doesn't happen when the laptop is plugged into the power.
Comment 40 Timo Aaltonen 2016-04-18 10:29:47 UTC
sounds like a dupe of 
https://bugs.freedesktop.org/show_bug.cgi?id=91393
Comment 41 thomas bonfort 2016-04-18 10:35:59 UTC
(In reply to Peter Y. Chuang from comment #39)
> I'm not sure if this is kind of expected for this particular bug, but it
> seems that the problem doesn't happen when the laptop is plugged into the
> power.

Flickering happens with AC plugged here
Comment 42 Peter Y. Chuang 2016-04-18 10:52:55 UTC
(In reply to thomas bonfort from comment #41)
> (In reply to Peter Y. Chuang from comment #39)
> > I'm not sure if this is kind of expected for this particular bug, but it
> > seems that the problem doesn't happen when the laptop is plugged into the
> > power.
> 
> Flickering happens with AC plugged here

Which kernel are you using at the moment?
Comment 43 Nico Hwege 2016-04-18 11:48:53 UTC
(In reply to tranceash from comment #38)
> looks like a power management issues dating 8 months back, Also happened on
> the broadwell systems https://bugs.freedesktop.org/show_bug.cgi?id=91393.
> This makes any linux system a pain to work because of this integrated gpu
> driver . Skylake has been out for 7 months and we still have problems

I am starting to believe that the common error 

 [drm:intel_cpu_fifo_underrun_irq_handler [i915_bpo]] *ERROR* CPU pipe A FIFO underrun

is not actually responsible for the flicker. To be more precise, the FIFO underrun may result in conjunction with a flicker, but is not a unique indication. I am currently bisecting the kernel and right now I am on commit 5ffd4da+. This commit does show the FIFO underun but not at the same time the screen turns completely black for a split second. 

I assume the flicker (screen completely black for a split second) is not directly mapped by the FIFO underrun. 

Reading https://bugs.freedesktop.org/show_bug.cgi?id=91393, I think our bug is at least related, if not identical.
Comment 44 Peter Y. Chuang 2016-04-18 16:28:51 UTC
(In reply to nhellwege from comment #43)
> (In reply to tranceash from comment #38)
> > looks like a power management issues dating 8 months back, Also happened on
> > the broadwell systems https://bugs.freedesktop.org/show_bug.cgi?id=91393.
> > This makes any linux system a pain to work because of this integrated gpu
> > driver . Skylake has been out for 7 months and we still have problems
> 
> I am starting to believe that the common error 
> 
>  [drm:intel_cpu_fifo_underrun_irq_handler [i915_bpo]] *ERROR* CPU pipe A
> FIFO underrun
> 
> is not actually responsible for the flicker. To be more precise, the FIFO
> underrun may result in conjunction with a flicker, but is not a unique
> indication. I am currently bisecting the kernel and right now I am on commit
> 5ffd4da+. This commit does show the FIFO underun but not at the same time
> the screen turns completely black for a split second. 
> 
> I assume the flicker (screen completely black for a split second) is not
> directly mapped by the FIFO underrun. 
> 
> Reading https://bugs.freedesktop.org/show_bug.cgi?id=91393, I think our bug
> is at least related, if not identical.

I tend to agree with you that the error 

[drm:intel_cpu_fifo_underrun_irq_handler [i915_bpo]] *ERROR* CPU pipe A FIFO underrun

may not be specific to the problem we are talking about here.

Regarding my previous comment on whether the laptop is plugged into AC, Thomas is right: if I wait long enough, the flicker does occur even when plugged in, although much less frequent on my machine. 

Interestingly, now that I am plugged into AC, the CPU pipe A FIFO underrun thing is no longer the error I see. Instead, this is the error I saw on dmesg:

[ 2045.481992] [drm:intel_pipe_update_end [i915]] *ERROR* Atomic update failure on pipe A (start=84070 end=84071) time 9 us, min 1073, max 1079, scanline start 1087, end 1079

This is the first time I see this error since I started looking for the solution for this problem.

Hope this might give you some clues.
Comment 45 Nico Hwege 2016-04-21 00:24:07 UTC
Created attachment 123104 [details]
bisect log for underrun FIFO Error

Bisect log for the i915 Underrun FIFO ERROR. Since no clear method is known on how to excite the error, the bisect might be unfinished. All bad commits did show the FIFO error AND also the Flicker. All good ones did not within a reasonable time (I testet each good Kernal at least 30 minutes). There are some (many) skippes commits, which I was not able to build. The Faulty commit must be somewhere in these skipped commits.
Comment 46 Nico Hwege 2016-04-21 09:50:24 UTC
(In reply to tranceash from comment #38)
> looks like a power management issues dating 8 months back, Also happened on
> the broadwell systems https://bugs.freedesktop.org/show_bug.cgi?id=91393.
> This makes any linux system a pain to work because of this integrated gpu
> driver . Skylake has been out for 7 months and we still have problems

Ok, I looked into that bug and it seems its not the same. It specifically mentions external monitors and also not black screen flickering, but more a graphical flickering, without the completely black frames in between.

Nevertheless, I tried the proposes patches from https://bugs.freedesktop.org/show_bug.cgi?id=91393#c102 on intel-drm-nightly and I still got the FIFO underrun ERROR and also the black screen flickering. So thats not a solution.

Also, it seems that the FIFO error does appear for the first flicker, but not for any ones after the first, so in my opinion, it can be used as an error criteria.

I could bisect the kernel further, but as seen in https://bugs.freedesktop.org/attachment.cgi?id=123104 there are so many commits, which I cannot build. Maybe someone can help me to compile one of these? I can then do the remaining (since they are all in order, it seems like the reason they dont compile might be the same).
Comment 47 Rodrigo Vivi 2016-04-21 13:22:04 UTC
Probably a bisect on drm-intel-nightly is less painful.
But it seems that we are indeed now duplicating the discussion and there is more information on the other bug. Please reopen if you believe this one here is a different case.

*** This bug has been marked as a duplicate of bug 91393 ***
Comment 48 thomas bonfort 2016-04-21 13:31:31 UTC
If the underlying issue is the same then fine. I can confirm that the resulting appearance of this current bug is very different than what the video shows in 91393
Comment 49 thomas bonfort 2016-04-21 13:33:39 UTC
As another user confirms on https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1554613 , the flickering has disappeared on the latest drm-intel-next
Comment 50 jay 2016-04-21 13:33:54 UTC
On my end, the issue looks like a random "blanking" of the screen for 1/4 of a second, two or three times or so in a row. It can happen several times in a few minutes, but I've also seen it last 20 minutes between occurrences. On my end it looks nothing like in that video.
Comment 51 Nico Hwege 2016-04-22 01:12:19 UTC
(In reply to thomas bonfort from comment #49)
> As another user confirms on
> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1554613 , the
> flickering has disappeared on the latest drm-intel-next

I can confirm that the blank screen flickering is gone with 4.6.0-997-generic intel-drm-next. 

Just a follow up question: I am not that familiar with Kernel releases, but as I understand, the 4.4. has long term support, whereas the 4.6. doesnt. Will the driver from the 4.6. eventually be backported to 4.4.?

Thanks for all the effort which has gone into this bug.
Comment 52 Nico Hwege 2016-04-22 01:14:56 UTC
(In reply to jay from comment #50)
> On my end, the issue looks like a random "blanking" of the screen for 1/4 of
> a second, two or three times or so in a row. It can happen several times in
> a few minutes, but I've also seen it last 20 minutes between occurrences. On
> my end it looks nothing like in that video.

Yes, that is the same with me. I dont know if the underlying issues are identical, but the blanking of the screen is totally different from the graphical flickering in #91393.
Comment 53 Peter Y. Chuang 2016-04-22 09:45:27 UTC
(In reply to nhellwege from comment #51)
> (In reply to thomas bonfort from comment #49)
> > As another user confirms on
> > https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1554613 , the
> > flickering has disappeared on the latest drm-intel-next
> 
> I can confirm that the blank screen flickering is gone with
> 4.6.0-997-generic intel-drm-next. 
> 
> Just a follow up question: I am not that familiar with Kernel releases, but
> as I understand, the 4.4. has long term support, whereas the 4.6. doesnt.
> Will the driver from the 4.6. eventually be backported to 4.4.?
> 
> Thanks for all the effort which has gone into this bug.

I can confirm that the flickering is gone with the latest drm-intel-next kernel too.

Thanks everyone.
Comment 54 Jani Nikula 2016-04-22 10:17:01 UTC
Thanks, closing. Please reopen or file new bugs if the problems persist. (Please be careful about not reopening this one if you have bug 91393)
Comment 55 Pranith Kumar 2016-04-22 15:16:48 UTC
Is this really resolved? The problem is gone, but I don't think anyone identified what is really causing the problem to occur. Also, we need to identify which patch fixed the issue so that it can be back-ported. Both 4.5 and 4.6 kernels have this problem.
Comment 56 Nico Hwege 2016-04-23 02:40:16 UTC
I could try to bisect https://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack ,which is the base for the 4.6.0-997-generic intel-drm-next. A quick search suggests a list of 4-5 possible commits. 

Should this be done? Bisecting is very tedious.
Comment 57 Jani Nikula 2016-04-25 07:19:37 UTC
(In reply to Pranith Kumar from comment #55)
> Is this really resolved? The problem is gone, but I don't think anyone
> identified what is really causing the problem to occur.

In a perfect world we'd get to the roots of every problem, but in reality we don't have the time to keep debugging issues that seem to be gone. Especially in areas where we've done a lot of fixing upstream.

> Also, we need to
> identify which patch fixed the issue so that it can be back-ported. Both 4.5
> and 4.6 kernels have this problem.

If the v4.6-rc kernels still have the issue, but drm-intel-nightly works, it should be a pretty straightforward reverse bisect to find the commit that fixed the bug. If you provide that, it may be possible to do the backport.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.