Summary: | [SNB bisected] GPU hangs when running firefox-36-20090609.trace | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | DRI | Reporter: | meng <mengmeng.meng> | ||||||
Component: | DRM/Intel | Assignee: | Chris Wilson <chris> | ||||||
Status: | CLOSED FIXED | QA Contact: | |||||||
Severity: | normal | ||||||||
Priority: | medium | CC: | jbarnes | ||||||
Version: | unspecified | ||||||||
Hardware: | Other | ||||||||
OS: | Linux (All) | ||||||||
Whiteboard: | |||||||||
i915 platform: | i915 features: | ||||||||
Attachments: |
|
Description
meng
2011-03-14 01:07:51 UTC
Created attachment 44430 [details]
The dmesg for this bug
Ok, I've reproduced this on next and does seem to be a ringbuffer overflow. Much to my surprise. After fiddling a little bit, it still hangs without the suspicious ringbuffer wrapping. Also reproduced a very similar GPU hang running the trace on a HuronRiver (rev09). Created attachment 44622 [details] [review] Flush BLT before the interrupt I am waiting on confirmation that commit fa0fd4d6f815d05c6f87f11df2cac8a9003cab74 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Mar 19 22:26:49 2011 +0000 drm/i915: Restore missing command flush before interrupt on BLT ring We always skipped flushing the BLT ring if the request flush did not include the RENDER domain. However, this neglects that we try to flush the COMMAND domain after every batch and before the breadcrumb interrupt (to make sure the batch is indeed completed prior to the interrupt firing and so insuring CPU coherency). As a result of the missing flush, incoherency did indeed creep in, most notable when using lots of command buffers and so potentially rewritting an active command buffer (i.e. the GPU was still executing from it even though the following interrupt had already fired and the request/buffer retired). As all ring->flush routines now have the same preconditions, de-duplicate and move those checks up into i915_gem_flush_ring(). Fixes gem_linear_blit. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=35284 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> in drm-intel-staging fixes this bug. we can compile it successfully unless deleted the sentence "c:702 drivers/usb/serial/usb_wwan.c" in drm-intel-staging.Even if compiled successfully, system can't work normally on SugarBay.I'm sorry for that.Could you please look at the ERROR when compiling? drivers/usb/serial/usb_wwan.c:In function ‘play_delayed’: drivers/usb/serial/usb_wwan.c:702: error: ‘struct dev_pm_info’ has no member named ‘usage_count’ make[5]: *** [drivers/usb/serial/usb_wwan.o] Error 1 make[4]: *** [drivers/usb/serial] Error 2 make[3]: *** [drivers/usb] Error 2 make[2]: *** [drivers] Error 2 make[1]: *** [binrpm-pkg] Error 2 make: *** [binrpm-pkg] Error 2 I rebased drm-intel-staging on drm-core-next, so the compilation issue should be no more and provide a working system on which to test. It works fine when testing in the commit 87862b8b(drm/i915: Restore missing command flush before interrupt on BLT ring) on SugarBay. commit d2023bf8be6c39d45a1a08d0bd8efb126701634c Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Sat Mar 19 22:26:49 2011 +0000 drm/i915: Restore missing command flush before interrupt on BLT ring We always skipped flushing the BLT ring if the request flush did not include the RENDER domain. However, this neglects that we try to flush the COMMAND domain after every batch and before the breadcrumb interrupt (to make sure the batch is indeed completed prior to the interrupt firing and so insuring CPU coherency). As a result of the missing flush, incoherency did indeed creep in, most notable when using lots of command buffers and so potentially rewritting an active command buffer (i.e. the GPU was still executing from it even though the following interrupt had already fired and the request/buffer retired). As all ring->flush routines now have the same preconditions, de-duplicate and move those checks up into i915_gem_flush_ring(). Fixes gem_linear_blit. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=35284 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Tested-by: mengmeng.meng@intel.com Verified with the commit d2023bf8be6c39d45a1a08d0bd8efb126701634c,it works fine. Closing old verified+fixed. |
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.