ASoC: trace: add component to set_bias_level trace events
authorLuca Ceresoli <luca.ceresoli@bootlin.com>
Wed, 6 Mar 2024 09:30:00 +0000 (10:30 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 6 Mar 2024 14:03:26 +0000 (14:03 +0000)
The snd_soc_bias_level_start and snd_soc_bias_level_done trace events
currently look like:

           aplay-229   [000]  1250.140778: snd_soc_bias_level_start: card=vscn-2046 val=1
           aplay-229   [000]  1250.140784: snd_soc_bias_level_done: card=vscn-2046 val=1
           aplay-229   [000]  1250.140786: snd_soc_bias_level_start: card=vscn-2046 val=2
           aplay-229   [000]  1250.140788: snd_soc_bias_level_done: card=vscn-2046 val=2
    kworker/u8:1-21    [000]  1250.140871: snd_soc_bias_level_start: card=vscn-2046 val=1
    kworker/u8:0-11    [000]  1250.140951: snd_soc_bias_level_start: card=vscn-2046 val=1
    kworker/u8:0-11    [000]  1250.140956: snd_soc_bias_level_done: card=vscn-2046 val=1
    kworker/u8:0-11    [000]  1250.140959: snd_soc_bias_level_start: card=vscn-2046 val=2
    kworker/u8:0-11    [000]  1250.140961: snd_soc_bias_level_done: card=vscn-2046 val=2
    kworker/u8:1-21    [000]  1250.167219: snd_soc_bias_level_done: card=vscn-2046 val=1
    kworker/u8:1-21    [000]  1250.167222: snd_soc_bias_level_start: card=vscn-2046 val=2
    kworker/u8:1-21    [000]  1250.167232: snd_soc_bias_level_done: card=vscn-2046 val=2
    kworker/u8:0-11    [000]  1250.167440: snd_soc_bias_level_start: card=vscn-2046 val=3
    kworker/u8:0-11    [000]  1250.167444: snd_soc_bias_level_done: card=vscn-2046 val=3
    kworker/u8:1-21    [000]  1250.167497: snd_soc_bias_level_start: card=vscn-2046 val=3
    kworker/u8:1-21    [000]  1250.167506: snd_soc_bias_level_done: card=vscn-2046 val=3

There are clearly multiple calls, one per component, but they cannot be
discriminated from each other.

Change the ftrace events to also print the component name, to make it clear
which part of the code is involved. This requires changing the passed value
from a struct snd_soc_card, where the DAPM context is not kwown, to a
struct snd_soc_dapm_context where it is obviously known but the a card
pointer is also available.

With this change, the resulting trace becomes:

           aplay-247   [000]  1436.357332: snd_soc_bias_level_start: card=vscn-2046 component=(none) val=1
           aplay-247   [000]  1436.357338: snd_soc_bias_level_done: card=vscn-2046 component=(none) val=1
           aplay-247   [000]  1436.357340: snd_soc_bias_level_start: card=vscn-2046 component=(none) val=2
           aplay-247   [000]  1436.357343: snd_soc_bias_level_done: card=vscn-2046 component=(none) val=2
    kworker/u8:4-215   [000]  1436.357437: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=1
    kworker/u8:5-231   [000]  1436.357518: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=1
    kworker/u8:5-231   [000]  1436.357523: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=1
    kworker/u8:5-231   [000]  1436.357526: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=2
    kworker/u8:5-231   [000]  1436.357528: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=2
    kworker/u8:4-215   [000]  1436.383217: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=1
    kworker/u8:4-215   [000]  1436.383221: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=2
    kworker/u8:4-215   [000]  1436.383231: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=2
    kworker/u8:5-231   [000]  1436.383468: snd_soc_bias_level_start: card=vscn-2046 component=ff320000.i2s val=3
    kworker/u8:5-231   [000]  1436.383472: snd_soc_bias_level_done: card=vscn-2046 component=ff320000.i2s val=3
    kworker/u8:4-215   [000]  1436.383503: snd_soc_bias_level_start: card=vscn-2046 component=ff560000.codec val=3
    kworker/u8:4-215   [000]  1436.383513: snd_soc_bias_level_done: card=vscn-2046 component=ff560000.codec val=3

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Link: https://msgid.link/r/20240306-improve-asoc-trace-events-v1-1-edb252bbeb10@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/trace/events/asoc.h
sound/soc/soc-dapm.c

index 4d8ef71090af1c758a2804234ea747c68ad50e5b..b7ac7f100bb40915d966d45379aab5c1ec35504d 100644 (file)
@@ -17,38 +17,41 @@ struct snd_soc_card;
 struct snd_soc_dapm_widget;
 struct snd_soc_dapm_path;
 
-DECLARE_EVENT_CLASS(snd_soc_card,
+DECLARE_EVENT_CLASS(snd_soc_dapm,
 
-       TP_PROTO(struct snd_soc_card *card, int val),
+       TP_PROTO(struct snd_soc_dapm_context *dapm, int val),
 
-       TP_ARGS(card, val),
+       TP_ARGS(dapm, val),
 
        TP_STRUCT__entry(
-               __string(       name,           card->name      )
-               __field(        int,            val             )
+               __string(       card_name,      dapm->card->name)
+               __string(       comp_name,      dapm->component ? dapm->component->name : "(none)")
+               __field(        int,            val)
        ),
 
        TP_fast_assign(
-               __assign_str(name, card->name);
+               __assign_str(card_name, dapm->card->name);
+               __assign_str(comp_name, dapm->component ? dapm->component->name : "(none)");
                __entry->val = val;
        ),
 
-       TP_printk("card=%s val=%d", __get_str(name), (int)__entry->val)
+       TP_printk("card=%s component=%s val=%d",
+                 __get_str(card_name), __get_str(comp_name), (int)__entry->val)
 );
 
-DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_start,
+DEFINE_EVENT(snd_soc_dapm, snd_soc_bias_level_start,
 
-       TP_PROTO(struct snd_soc_card *card, int val),
+       TP_PROTO(struct snd_soc_dapm_context *dapm, int val),
 
-       TP_ARGS(card, val)
+       TP_ARGS(dapm, val)
 
 );
 
-DEFINE_EVENT(snd_soc_card, snd_soc_bias_level_done,
+DEFINE_EVENT(snd_soc_dapm, snd_soc_bias_level_done,
 
-       TP_PROTO(struct snd_soc_card *card, int val),
+       TP_PROTO(struct snd_soc_dapm_context *dapm, int val),
 
-       TP_ARGS(card, val)
+       TP_ARGS(dapm, val)
 
 );
 
index bffeea80277fc0b1f726c319d9ce4ed1eac83411..7e8a2a5312f5fc62ab4fd8eed3f07e8bf05d1ef6 100644 (file)
@@ -725,7 +725,7 @@ static int snd_soc_dapm_set_bias_level(struct snd_soc_dapm_context *dapm,
        struct snd_soc_card *card = dapm->card;
        int ret = 0;
 
-       trace_snd_soc_bias_level_start(card, level);
+       trace_snd_soc_bias_level_start(dapm, level);
 
        ret = snd_soc_card_set_bias_level(card, dapm, level);
        if (ret != 0)
@@ -739,7 +739,7 @@ static int snd_soc_dapm_set_bias_level(struct snd_soc_dapm_context *dapm,
 
        ret = snd_soc_card_set_bias_level_post(card, dapm, level);
 out:
-       trace_snd_soc_bias_level_done(card, level);
+       trace_snd_soc_bias_level_done(dapm, level);
 
        return ret;
 }