Bug 98742

Summary: [GEN 5] flickers on key presses, occasional crashes
Product: xorg Reporter: Uwe Kleine-König <uwe+bugsfreenode>
Component: Driver/modesettingAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: intrigeri, martin.peres
Version: 7.7 (2012.06)   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
journal
none
artifacts in firefox
none
xorg.log none

Description Uwe Kleine-König 2016-11-15 19:48:16 UTC
Hello,

on my Laptop (Lenovo X201) running Debian Stretch (Linux 4.7.8, x.org 7.7, xserver-xorg-video-intel 2:2.99.917+git20160706-1) the display (external Monitor, but also on internal LVDS) flickers sometimes on key presses (probably related to the update events).

I can reproduce this nicely under Gnome with sloppy focus, changing focus between two Terminals with the mouse and pressing repeatedly a key.

Will provide a drm.debug=0x1e dmesg once I generated it. (I submit the bug already now to save what I already typed.) Tell me if you need more information.

Best regards
Uwe
Comment 1 Uwe Kleine-König 2016-11-15 19:59:36 UTC
Created attachment 127998 [details]
journal

This was captured using journalctl after the issue happend a few times already.

For example it happened once at "Tue Nov 15 20:52:12 CET 2016". (I.e. on the Enter key press to start "date" in the Terminal.)
Comment 2 Uwe Kleine-König 2016-11-15 20:05:17 UTC
Forgot to mention: When the machine crashes, the display gets all black, sometimes with a multicolored line at the left side and no reaction on key presses, not even sysrq.

If that helps, I'm ukleinek on freenode/#intel-gfx.
Comment 3 Uwe Kleine-König 2016-11-26 09:32:29 UTC
In Icedove (aka thunderbird) and firefox I also see display errors, see the attached picture.
Comment 4 Uwe Kleine-König 2016-11-26 09:35:00 UTC
Created attachment 128198 [details]
artifacts in firefox

borders for input fields are interrupted and put off
Comment 5 Uwe Kleine-König 2016-11-26 09:39:16 UTC
Created attachment 128199 [details]
xorg.log

This isn't the log from the session where I grabbed the journal, I hope it's useful anyhow.
Comment 6 Uwe Kleine-König 2016-12-06 09:47:56 UTC
When switching to the intel driver (away from modesetting) the issue is gone.
Comment 7 Uwe Kleine-König 2016-12-07 08:57:52 UTC
There is a bug report in the Debian bug tracker by someone else with an X201 and the same symptoms:
https://bugs.debian.org/837451
Comment 8 Martin Peres 2017-01-12 08:58:15 UTC
Adding here the video of the problem: https://www.kleine-koenig.org/tmp/20170112T081133.mp4

It also seems like this is all just an underrun problem on GEN5. Uwe, can you attach the lines you see in dmesg?
Comment 9 Uwe Kleine-König 2017-01-12 09:14:05 UTC
The fifo underrun messages happen always in pairs:

$ journalctl  | grep ironlake
Jan 12 09:01:51 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun
Jan 12 09:01:51 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* PCH transcoder A FIFO underrun
Jan 12 09:05:51 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* CPU pipe B FIFO underrun
Jan 12 09:05:51 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* PCH transcoder B FIFO underrun
Jan 12 09:14:48 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun
Jan 12 09:14:48 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* PCH transcoder A FIFO underrun
Jan 12 09:46:21 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun
Jan 12 09:46:21 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* PCH transcoder A FIFO underrun
Jan 12 09:48:15 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun
Jan 12 09:48:15 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* PCH transcoder A FIFO underrun
Jan 12 09:52:49 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun
Jan 12 09:52:49 perseus kernel: [drm:ironlake_irq_handler [i915]] *ERROR* PCH transcoder A FIFO underrun

I just cleaned dmesg while switching back to -intel to see easily if I get fifo underruns there, too. I found

[  834.364173] [drm:ironlake_irq_handler [i915]] *ERROR* CPU pipe A FIFO underrun
[  834.364215] [drm:ironlake_irq_handler [i915]] *ERROR* PCH transcoder A FIFO underrun

