On Thu, 12 Sep 2013, Peter Zijlstra wrote: > On Thu, Sep 12, 2013 at 05:35:43PM +0100, Chris Wilson wrote: > > Not quite, as it would be possible for the evil userspace to trigger a > > GPU hang that would cause the sane userspace to spin indefinitely > > waiting for the error recovery to kick in. > > So with FIFOn+1 preempting FIFOn its a live-lock because the faulting > thread will forever keep yielding to itself since its the highest > priority task around, therefore the set_need_resched() is an absolute > NOP in that case. > > For OTHER it might run another task with set_need_resched(), without > set_need_resched() it'll simply spin on the fault until it runs out of > time and gets force preempted and another task gets to run. > > So for either case, the set_need_resched() doesn't make an appreciable > difference. > > Removing it will not make evil userspace much worse -- at worst it will > cause slightly more wasted cycles. Well, yield() is a completely doomed concept by definition no matter whether you add set_need_resched() or not. We really should put a schedule_timeout_uninterruptible(1hour); into the yield() implementation to get finally rid of it. Thanks, tglx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx