Summary: | [i965] Uses 100% CPU with latest mesa/libdrm update | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | Bryce Harrington <bryce> | ||||||||||||||
Component: | Driver/intel | Assignee: | Eric Anholt <eric> | ||||||||||||||
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> | ||||||||||||||
Severity: | blocker | ||||||||||||||||
Priority: | high | CC: | quanxian.wang, sa, yingying.zhao | ||||||||||||||
Version: | 7.4 (2008.09) | Keywords: | regression | ||||||||||||||
Hardware: | x86 (IA32) | ||||||||||||||||
OS: | Linux (All) | ||||||||||||||||
Whiteboard: | |||||||||||||||||
i915 platform: | i915 features: | ||||||||||||||||
Attachments: |
|
Description
Bryce Harrington
2009-08-27 23:57:36 UTC
Created attachment 28969 [details]
BootDmesg.txt
Created attachment 28970 [details]
CurrentDmesg.txt
Created attachment 28971 [details]
Dependencies.txt
Created attachment 28972 [details]
XorgLog.txt
Created attachment 28973 [details]
XsessionErrors.txt
Created attachment 28974 [details]
gdb.txt
Just a quick question to clarify: Is it spinning inside drawWindowTexture() chain or are we doing lots of counter-productive work? Another couple of gdb traces, or ideally a sysprof, whilst it is spinning would be useful. I took several additional gdb traces but they all look more or less the same - something stuck in _mesa_copy_rect (). This is probably yet another case of the lack of LRUs on our fences causing failure. Writing a patch. *** Bug 23220 has been marked as a duplicate of this bug. *** *** Bug 23253 has been marked as a duplicate of this bug. *** *** Bug 23366 has been marked as a duplicate of this bug. *** pull request sent. commit a09ba7faf75fa4b21980d81de8e5f3d5c0785ccf Author: Eric Anholt <eric@anholt.net> Date: Sat Aug 29 12:49:51 2009 -0700 drm/i915: Fix CPU-spinning hangs related to fence usage by using an LRU. The lack of a proper LRU was partially worked around by taking the fence from the object containing the oldest seqno. But if there are multiple objects inactive, then they don't have seqnos and the first fence reg among them would be chosen. If you were trying to copy data between two mappings, this could result in each page fault stealing the fence from the other argument, and your application hanging. https://bugs.freedesktop.org/show_bug.cgi?id=23566 https://bugs.freedesktop.org/show_bug.cgi?id=23220 https://bugs.freedesktop.org/show_bug.cgi?id=23253 https://bugs.freedesktop.org/show_bug.cgi?id=23366 Cc: Stable Team <stable@kernel.org> Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> (In reply to comment #14) Hi, Eric I have put the patch into 2.6.31_RC7,the problem is still there. Are there more patches needed? My environment is libdrm2.4.12, Mesa_7.6, xserver-1.6.3,xf86-video-intel:2.8.1 > pull request sent. > > commit a09ba7faf75fa4b21980d81de8e5f3d5c0785ccf > Author: Eric Anholt <eric@anholt.net> > Date: Sat Aug 29 12:49:51 2009 -0700 > > drm/i915: Fix CPU-spinning hangs related to fence usage by using an LRU. > > The lack of a proper LRU was partially worked around by taking the fence > from the object containing the oldest seqno. But if there are multiple > objects inactive, then they don't have seqnos and the first fence reg > among them would be chosen. If you were trying to copy data between two > mappings, this could result in each page fault stealing the fence from > the other argument, and your application hanging. > > https://bugs.freedesktop.org/show_bug.cgi?id=23566 > https://bugs.freedesktop.org/show_bug.cgi?id=23220 > https://bugs.freedesktop.org/show_bug.cgi?id=23253 > https://bugs.freedesktop.org/show_bug.cgi?id=23366 > > Cc: Stable Team <stable@kernel.org> > Signed-off-by: Eric Anholt <eric@anholt.net> > Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> > I don't know about Compiz, but at least the problems I reported with Warzone 2100 and ETQW have been fixed with this patch. Reclose since it's reported fixed by Bryce. Yes, since updating to a kernel which includes this patch, I have been unable to reproduce the bug so far. I'll continue to keep an eye out for it, and encourage others to likewise test, but so far it appears this patch solved it. Good this commit went into 2.6.31. |
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.