in my irc logs which corresponds to the 9:14 entry I think.
Comment 10 Uwe Kleine-König 2017-01-12 20:44:53 UTC
Adrinael in #intel-gfx helped me to run IGT, I did that on drm-tip, nothing obvious:

igt/core_auth/basic-auth: pass
igt/core_prop_blob/basic: pass
igt/drv_getparams_basic/basic-eu-total: pass
igt/drv_getparams_basic/basic-subslice-total: pass
igt/drv_hangman/error-state-basic: pass
igt/gem_basic/bad-close: pass
igt/gem_basic/create-close: pass
igt/gem_basic/create-fd-close: pass
igt/gem_busy/basic-busy-default: pass
igt/gem_busy/basic-hang-default: pass
igt/gem_close_race/basic-process: pass
igt/gem_close_race/basic-threads: pass
igt/gem_cpu_reloc/basic: pass
igt/gem_cs_tlb/basic-default: pass
igt/gem_ctx_basic: skip
igt/gem_ctx_create/basic: skip
igt/gem_ctx_create/basic-files: skip
igt/gem_ctx_exec/basic: skip
igt/gem_ctx_param/basic: skip
igt/gem_ctx_param/basic-default: skip
igt/gem_ctx_switch/basic-default: skip
igt/gem_ctx_switch/basic-default-heavy: skip
igt/gem_exec_basic/basic-blt: skip
igt/gem_exec_basic/basic-bsd: pass
igt/gem_exec_basic/basic-bsd1: skip
igt/gem_exec_basic/basic-bsd2: skip
igt/gem_exec_basic/basic-default: pass
igt/gem_exec_basic/basic-render: pass
igt/gem_exec_basic/basic-vebox: skip
igt/gem_exec_basic/gtt-blt: skip
igt/gem_exec_basic/gtt-bsd: pass
igt/gem_exec_basic/gtt-bsd1: skip
igt/gem_exec_basic/gtt-bsd2: skip
igt/gem_exec_basic/gtt-default: pass
igt/gem_exec_basic/gtt-render: pass
igt/gem_exec_basic/gtt-vebox: skip
igt/gem_exec_basic/readonly-blt: skip
igt/gem_exec_basic/readonly-bsd: pass
igt/gem_exec_basic/readonly-bsd1: skip
igt/gem_exec_basic/readonly-bsd2: skip
igt/gem_exec_basic/readonly-default: pass
igt/gem_exec_basic/readonly-render: pass
igt/gem_exec_basic/readonly-vebox: skip
igt/gem_exec_create/basic: pass
igt/gem_exec_flush/basic-batch-kernel-default-cmd: skip
igt/gem_exec_flush/basic-batch-kernel-default-uc: pass
igt/gem_exec_flush/basic-batch-kernel-default-wb: pass
igt/gem_exec_flush/basic-uc-pro-default: pass
igt/gem_exec_flush/basic-uc-prw-default: pass
igt/gem_exec_flush/basic-uc-ro-default: pass
igt/gem_exec_flush/basic-uc-rw-default: pass
igt/gem_exec_flush/basic-uc-set-default: pass
igt/gem_exec_flush/basic-wb-pro-default: pass
igt/gem_exec_flush/basic-wb-prw-default: pass
igt/gem_exec_flush/basic-wb-ro-before-default: pass
igt/gem_exec_flush/basic-wb-ro-default: pass
igt/gem_exec_flush/basic-wb-rw-before-default: pass
igt/gem_exec_flush/basic-wb-rw-default: pass
igt/gem_exec_flush/basic-wb-set-default: pass
igt/gem_exec_gttfill/basic: pass
igt/gem_exec_nop/basic-parallel: pass
igt/gem_exec_nop/basic-series: pass
igt/gem_exec_parallel/basic: pass
igt/gem_exec_parse/basic-allowed: skip
igt/gem_exec_parse/basic-rejected: skip
igt/gem_exec_reloc/basic-cpu: pass
igt/gem_exec_reloc/basic-gtt: pass
igt/gem_exec_reloc/basic-noreloc: pass
igt/gem_exec_reloc/basic-softpin: pass
igt/gem_exec_store/basic-all: pass
igt/gem_exec_store/basic-blt: skip
igt/gem_exec_store/basic-bsd: pass
igt/gem_exec_store/basic-bsd1: skip
igt/gem_exec_store/basic-bsd2: skip
igt/gem_exec_store/basic-default: pass
igt/gem_exec_store/basic-render: pass
igt/gem_exec_store/basic-vebox: skip
igt/gem_exec_suspend/basic: pass
igt/gem_exec_suspend/basic-s3: pass
igt/gem_exec_suspend/basic-s4-devices: pass
igt/gem_flink_basic/bad-flink: pass
igt/gem_flink_basic/bad-open: pass
igt/gem_flink_basic/basic: pass
igt/gem_flink_basic/double-flink: pass
igt/gem_flink_basic/flink-lifetime: pass
igt/gem_linear_blits/basic: pass
igt/gem_mmap/basic: pass
igt/gem_mmap/basic-small-bo: pass
igt/gem_mmap_gtt/basic: pass
igt/gem_mmap_gtt/basic-copy: pass
igt/gem_mmap_gtt/basic-read: pass
igt/gem_mmap_gtt/basic-read-no-prefault: pass
igt/gem_mmap_gtt/basic-read-write: pass
igt/gem_mmap_gtt/basic-read-write-distinct: pass
igt/gem_mmap_gtt/basic-short: pass
igt/gem_mmap_gtt/basic-small-bo: pass
igt/gem_mmap_gtt/basic-small-bo-tiledx: pass
igt/gem_mmap_gtt/basic-small-bo-tiledy: pass
igt/gem_mmap_gtt/basic-small-copy: pass
igt/gem_mmap_gtt/basic-small-copy-xy: pass
igt/gem_mmap_gtt/basic-wc: pass
igt/gem_mmap_gtt/basic-write: pass
igt/gem_mmap_gtt/basic-write-cpu-read-gtt: skip
igt/gem_mmap_gtt/basic-write-gtt: pass
igt/gem_mmap_gtt/basic-write-gtt-no-prefault: pass
igt/gem_mmap_gtt/basic-write-no-prefault: pass
igt/gem_mmap_gtt/basic-write-read: pass
igt/gem_mmap_gtt/basic-write-read-distinct: pass
igt/gem_pread/basic: pass
igt/gem_pwrite/basic: pass
igt/gem_render_linear_blits/basic: skip
igt/gem_render_tiled_blits/basic: skip
igt/gem_ringfill/basic-default: pass
igt/gem_ringfill/basic-default-forked: pass
igt/gem_ringfill/basic-default-hang: pass
igt/gem_ringfill/basic-default-interruptible: pass
igt/gem_sync/basic-all: pass
igt/gem_sync/basic-each: pass
igt/gem_sync/basic-many-each: pass
igt/gem_sync/basic-store-all: pass
igt/gem_sync/basic-store-each: pass
igt/gem_tiled_blits/basic: pass
igt/gem_tiled_fence_blits/basic: pass
igt/gem_tiled_pread_basic: pass
igt/gem_wait/basic-busy-all: pass
igt/gem_wait/basic-wait-all: pass
igt/gem_workarounds/basic-read: pass
igt/kms_addfb_basic/addfb25-bad-modifier: pass
igt/kms_addfb_basic/addfb25-framebuffer-vs-set-tiling: pass
igt/kms_addfb_basic/addfb25-modifier-no-flag: pass
igt/kms_addfb_basic/addfb25-x-tiled: pass
igt/kms_addfb_basic/addfb25-x-tiled-mismatch: pass
igt/kms_addfb_basic/addfb25-y-tiled: pass
igt/kms_addfb_basic/addfb25-y-tiled-small: skip
igt/kms_addfb_basic/addfb25-yf-tiled: pass
igt/kms_addfb_basic/bad-pitch-0: pass
igt/kms_addfb_basic/bad-pitch-1024: pass
igt/kms_addfb_basic/bad-pitch-128: pass
igt/kms_addfb_basic/bad-pitch-256: pass
igt/kms_addfb_basic/bad-pitch-32: pass
igt/kms_addfb_basic/bad-pitch-63: pass
igt/kms_addfb_basic/bad-pitch-65536: pass
igt/kms_addfb_basic/bad-pitch-999: pass
igt/kms_addfb_basic/basic: pass
igt/kms_addfb_basic/basic-x-tiled: pass
igt/kms_addfb_basic/basic-y-tiled: pass
igt/kms_addfb_basic/bo-too-small: pass
igt/kms_addfb_basic/bo-too-small-due-to-tiling: pass
igt/kms_addfb_basic/clobberred-modifier: pass
igt/kms_addfb_basic/framebuffer-vs-set-tiling: pass
igt/kms_addfb_basic/invalid-get-prop: pass
igt/kms_addfb_basic/invalid-get-prop-any: pass
igt/kms_addfb_basic/invalid-set-prop: pass
igt/kms_addfb_basic/invalid-set-prop-any: pass
igt/kms_addfb_basic/no-handle: pass
igt/kms_addfb_basic/size-max: pass
igt/kms_addfb_basic/small-bo: pass
igt/kms_addfb_basic/tile-pitch-mismatch: pass
igt/kms_addfb_basic/too-high: pass
igt/kms_addfb_basic/too-wide: pass
igt/kms_addfb_basic/unused-handle: pass
igt/kms_addfb_basic/unused-modifier: pass
igt/kms_addfb_basic/unused-offsets: pass
igt/kms_addfb_basic/unused-pitches: pass
igt/kms_busy/basic-flip-default-a: pass
igt/kms_busy/basic-flip-default-b: pass
igt/kms_busy/basic-flip-default-c: skip
igt/kms_cursor_legacy/basic-busy-flip-before-cursor-atomic: skip
igt/kms_cursor_legacy/basic-busy-flip-before-cursor-legacy: pass
igt/kms_cursor_legacy/basic-flip-after-cursor-atomic: skip
igt/kms_cursor_legacy/basic-flip-after-cursor-legacy: pass
igt/kms_cursor_legacy/basic-flip-after-cursor-varying-size: pass
igt/kms_cursor_legacy/basic-flip-before-cursor-atomic: skip
igt/kms_cursor_legacy/basic-flip-before-cursor-legacy: pass
igt/kms_cursor_legacy/basic-flip-before-cursor-varying-size: pass
igt/kms_flip/basic-flip-vs-dpms: pass
igt/kms_flip/basic-flip-vs-modeset: pass
igt/kms_flip/basic-flip-vs-wf_vblank: pass
igt/kms_flip/basic-plain-flip: pass
igt/kms_force_connector_basic/force-connector-state: skip
igt/kms_force_connector_basic/force-edid: skip
igt/kms_force_connector_basic/force-load-detect: skip
igt/kms_force_connector_basic/prune-stale-modes: skip
igt/kms_frontbuffer_tracking/basic: skip
igt/kms_pipe_crc_basic/bad-nb-words-1: pass
igt/kms_pipe_crc_basic/bad-nb-words-3: pass
igt/kms_pipe_crc_basic/bad-pipe: pass
igt/kms_pipe_crc_basic/bad-source: pass
igt/kms_pipe_crc_basic/hang-read-crc-pipe-a: pass
igt/kms_pipe_crc_basic/hang-read-crc-pipe-b: pass
igt/kms_pipe_crc_basic/hang-read-crc-pipe-c: skip
igt/kms_pipe_crc_basic/nonblocking-crc-pipe-a: pass
igt/kms_pipe_crc_basic/nonblocking-crc-pipe-a-frame-sequence: pass
igt/kms_pipe_crc_basic/nonblocking-crc-pipe-b: pass
igt/kms_pipe_crc_basic/nonblocking-crc-pipe-b-frame-sequence: pass
igt/kms_pipe_crc_basic/nonblocking-crc-pipe-c: skip
igt/kms_pipe_crc_basic/nonblocking-crc-pipe-c-frame-sequence: skip
igt/kms_pipe_crc_basic/read-crc-pipe-a: pass
igt/kms_pipe_crc_basic/read-crc-pipe-a-frame-sequence: pass
igt/kms_pipe_crc_basic/read-crc-pipe-b: pass
igt/kms_pipe_crc_basic/read-crc-pipe-b-frame-sequence: pass
igt/kms_pipe_crc_basic/read-crc-pipe-c: skip
igt/kms_pipe_crc_basic/read-crc-pipe-c-frame-sequence: skip
igt/kms_pipe_crc_basic/suspend-read-crc-pipe-a: pass
igt/kms_pipe_crc_basic/suspend-read-crc-pipe-b: pass
igt/kms_pipe_crc_basic/suspend-read-crc-pipe-c: skip
igt/kms_setmode/basic-clone-single-crtc: pass
igt/kms_sink_crc_basic: skip
igt/pm_backlight/basic-brightness: pass
igt/pm_rpm/basic-pci-d3-state: skip
igt/pm_rpm/basic-rte: skip
igt/pm_rps/basic-api: skip
igt/prime_busy/basic-after-default: pass
igt/prime_busy/basic-before-default: pass
igt/prime_busy/basic-wait-after-default: pass
igt/prime_busy/basic-wait-before-default: pass
igt/prime_self_import/basic-llseek-bad: pass
igt/prime_self_import/basic-llseek-size: pass
igt/prime_self_import/basic-with_fd_dup: pass
igt/prime_self_import/basic-with_one_bo: pass
igt/prime_self_import/basic-with_one_bo_two_files: pass
igt/prime_self_import/basic-with_two_bos: pass
igt/prime_vgem/basic-busy-default: skip
igt/prime_vgem/basic-fence-flip: skip
igt/prime_vgem/basic-fence-mmap: skip
igt/prime_vgem/basic-fence-read: skip
igt/prime_vgem/basic-fence-wait-default: skip
igt/prime_vgem/basic-gtt: skip
igt/prime_vgem/basic-read: skip
igt/prime_vgem/basic-sync-default: skip
igt/prime_vgem/basic-wait-default: skip
igt/prime_vgem/basic-write: skip
igt/vgem_basic/create: skip
igt/vgem_basic/debugfs: skip
igt/vgem_basic/dmabuf-export: skip
igt/vgem_basic/dmabuf-fence: skip
igt/vgem_basic/dmabuf-fence-before: skip
igt/vgem_basic/dmabuf-mmap: skip
igt/vgem_basic/mmap: skip
igt/vgem_basic/second-client: skip
igt/vgem_basic/sysfs: skip
igt/vgem_basic/unload: skip
summary:
       name:   logs
       ----  ------
       pass:    172
       fail:      0
      crash:      0
       skip:     70
    timeout:      0
       warn:      0
 incomplete:      0
 dmesg-warn:      0
 dmesg-fail:      0
    changes:      0
      fixes:      0
