asoc: avoid excessive logging

Excessive logging by pr_err() could cause audio thread to stuck
in the printing session which results PD down notification timeout.
This eventually can cause ADSP PDR failure. Fix this issue by using
pr_err_ratelimited and dev_err_ratelimited to limit the number of
error messages during the ADSP PDR.

Change-Id: I68b617fef53ebd03ba79fd919bffd8c35e6eb048
Signed-off-by: Xiaoyu Ye <benyxy@codeaurora.org>
This commit is contained in:
Xiaoyu Ye 2018-01-08 18:09:29 -08:00 committed by Gerrit - the friendly Code Review server
parent 8766446f90
commit f74e89bd89
2 changed files with 6 additions and 7 deletions

View File

@ -2788,12 +2788,10 @@ static int msm_compr_pointer(struct snd_compr_stream *cstream,
rc = q6asm_get_session_time( rc = q6asm_get_session_time(
prtd->audio_client, &prtd->marker_timestamp); prtd->audio_client, &prtd->marker_timestamp);
if (rc < 0) { if (rc < 0) {
pr_err("%s: Get Session Time return =%lld\n",
__func__, timestamp);
if (atomic_read(&prtd->error)) if (atomic_read(&prtd->error))
return -ENETRESET; return -ENETRESET;
else else
return -EAGAIN; return rc;
} }
} }
} else { } else {

View File

@ -9644,16 +9644,17 @@ int q6asm_get_session_time(struct audio_client *ac, uint64_t *tstamp)
ac->session, mtmx_params.hdr.opcode); ac->session, mtmx_params.hdr.opcode);
rc = apr_send_pkt(ac->apr, (uint32_t *) &mtmx_params); rc = apr_send_pkt(ac->apr, (uint32_t *) &mtmx_params);
if (rc < 0) { if (rc < 0) {
pr_err("%s: Commmand 0x%x failed %d\n", __func__, dev_err_ratelimited(ac->dev, "%s: Get Session Time failed %d\n",
mtmx_params.hdr.opcode, rc); __func__, rc);
goto fail_cmd; return rc;
} }
rc = wait_event_timeout(ac->time_wait, rc = wait_event_timeout(ac->time_wait,
(atomic_read(&ac->time_flag) == 0), (atomic_read(&ac->time_flag) == 0),
msecs_to_jiffies(TIMEOUT_MS)); msecs_to_jiffies(TIMEOUT_MS));
if (!rc) { if (!rc) {
pr_err("%s: timeout in getting session time from DSP\n", pr_err("%s: timeout in getting session time from DSP\n",
__func__); __func__);
goto fail_cmd; goto fail_cmd;
} }