On Fri, 24 Jun 2011 14:31:47 -0700, Ben Widawsky <[email protected]> wrote: > The failure is as follows: > > 1. Userspace gets forcewake lock, lock count >=1 > 2. GPU hang/reset occurs (forcewake bit is reset) > 3. count is now incorrect > > The failure can only occur when using the forcewake userspace lock. > > This has the unfortunate consequence of messing up the driver as well as > userspace, unless userspace closes the debugfs file, the kernel will > never end up waking the GT since the refcount will be > 1. > > The solution is to try to recover the correct forcewake state based on > the refcount. There is a period of time where userspace reads/writes may > occur after the reset, before the GT has been forcewaked. The interface > was never designed to be a perfect solution for userspace reads/writes, > and the kernel portion is fixed by this patch. > > Suggested-by: Chris Wilson <[email protected]> > Signed-off-by: Ben Widawsky <[email protected]>
Excellent change log. My only quibble is that we should do this as gen6_post_reset(), but that can be done when we more tasks to perform after reseting the GPU on different generations. Reviewed-by: Chris Wilson <[email protected]> -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