regressions:      0
      total:    242


probably unrelated: on drm-tip when X is running Ctrl+Alt+F2 failed to show the console. Typing (without feedback): root\n$rootpwd\nsystemctl stop gdm\n killed X however and then the VT was visible and operational. Similar after running IGT the display was stuck in graphics mode, but obviously was finished (pgrep piglit -> void and logs look complete)

After the first run where Adrinael and I suspected something broke, I removed igt@gvt_basic@invalid-placeholder-test, igt@drv_module_reload@basic-reload, igt@drv_module_reload@basic-reload-inject, igt@drv_module_reload@basic-reload-final from fast-feedback.testlist on Adrinael's advice, so they are missing above.
Comment 11 Uwe Kleine-König 2017-01-14 11:28:11 UTC
With this patch from ickle on #intel-gfx:

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index fd5fbc83c69e..2bcbd386def9 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -16657,8 +16657,8 @@ int intel_modeset_init(struct drm_device *dev)
                dev->mode_config.cursor_width = GEN2_CURSOR_WIDTH;
                dev->mode_config.cursor_height = GEN2_CURSOR_HEIGHT;
        } else {
-               dev->mode_config.cursor_width = MAX_CURSOR_WIDTH;
-               dev->mode_config.cursor_height = MAX_CURSOR_HEIGHT;
+               dev->mode_config.cursor_width = 64;
+               dev->mode_config.cursor_height = 64;
        }
 
        dev->mode_config.fb_base = ggtt->mappable_base;

on top of drm-tip a957dfe613ab (drm-tip: 2017y-01m-13d-18h-49m-04s UTC integration manifest) I cannot reproduce the issue.
Comment 12 Martin Peres 2017-01-20 17:16:35 UTC
(In reply to Uwe Kleine-König from comment #11)
> With this patch from ickle on #intel-gfx:
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c
> b/drivers/gpu/drm/i915/intel_display.c
> index fd5fbc83c69e..2bcbd386def9 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -16657,8 +16657,8 @@ int intel_modeset_init(struct drm_device *dev)
>                 dev->mode_config.cursor_width = GEN2_CURSOR_WIDTH;
>                 dev->mode_config.cursor_height = GEN2_CURSOR_HEIGHT;
>         } else {
> -               dev->mode_config.cursor_width = MAX_CURSOR_WIDTH;
> -               dev->mode_config.cursor_height = MAX_CURSOR_HEIGHT;
> +               dev->mode_config.cursor_width = 64;
> +               dev->mode_config.cursor_height = 64;
>         }
>  
>         dev->mode_config.fb_base = ggtt->mappable_base;
> 
> on top of drm-tip a957dfe613ab (drm-tip: 2017y-01m-13d-18h-49m-04s UTC
> integration manifest) I cannot reproduce the issue.

