From f74e89bd893194cbdf5c96a912e14def6bb96895 Mon Sep 17 00:00:00 2001 From: Xiaoyu Ye Date: Mon, 8 Jan 2018 18:09:29 -0800 Subject: [PATCH] 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 --- asoc/msm-compress-q6-v2.c | 4 +--- dsp/q6asm.c | 9 +++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/asoc/msm-compress-q6-v2.c b/asoc/msm-compress-q6-v2.c index be10bc1690fc..e741c2ddb33c 100644 --- a/asoc/msm-compress-q6-v2.c +++ b/asoc/msm-compress-q6-v2.c @@ -2788,12 +2788,10 @@ static int msm_compr_pointer(struct snd_compr_stream *cstream, rc = q6asm_get_session_time( prtd->audio_client, &prtd->marker_timestamp); if (rc < 0) { - pr_err("%s: Get Session Time return =%lld\n", - __func__, timestamp); if (atomic_read(&prtd->error)) return -ENETRESET; else - return -EAGAIN; + return rc; } } } else { diff --git a/dsp/q6asm.c b/dsp/q6asm.c index 934fc580affb..948fc626314c 100644 --- a/dsp/q6asm.c +++ b/dsp/q6asm.c @@ -9644,16 +9644,17 @@ int q6asm_get_session_time(struct audio_client *ac, uint64_t *tstamp) ac->session, mtmx_params.hdr.opcode); rc = apr_send_pkt(ac->apr, (uint32_t *) &mtmx_params); if (rc < 0) { - pr_err("%s: Commmand 0x%x failed %d\n", __func__, - mtmx_params.hdr.opcode, rc); - goto fail_cmd; + dev_err_ratelimited(ac->dev, "%s: Get Session Time failed %d\n", + __func__, rc); + return rc; } + rc = wait_event_timeout(ac->time_wait, (atomic_read(&ac->time_flag) == 0), msecs_to_jiffies(TIMEOUT_MS)); if (!rc) { pr_err("%s: timeout in getting session time from DSP\n", - __func__); + __func__); goto fail_cmd; }