msm: vidc: Fix a race condition in masking interrupts
Fix a race condition when interaction with firmware happens
in following sequence:
1. Firmware writes IDLE message into the message queue.
2. Driver writes a new command into command queue.
3. Firmware reads this command and starts processing it.
4. Driver checks if command queue is empty and finds it empty.
5. Firmware writes the response (of the command sent in 2) in
message queue. Firmware also writes another IDLE message and
sets the idle register.
6. Driver check if the IDLE register is set and finds it set.
7. Driver masks the interrupts. Since interrupts are masked,
driver misses the response written by firmware in 5.
This race condition is fixed by checking if message queue is
empty or not between 6 and 7.
Change-Id: I4e11210deeef855bb67337b8958aea73ae77d16b
Signed-off-by: Vinay Kalia <vkalia@codeaurora.org>
1 file changed