On Tue, 2009-01-06 at 10:41 -0800, Jesse Barnes wrote:
> This patch adds a sanity check to drmWaitVBlank to prevent hangs.  Since the
> server interrupts syscalls pretty frequently with SIGALM, we tend to restart
> syscalls when EINTR is returned.  That means when a vblank timeout happens,
> we probably won't catch it (it happens after 3s, and SIGALM happens every few
> ms), so we can fairly easily get stuck restarting the vblank wait ioctl if
> something fishy is going on (like vblank interrupts are disabled for some
> reason).
> 
> So this patch removes the top level restart code, pushing it into the vblank
> wait ioctl wrapper, while adding a timeout.  If there are cases where more
> than 1s waits are desirable, we'd probably need to check the sequence numbers
> and come up with a more reasonable value, or add a new call that takes a
> timeout parameter.

Uh, changing drmIoctl to return on EINTR seems like a bad plan. I'd hack
up drmWaitVBlank to do the ioctl directly instead.

> Any thoughts here?  I chose to use clock_gettime(CLOCK_MONOTONIC..) to avoid
> any issues with the TOD clock getting reset under us; I'm not sure if that's
> safe everywhere and a simpler method is probably possible too...

-- 
keith.pack...@intel.com

Attachment: signature.asc
Description: This is a digitally signed message part

------------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to