| Summary: | [bisected Xfree86 GPU hang]ut2004’s running will cause GPU hang | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | xorg | Reporter: | wang,jinjin <jinjin.wang> | ||||||
| Component: | Driver/intel | Assignee: | Carl Worth <cworth> | ||||||
| Status: | VERIFIED FIXED | QA Contact: | Xorg Project Team <xorg-team> | ||||||
| Severity: | normal | ||||||||
| Priority: | medium | ||||||||
| Version: | unspecified | ||||||||
| Hardware: | All | ||||||||
| OS: | Linux (All) | ||||||||
| Whiteboard: | |||||||||
| i915 platform: | i915 features: | ||||||||
| Attachments: |
|
||||||||
|
Description
wang,jinjin
2010-11-04 18:45:38 UTC
Created attachment 40057 [details]
i915_error_state
Created attachment 40058 [details]
Xorg.0.log
This is the classic GPU hang on modeset [0x01820000: MI_WAIT_FOR_EVENT] (we switch framebuffers whilst there is still pending rendering in the pipeline). The throttling would have kept that pipeline small enough that we only rarely hit this race before. However, drm-intel-next was supposed to contain magic to fix this without resorting to a GPU reset. Can you trigger the hang again and attach the contents of /sys/kernel/debug/dri/0/i915_ringbuffer_info? I just only run Urban terror on pk2.In fact, it also cause GPU hang. But openarena did not had the issue. The i915_ringbuffer_info will be : Ring render ring: Head : 00000268 Tail : 00000268 Size : 00020000 Active : 00000268 Control : 0001f003 Start : 02001000 either Urban terror or ut2004 run over *sigh. Another example of the documentation not matching reality. "RB_WAIT: Indicates that this ring has executed a WAIT_FOR_EVENT instruction and is currently waiting." Obviously this does not apply if the command was executed via a batchbuffer. Time for plan B. I applied: commit a44a63d2ff6c01c3dc61de6f736dd441ddd25e52 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Nov 5 09:58:45 2010 +0000 Wait for any pending rendering before switching modes. A perennial problem we have is the accursed WAIT_FOR_EVENT hangs, which occur when we switch the framebuffer before the WAIT_FOR_EVENT completes and upsets the GPU. We have tried more subtle approaches to detected these and fix them up in the kernel, to no avail. What we need to do is to delay the framebuffer flip until the WAIT completes, which is quite tricky in the kernel without new ioctls and round-trips. Instead, apply the big hammer from userspace and synchronise all rendering before changing the framebuffer. I expect this not to cause noticeable latency on switching modes (far less than the actual modeswitch) and should stop these hangs once and for all. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=31401 (...) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> to xf86-video-intel, which I think should prevent these hangs (once and for all!) I verified it with newest commit, that issue did not happen. |
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.