Messages in this thread | | | Date | Sun, 20 Jan 2019 23:21:40 +0100 | From | Anisse Astier <> | Subject | Re: [PATCH] staging: vchiq: Fix local event signalling |
| |
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@raspberrypi.org>
Tested-by: Anisse Astier <anisse@astier.eu>
Regards,
Anisse
| |