Bug 97139 - [IVB][REGRESSION] i915: Intermittent short system stutter / lag affecting graphics output; bisected to commit f8d03ea
Summary: [IVB][REGRESSION] i915: Intermittent short system stutter / lag affecting gra...
Status: CLOSED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: DRI git
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Intel GFX Bugs mailing list
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-07-29 22:26 UTC by t.ambetarak
Modified: 2017-07-24 22:40 UTC (History)
2 users (show)

See Also:
i915 platform: IVB
i915 features: display/HDMI


Attachments
dmesg output + miscellanious other info about the system (168.66 KB, text/plain)
2016-07-29 22:26 UTC, t.ambetarak
no flags Details
drm patch for Linux 4.7.0 (573 bytes, patch)
2016-08-15 15:35 UTC, Yorick Peterse
no flags Details | Splinter Review

Description t.ambetarak 2016-07-29 22:26:10 UTC
Created attachment 125428 [details]
dmesg output + miscellanious other info about the system

First of all, apologies, this bug was tested against the latest mainline
kernel, not the DRM kernel - this was before I realized i915 bugs should be
submitted to freedesktop.org. I'm hoping it will still be useful. 

Description
-----------

Once in a while (several times per minute) there is a short system stutter or
lag (lasting for less than a second, but clearly noticable).  Everything
graphics-related is  affected by the lag, e.g. the mouse cursor and video
playback. When a video is playing in VLC, frames are dropped at the same time
as the mouse cursor hangs when moving it around; at the same time the glxgears
test application stutters. Audio output is not affected. Notes:

- Using or not using the X Intel video driver (xf86-intel-video on Arch Linux)
  does not matter.
- Turning compositing on or off does not matter (either the XFCE compositor or
  xcompmgr).
- Applying the latest CPU microcode updates or not does not matter.

Running strace on glxgears shows that some recvmsg syscalls take a very long
time, this is when the lag happens (~0.24s):

0.000053 poll([{fd=3, events=POLLIN}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
0.237675 recvmsg(3, {msg_name(0)=NULL, msg_iov(1)=[{"f\0f\34\2\0\0\0\2\0
\3\1\0\0\0\320\0r\214\0\0\0\0\216\v\0\0j\t\0\0", 4096}], msg_controllen=0,
msg_flags=0}, 0) = 32

FD 3 is the X11 socket ("/tmp/.X11-unix/X0").

I have isolated the problem to kernel commit f8d03ea, which changed HDMI
hotplug detection to take at most 80 ms. This seems to be too much on my
hardware and is causing issues. The original value was 30 ms. Changing it to
10 ms eliminates the problem completely for me (resolution tested against
commit 1a81a8f). It seems that the proper resolution would be to rewrite the
hotplug detection to eliminate blocking.

Environment
-----------

The general hardware / software environment is: an HP laptop with Intel i5
CPU, integrated graphics. 4.12, Arch Linux fully up to date, XFCE 4.12. A Dell
U2410 external monitor is attached via DisplayPort.

$ uname -m
x86_64

$ uname -r
4.7.0-ARAK-06537-g1a81a8f

How to reproduce
----------------

Can be tested by running a video in VLC that is known to not overwhelm
the CPU(s), passing the -vvv flags. On a kernel affected by the bug, several
messages at a time appear in the output about frames being dropped ("picture
is too late to be displayed", once or twice per minute). At the same time, the
mouse cursor stutters, if mouse is being moved.

Attached are dmesg output and other possibly useful information.
Comment 1 Yorick Peterse 2016-08-15 15:34:37 UTC
I recently got myself a 4K display (Dell 2715Q) and ran into this
problem as well. I never noticed it on my laptop's display (X1 Carbon
3rd generation using a WQHD display). Measuring frame rates using
glxgears would occassionally show a drop from 59.9 frames to around 56
frames per second.

Based on the notes left by the reporter I hacked together the patch
named "drm_msleep_470.patch". This patch basically changes the sleep
time from 10 milliseconds to just 1 millisecond. After compiling the drm
module with this patch and rebooting it appears the problem has been
"solved", though this probably won't work for other setups. I tested
this by again running glxgears for a while and noticed no drops in frame
rate.

The patch is based on Linux 4.7.0, it _may_ work with different versions
but I have not tested this. The patch was generated using "git diff".

Yorick
Comment 2 Yorick Peterse 2016-08-15 15:35:07 UTC
Created attachment 125793 [details] [review]
drm patch for Linux 4.7.0
Comment 3 Jani Nikula 2016-09-07 11:57:46 UTC
Fixed by

commit 23f889bdf6ee5cfff012d8b09f6bec920c691696
Author: David Weinehall <david.weinehall@linux.intel.com>
Date:   Wed Aug 17 15:47:48 2016 +0300

    Revert "drm/i915: Check live status before reading edid"

in drm-intel-nightly. Please reopen if the problem persists with that commit.
Comment 4 Yorick Peterse 2016-09-07 12:23:24 UTC
Thanks Jani!


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.