[Sound-open-firmware] the SOF state machine issue
zhigangw
zhigang.wu at linux.intel.com
Tue Jul 17 09:13:51 CEST 2018
Hello All:
I analysis the state machine of the SOF, and find something
incorrect.
I attached the diagram in this email.
In this diagram, I only draw the correct flow, the incorrect part I did
not draw it, if not,
It will cause this picture too complicated.
there are four states: ACTIVITY, PREPARE, READY, PAUSED in this state
machine.
between each state, there are several arrows, which represents the command.
Notes: the red arrow and word is added by myself.
The problem is:
1. When the component stays at "PREPARE", if the "PAUSE" command comes,
it will return error.
When the XRUN happens, the recover process will set the component in
this pipeline in "PREPARE" state,
At this time, the "PAUSE" command comes, which will cause this issue.
2. When the component stays at "PREPARE", the "RELEASE" command would
also comes.
Solution:
1. This is the first proposal:
I add the red arrow and word to display my solution.
When the "PAUSE" command comes, the state transfers from "PREPARE" to
"PAUSED".
When the "RELEASE" command comes, the state transfers from "PREPARE" to
"ACTIVITY".
2. This is the second proposal:
Make the "pipeline_xrun_recover()" function atomic, which might avoid
this kind of issue.
But which would have long latency.
Thanks
~Zhigang
More information about the Sound-open-firmware
mailing list