On Wed, Dec 26, 2012 at 11:20:41PM -0500, Daniel Gnoutcheff wrote: > From: Chris Wilson <[email protected]> > > commit b4a98e57fc27854b5938fc8b08b68e5e68b91e1f upstream. > > If we accumulate unpin tasks because we are pageflipping faster than the > system can schedule its workers, we can effectively create a > pin-leak. The solution taken here is to limit the number of unpin tasks > we have per-crtc and to flush those outstanding tasks if we accumulate > too many. This should prevent any jitter in the normal case, and also > prevent the hang if we should run too fast. > > Note: It is important that we switch from the system workqueue to our > own dev_priv->wq since all work items on that queue are guaranteed to > only need the dev->struct_mutex and not any modeset resources. For > otherwise if we have a work item ahead in the queue which needs the > modeset lock (like the output detect work used by both polling or > hpd), this work and so the unpin work will never execute since the > pageflip code already holds that lock. Unfortunately there's no > lockdep support for this scenario in the workqueue code. > > Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=46991 > Reported-and-tested-by: Tvrtko Ursulin <[email protected]> > Signed-off-by: Chris Wilson <[email protected]> > [danvet: Added note about workqueu deadlock.] > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56337 > Signed-off-by: Daniel Vetter <[email protected]> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58732 > Tested-by: Daniel Gnoutcheff <[email protected]> > [dg: Removed a whitespace change] > --- > Please queue this for 3.7.y
Now applied. greg k-h -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
