On Fri, Dec 05, 2014 at 09:42:35AM +0100, Takashi Iwai wrote: > At Thu, 4 Dec 2014 21:03:25 +0000, > Chris Wilson wrote: > > > > The current implementation of drm_read() faces a number of issues: > > > > 1. Upon an error, it consumes the event which may lead to the client > > blocking. > > 2. Upon an error, it forgets about events already copied > > 3. If it fails to copy a single event with O_NONBLOCK it falls into a > > infinite loop of reporting EAGAIN. > > 3. There is a race between multiple waiters and blocking reads of the > > events list. > > > > Here, we inline drm_dequeue_event() into drm_read() so that we can take > > the spinlock around the list walking and event copying, and importantly > > reorder the error handling to avoid the issues above. > > > > Cc: Takashi Iwai <tiwai@xxxxxxx> > > Reviewed-by: Takashi Iwai <tiwai@xxxxxxx> Merged to drm-misc with the tag for the drm_read testcase added. Thanks for the patch&reivew. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx