Summary: | Deadlock under load in via_dmablit.c on VT3122 hardware | ||||||
---|---|---|---|---|---|---|---|
Product: | DRI | Reporter: | Simon Farnsworth <simon.farnsworth> | ||||
Component: | DRM/other | Assignee: | Default DRI bug account <dri-devel> | ||||
Status: | RESOLVED FIXED | QA Contact: | |||||
Severity: | normal | ||||||
Priority: | medium | ||||||
Version: | XOrg git | ||||||
Hardware: | x86 (IA32) | ||||||
OS: | Linux (All) | ||||||
Whiteboard: | |||||||
i915 platform: | i915 features: | ||||||
Attachments: |
|
Description
Simon Farnsworth
2007-07-11 05:46:33 UTC
Created attachment 10665 [details] [review] A patch to fix the deadlock By limiting the number of blitq entries that can be used to one fewer than the total in the list, we ensure that via_dmablit_workqueue can always free up blitq slots, as blitq->cur can never equal blitq->serviced. Commited and pushed. Good catch. I know this one has caused you trouble for a while. The blit queue should really be a linked list, and will hopefully se a change some day. Perhaps based on the new memory manager. Out of interest... Do you manage to fill the blit queue with video blits only? /Thomas In the trouble case, we've got one video and 7 pixmaps being sent to the driver. AFAICT, when we die, we've got several video frames sent to the driver in quick succession by Xine, plus the pixmaps. The result is pain without this patch, and a brief period of high CPU load with it (as the X driver spins waiting for the hardware to catch up). As a side note, we're happy to test any reworking people do of the blit queue. I can set up my test case quite quickly, and leave it running until it breaks (or provides other useful debug information). |
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.