Thanks for testing, you really have been an exemplary user here!

On my side, I could probably improve -modesetting to reduce the size of the cursor plane to the minimum necessary, but this will only decrease the likeliness of this happening and I am afraid upstream devs may just tell me: Fix your driver or stop pretending you can do more than you actually can.

The real fix will come from the kernel, where I do not work all that much for Intel. I will have a look at it though, when I am mostly done with my backlog of tasks for modesetting, if no-one beats me to it.
Comment 13 Uwe Kleine-König 2017-01-31 19:17:53 UTC
Alternative patch from Maarten Lankhorst:

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index ae2c0bb4b2e8..13de4c526ca6 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -1838,7 +1838,7 @@ static uint32_t ilk_compute_cur_wm(const struct
+intel_crtc_state *cstate,
         * this is necessary to avoid flickering.
         */
        int cpp = 4;
-       int width = pstate->base.visible ? pstate->base.crtc_w : 64;
+       int width = 256;

        if (!cstate->base.active)
                return 0;

This fixes the problem for me, too.
Comment 14 Uwe Kleine-König 2017-03-01 21:57:37 UTC
Unfortunately I cannot reproduce the issue. I guess some update hid the problem again. xserver-xorg-core got updated, but downgrading it doesn't make the problem reappear. The other upgrades are unrelated TTBOMK. (Maybe libx11?)
Comment 15 intrigeri 2017-04-02 08:56:46 UTC
This problem still affects X201 users on Tails 3.0~beta3, so:

(In reply to Martin Peres from comment #12)
> (In reply to Uwe Kleine-König from comment #11)
> > With this patch from ickle on #intel-gfx:
> > […]
> > on top of drm-tip a957dfe613ab (drm-tip: 2017y-01m-13d-18h-49m-04s UTC
> > integration manifest) I cannot reproduce the issue.
> 
> […]
> 
> The real fix will come from the kernel, where I do not work all that much
> for Intel. I will have a look at it though, when I am mostly done with my
> backlog of tasks for modesetting, if no-one beats me to it.

Any update on this?

I see two suggested kernel patches on this bug report. Does one of those seem more likely than the other to be acceptable upstream?
Comment 16 groucho 2017-04-06 13:05:19 UTC
Hi,
I also have a thinkpad x201.
It looks very similar to the bug 97498 I reported a few months back.

commit a5509abda48ecfc133fac6268e83fc1a93dba039 seems to have fixed my issue.
Comment 17 Maarten Lankhorst 2017-06-07 14:06:21 UTC
Quite likely fixed with the cursor rework, targeting v4.12

commit a07102f1cce6ebf11f8d880665eb6f6353b16177
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Fri Mar 3 17:19:27 2017 +0200

    drm/i915: Use intel_wm_plane_visible() on VLV/CHV as well

commit 93aa2a1c25e562cc0ca69c3175333fe33fdf055b
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Tue Mar 14 17:10:50 2017 +0200

    drm/i915: Fix SKL cursor watermarks

commit a5509abda48ecfc133fac6268e83fc1a93dba039
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Fri Feb 17 17:01:59 2017 +0200

    drm/i915: Fix legacy cursor vs. watermarks for ILK-BDW

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.