Hi Phil, On Fri, Jan 11, 2019 at 11:34:53AM +0000, Phil Elwell wrote: > Prior to the recent event reworking (see Fixes), thread synchronisation > was implemented using completions, the worker thread being woken with > a call to complete(). The replacement uses waitqueues, which are more > like condition variables in that the waiting thread is only woken if > the condition is true. > > When the VPU signals the ARM, it first sets the event's fired flag to > indicate which event is being signalled, but the places in the > ARM-side code where the worker thread is being woken - > remote_event_signal_local via request_poll - did not do so as it > wasn't previously necessary, and since the armed flag was being > cleared this lead to a deadlock. This fixes an issue I've had on linux 5.0-pre to 5.0-rc2+: the bcm2835-audio driver would block on close, and then nothing would work until the process was killed. Sample log: bcm2835_audio bcm2835_audio: failed to close VCHI service connection (status=1) > > Fixes: 852b2876a8a8 ("staging: vchiq: rework remove_event handling") > Signed-off-by: Phil Elwell <phil@xxxxxxxxxxxxxxx> Tested-by: Anisse Astier <anisse@xxxxxxxxx> Regards, Anisse _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel