diff mbox series

[V1] Add debug print in soc-dapm

Message ID 1614927242-19251-1-git-send-email-lkasam@codeaurora.org (mailing list archive)
State New, archived
Headers show
Series [V1] Add debug print in soc-dapm | expand

Commit Message

Laxminath Kasam March 5, 2021, 6:54 a.m. UTC
Add debug print useful for issue analysis in soc-dapm.
This print for dapm widgets useful for debugging to find
widgets powering up and down.

Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
---
 sound/soc/soc-dapm.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Mark Brown March 5, 2021, 9:59 a.m. UTC | #1
On Fri, Mar 05, 2021 at 12:24:02PM +0530, Laxminath Kasam wrote:
> Add debug print useful for issue analysis in soc-dapm.
> This print for dapm widgets useful for debugging to find
> widgets powering up and down.

There's already fairly extensive tracepoints for DAPM - this seems to
correspond to snd_soc_dapm_widget_power, though it's at the application
time rather than the queue time so we could add another tracepoint for
this if you like?  I can see that the separate tracepoint would be
useful, I mostly use the regmap tracepoints for that purpose but not
every widget has register I/O.  Tracepoints are less noisy for the
system as a whole than tracing every DAPM operation in dmesg, that tends
to irritate other users if it's left in as standard.
b_lkasam@codeaurora.org March 5, 2021, 2:37 p.m. UTC | #2
On 2021-03-05 15:29, Mark Brown wrote:
> On Fri, Mar 05, 2021 at 12:24:02PM +0530, Laxminath Kasam wrote:
>> Add debug print useful for issue analysis in soc-dapm.
>> This print for dapm widgets useful for debugging to find
>> widgets powering up and down.
> 
> There's already fairly extensive tracepoints for DAPM - this seems to
> correspond to snd_soc_dapm_widget_power, though it's at the application
> time rather than the queue time so we could add another tracepoint for
> this if you like?  I can see that the separate tracepoint would be
> useful, I mostly use the regmap tracepoints for that purpose but not
> every widget has register I/O.  Tracepoints are less noisy for the
> system as a whole than tracing every DAPM operation in dmesg, that 
> tends
> to irritate other users if it's left in as standard.

Thanks Mark for the response. But this is not default err/info print and
only dynamic debug print which should not result in noise. In case of
customer OEMs/final product versions where less options of debugging,
dynamic dmesg logging is preferable provided faster and this print is 
used
to identify issues debug fastly sometimes.

--
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, 
Inc.,
is a member of Code Aurora Forum, a Linux Foundation Collaborative 
Project.
Mark Brown March 5, 2021, 4:15 p.m. UTC | #3
On Fri, Mar 05, 2021 at 08:07:19PM +0530, b_lkasam@codeaurora.org wrote:
> On 2021-03-05 15:29, Mark Brown wrote:

> > this if you like?  I can see that the separate tracepoint would be
> > useful, I mostly use the regmap tracepoints for that purpose but not
> > every widget has register I/O.  Tracepoints are less noisy for the
> > system as a whole than tracing every DAPM operation in dmesg, that tends
> > to irritate other users if it's left in as standard.

> Thanks Mark for the response. But this is not default err/info print and
> only dynamic debug print which should not result in noise. In case of
> customer OEMs/final product versions where less options of debugging,
> dynamic dmesg logging is preferable provided faster and this print is used
> to identify issues debug fastly sometimes.

This is precisely the use case tracepoints were added for and I know
that they are being succesfully used in the development of major mobile
handsets.  They are very low overhead, you can even leave them recording
in production usage without getting in anyone's way, and they're also
simple to flip on and off at runtime.
diff mbox series

Patch

diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index b005f9e..09d35df 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -1717,6 +1717,13 @@  static void dapm_seq_run(struct snd_soc_card *card,
 			break;
 		}
 
+		/*
+		 * Add this debug log to keep track of widgets being
+		 * powered-up and powered-down.
+		 */
+		dev_dbg(w->dapm->dev, "dapm: powering %s widget %s\n",
+			power_up ? "up" : "down", w->name);
+
 		if (ret < 0)
 			dev_err(w->dapm->dev,
 				"ASoC: Failed to apply widget power: %d\n", ret);