Repository navigation
bug fix: "DSP panic" when ALSA XRUN recovery #88
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -740,7 +740,7 @@ static int host_stop(struct comp_dev *dev) | |
| /* reset elements, to let next start from original one */ | ||
| host_elements_reset(dev); | ||
|
|
||
| dev->state = COMP_STATE_PAUSED; | ||
| dev->state = COMP_STATE_PREPARE; | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is really odd. You will end-up with different states in different components, see e.g. the SSP dai code where the component are set to PAUSED.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think when the component is truly paused, it should be paused state. |
||
| return 0; | ||
| } | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -449,6 +449,18 @@ static int ipc_stream_trigger(uint32_t header) | |
| trace_error_value(ipc_cmd); | ||
| } | ||
|
|
||
| /* when stop command comes, the pipeline has to be prepared. | ||
| * This case has to be taken into account: | ||
| * when ALSA has XRUN, it will send stop/start commands to FW | ||
| * and try to recover the pipepine. If we did not prepare | ||
| * the pipeline before start, the recover process will fail. | ||
| */ | ||
| if (cmd == COMP_TRIGGER_STOP) { | ||
| ret = pipeline_prepare(pcm_dev->cd->pipeline, pcm_dev->cd); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. that looks quite questionable. it's rather when you start that you should make sure things are prepared, no?
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It takes effect similar like the pipeline XRUN recover process.
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I make a stupid typo error, the Line459 should be: |
||
| if (ret < 0) | ||
| trace_ipc_error("eR1"); | ||
| } | ||
|
|
||
| return ret; | ||
| } | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
WTH?
If you are in PREPARE state you set the component to PREPARE? I call this a no-op...
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
conform with the previous RFC changed in src/audio/host.c