Re: broonie-sound/for-next bisection: baseline.bootrr.asoc-simple-card-probed on kontron-sl28-var3-ads2

From: Guillaume Tucker
Date: Thu Apr 22 2021 - 09:37:25 EST


Hi Morimoto-san,

Please see the bisection report below about the asoc-simple-card
driver failing to probe on kontron-sl28-var3-ads2 in today's
broonie-sound tree. I believe this has not reached linux-next
yet.

Reports aren't automatically sent to the public while we're
trialing new bisection features on kernelci.org but this one
looks valid.

Here's the full boot log:

https://storage.kernelci.org/broonie-sound/for-next/v5.12-rc8-542-g80e0ab4291498/arm64/defconfig/gcc-8/lab-kontron/baseline-kontron-sl28-var3-ads2.html

More details can be found here:

https://linux.kernelci.org/test/case/id/608089974135ccea439b779c/

Please let us know if you need any help debugging the issue or to
try a fix.

Best wishes,
Guillaume


On 22/04/2021 04:06, KernelCI bot wrote:
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> * This automated bisection report was sent to you on the basis *
> * that you may be involved with the breaking commit it has *
> * found. No manual investigation has been done to verify it, *
> * and the root cause of the problem may be somewhere else. *
> * *
> * If you do send a fix, please include this trailer: *
> * Reported-by: "kernelci.org bot" <bot@xxxxxxxxxxxx> *
> * *
> * Hope this helps! *
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>
> broonie-sound/for-next bisection: baseline.bootrr.asoc-simple-card-probed on kontron-sl28-var3-ads2
>
> Summary:
> Start: 80e0ab429149 Merge remote-tracking branch 'asoc/for-5.13' into asoc-next
> Plain log: https://storage.kernelci.org/broonie-sound/for-next/v5.12-rc8-542-g80e0ab4291498/arm64/defconfig+CONFIG_RANDOMIZE_BASE=y/gcc-8/lab-kontron/baseline-kontron-sl28-var3-ads2.txt
> HTML log: https://storage.kernelci.org/broonie-sound/for-next/v5.12-rc8-542-g80e0ab4291498/arm64/defconfig+CONFIG_RANDOMIZE_BASE=y/gcc-8/lab-kontron/baseline-kontron-sl28-var3-ads2.html
> Result: 59c35c44a9cf ASoC: simple-card: add simple_parse_node()
>
> Checks:
> revert: PASS
> verify: PASS
>
> Parameters:
> Tree: broonie-sound
> URL: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
> Branch: for-next
> Target: kontron-sl28-var3-ads2
> CPU arch: arm64
> Lab: lab-kontron
> Compiler: gcc-8
> Config: defconfig+CONFIG_RANDOMIZE_BASE=y
> Test case: baseline.bootrr.asoc-simple-card-probed
>
> Breaking commit found:
>
> -------------------------------------------------------------------------------
> commit 59c35c44a9cf89a83a92a8d26749e59497d0317d
> Author: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>
> Date: Wed Apr 21 14:45:48 2021 +0900
>
> ASoC: simple-card: add simple_parse_node()
>
> Parse dai/tdm/clk are common for both CPU/Codec node.
> This patch creates simple_parse_node() for it and share the code.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>
> Link: https://lore.kernel.org/r/87czuoi41f.wl-kuninori.morimoto.gx@xxxxxxxxxxx
> Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
>
> diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c
> index a1373be4558f..91af4eca9c86 100644
> --- a/sound/soc/generic/simple-card.c
> +++ b/sound/soc/generic/simple-card.c
> @@ -93,12 +93,11 @@ static void simple_parse_convert(struct device *dev,
> }
>
> static void simple_parse_mclk_fs(struct device_node *top,
> - struct device_node *cpu,
> - struct device_node *codec,
> + struct device_node *np,
> struct simple_dai_props *props,
> char *prefix)
> {
> - struct device_node *node = of_get_parent(cpu);
> + struct device_node *node = of_get_parent(np);
> char prop[128];
>
> snprintf(prop, sizeof(prop), "%smclk-fs", PREFIX);
> @@ -106,12 +105,57 @@ static void simple_parse_mclk_fs(struct device_node *top,
>
> snprintf(prop, sizeof(prop), "%smclk-fs", prefix);
> of_property_read_u32(node, prop, &props->mclk_fs);
> - of_property_read_u32(cpu, prop, &props->mclk_fs);
> - of_property_read_u32(codec, prop, &props->mclk_fs);
> + of_property_read_u32(np, prop, &props->mclk_fs);
>
> of_node_put(node);
> }
>
> +static int simple_parse_node(struct asoc_simple_priv *priv,
> + struct device_node *np,
> + struct link_info *li,
> + char *prefix,
> + int is_cpu)
> +{
> + struct device *dev = simple_priv_to_dev(priv);
> + struct device_node *top = dev->of_node;
> + struct snd_soc_dai_link *dai_link = simple_priv_to_link(priv, li->link);
> + struct simple_dai_props *dai_props = simple_priv_to_props(priv, li->link);
> + struct snd_soc_dai_link_component *dlc;
> + struct asoc_simple_dai *dai;
> + int ret, single = 0;
> +
> + if (is_cpu) {
> + dlc = asoc_link_to_cpu(dai_link, 0);
> + dai = simple_props_to_dai_cpu(dai_props, 0);
> + } else {
> + dlc = asoc_link_to_codec(dai_link, 0);
> + dai = simple_props_to_dai_codec(dai_props, 0);
> + }
> +
> + simple_parse_mclk_fs(top, np, dai_props, prefix);
> +
> + ret = asoc_simple_parse_dai(np, dlc, &single);
> + if (ret)
> + return ret;
> +
> + ret = asoc_simple_parse_clk(dev, np, dai, dlc);
> + if (ret)
> + return ret;
> +
> + ret = asoc_simple_parse_tdm(np, dai);
> + if (ret)
> + return ret;
> +
> + if (is_cpu) {
> + struct snd_soc_dai_link_component *platforms = asoc_link_to_platform(dai_link, 0);
> +
> + asoc_simple_canonicalize_cpu(dlc, single);
> + asoc_simple_canonicalize_platform(platforms, dlc);
> + }
> +
> + return 0;
> +}
> +
> static int simple_dai_link_of_dpcm(struct asoc_simple_priv *priv,
> struct device_node *np,
> struct device_node *codec,
> @@ -121,10 +165,8 @@ static int simple_dai_link_of_dpcm(struct asoc_simple_priv *priv,
> struct device *dev = simple_priv_to_dev(priv);
> struct snd_soc_dai_link *dai_link = simple_priv_to_link(priv, li->link);
> struct simple_dai_props *dai_props = simple_priv_to_props(priv, li->link);
> - struct asoc_simple_dai *dai;
> struct snd_soc_dai_link_component *cpus = asoc_link_to_cpu(dai_link, 0);
> struct snd_soc_dai_link_component *codecs = asoc_link_to_codec(dai_link, 0);
> - struct snd_soc_dai_link_component *platforms = asoc_link_to_platform(dai_link, 0);
> struct device_node *top = dev->of_node;
> struct device_node *node = of_get_parent(np);
> char *prefix = "";
> @@ -132,28 +174,18 @@ static int simple_dai_link_of_dpcm(struct asoc_simple_priv *priv,
>
> dev_dbg(dev, "link_of DPCM (%pOF)\n", np);
>
> - li->link++;
> -
> /* For single DAI link & old style of DT node */
> if (is_top)
> prefix = PREFIX;
>
> if (li->cpu) {
> - int is_single_links = 0;
> -
> /* Codec is dummy */
>
> /* FE settings */
> dai_link->dynamic = 1;
> dai_link->dpcm_merged_format = 1;
>
> - dai = simple_props_to_dai_cpu(dai_props, 0);
> -
> - ret = asoc_simple_parse_dai(np, cpus, &is_single_links);
> - if (ret)
> - goto out_put_node;
> -
> - ret = asoc_simple_parse_clk(dev, np, dai, cpus);
> + ret = simple_parse_node(priv, np, li, prefix, 1);
> if (ret < 0)
> goto out_put_node;
>
> @@ -162,9 +194,6 @@ static int simple_dai_link_of_dpcm(struct asoc_simple_priv *priv,
> cpus->dai_name);
> if (ret < 0)
> goto out_put_node;
> -
> - asoc_simple_canonicalize_cpu(cpus, is_single_links);
> - asoc_simple_canonicalize_platform(platforms, cpus);
> } else {
> struct snd_soc_codec_conf *cconf;
>
> @@ -174,14 +203,9 @@ static int simple_dai_link_of_dpcm(struct asoc_simple_priv *priv,
> dai_link->no_pcm = 1;
> dai_link->be_hw_params_fixup = asoc_simple_be_hw_params_fixup;
>
> - dai = simple_props_to_dai_codec(dai_props, 0);
> cconf = simple_props_to_codec_conf(dai_props, 0);
>
> - ret = asoc_simple_parse_dai(np, codecs, NULL);
> - if (ret < 0)
> - goto out_put_node;
> -
> - ret = asoc_simple_parse_clk(dev, np, dai, codecs);
> + ret = simple_parse_node(priv, np, li, prefix, 0);
> if (ret < 0)
> goto out_put_node;
>
> @@ -201,11 +225,6 @@ static int simple_dai_link_of_dpcm(struct asoc_simple_priv *priv,
> }
>
> simple_parse_convert(dev, np, &dai_props->adata);
> - simple_parse_mclk_fs(top, np, codec, dai_props, prefix);
> -
> - ret = asoc_simple_parse_tdm(np, dai);
> - if (ret)
> - goto out_put_node;
>
> ret = asoc_simple_parse_daifmt(dev, node, codec,
> prefix, &dai_link->dai_fmt);
> @@ -218,6 +237,8 @@ static int simple_dai_link_of_dpcm(struct asoc_simple_priv *priv,
> dai_link->init = asoc_simple_dai_init;
>
> out_put_node:
> + li->link++;
> +
> of_node_put(node);
> return ret;
> }
> @@ -230,23 +251,18 @@ static int simple_dai_link_of(struct asoc_simple_priv *priv,
> {
> struct device *dev = simple_priv_to_dev(priv);
> struct snd_soc_dai_link *dai_link = simple_priv_to_link(priv, li->link);
> - struct simple_dai_props *dai_props = simple_priv_to_props(priv, li->link);
> - struct asoc_simple_dai *cpu_dai = simple_props_to_dai_cpu(dai_props, 0);
> - struct asoc_simple_dai *codec_dai = simple_props_to_dai_codec(dai_props, 0);
> struct snd_soc_dai_link_component *cpus = asoc_link_to_cpu(dai_link, 0);
> struct snd_soc_dai_link_component *codecs = asoc_link_to_codec(dai_link, 0);
> struct snd_soc_dai_link_component *platforms = asoc_link_to_platform(dai_link, 0);
> - struct device_node *top = dev->of_node;
> struct device_node *cpu = NULL;
> struct device_node *node = NULL;
> struct device_node *plat = NULL;
> char prop[128];
> char *prefix = "";
> - int ret, single_cpu = 0;
> + int ret;
>
> cpu = np;
> node = of_get_parent(np);
> - li->link++;
>
> dev_dbg(dev, "link_of (%pOF)\n", node);
>
> @@ -262,13 +278,11 @@ static int simple_dai_link_of(struct asoc_simple_priv *priv,
> if (ret < 0)
> goto dai_link_of_err;
>
> - simple_parse_mclk_fs(top, cpu, codec, dai_props, prefix);
> -
> - ret = asoc_simple_parse_dai(cpu, cpus, &single_cpu);
> + ret = simple_parse_node(priv, cpu, li, prefix, 1);
> if (ret < 0)
> goto dai_link_of_err;
>
> - ret = asoc_simple_parse_dai(codec, codecs, NULL);
> + ret = simple_parse_node(priv, codec, li, prefix, 0);
> if (ret < 0)
> goto dai_link_of_err;
>
> @@ -276,22 +290,6 @@ static int simple_dai_link_of(struct asoc_simple_priv *priv,
> if (ret < 0)
> goto dai_link_of_err;
>
> - ret = asoc_simple_parse_tdm(cpu, cpu_dai);
> - if (ret < 0)
> - goto dai_link_of_err;
> -
> - ret = asoc_simple_parse_tdm(codec, codec_dai);
> - if (ret < 0)
> - goto dai_link_of_err;
> -
> - ret = asoc_simple_parse_clk(dev, cpu, cpu_dai, cpus);
> - if (ret < 0)
> - goto dai_link_of_err;
> -
> - ret = asoc_simple_parse_clk(dev, codec, codec_dai, codecs);
> - if (ret < 0)
> - goto dai_link_of_err;
> -
> ret = asoc_simple_set_dailink_name(dev, dai_link,
> "%s-%s",
> cpus->dai_name,
> @@ -302,13 +300,12 @@ static int simple_dai_link_of(struct asoc_simple_priv *priv,
> dai_link->ops = &simple_ops;
> dai_link->init = asoc_simple_dai_init;
>
> - asoc_simple_canonicalize_cpu(cpus, single_cpu);
> - asoc_simple_canonicalize_platform(platforms, cpus);
> -
> dai_link_of_err:
> of_node_put(plat);
> of_node_put(node);
>
> + li->link++;
> +
> return ret;
> }
> -------------------------------------------------------------------------------
>
>
> Git bisection log:
>
> -------------------------------------------------------------------------------
> git bisect start
> # good: [bf05bf16c76bb44ab5156223e1e58e26dfe30a88] Linux 5.12-rc8
> git bisect good bf05bf16c76bb44ab5156223e1e58e26dfe30a88
> # bad: [80e0ab4291498248157d2801c994dfaa09ef3082] Merge remote-tracking branch 'asoc/for-5.13' into asoc-next
> git bisect bad 80e0ab4291498248157d2801c994dfaa09ef3082
> # good: [d479f00b795ac62b24ef90f4ec421e65c3178ca7] ASoC: soc-pcm: indicate error message at dpcm_path_get()
> git bisect good d479f00b795ac62b24ef90f4ec421e65c3178ca7
> # good: [a96d2ba2d8248d5e8170f2f44f98d4a33329b08a] ASoC: codecs: tlv320aic3x: move I2C to separated file
> git bisect good a96d2ba2d8248d5e8170f2f44f98d4a33329b08a
> # good: [8577bf61a6359bf2387f85a2fda713a4f05185c3] Merge series "ASoC: rsnd: tidyup Renesas sound" from Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>:
> git bisect good 8577bf61a6359bf2387f85a2fda713a4f05185c3
> # good: [87143bfdb9f7ddc14b129fda610e114d29077596] Merge series "ASoC: remove more cppcheck warnings" from Pierre-Louis Bossart <pierre-louis.bossart@xxxxxxxxxxxxxxx>:
> git bisect good 87143bfdb9f7ddc14b129fda610e114d29077596
> # good: [23b16df6c9c91f70df070be43c5b13ef4016c1e7] Merge series "ASoC: audio-graph: cleanups" from Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>:
> git bisect good 23b16df6c9c91f70df070be43c5b13ef4016c1e7
> # good: [1fa27f35ee23b52e0bd708d00c272c5df805afc8] Merge series "ASoC: rt286/rt298: Fixes for DMIC2 config and combo jack" from David Ward <david.ward@xxxxxxxxxx>:
> git bisect good 1fa27f35ee23b52e0bd708d00c272c5df805afc8
> # bad: [434392271afcff350fe11730f12b831fffaf33eb] ASoC: simple-card: add simple_link_init()
> git bisect bad 434392271afcff350fe11730f12b831fffaf33eb
> # good: [e51237b8d3052251421770468903fa6e4446d158] ASoC: audio-graph: add graph_link_init()
> git bisect good e51237b8d3052251421770468903fa6e4446d158
> # bad: [59c35c44a9cf89a83a92a8d26749e59497d0317d] ASoC: simple-card: add simple_parse_node()
> git bisect bad 59c35c44a9cf89a83a92a8d26749e59497d0317d
> # first bad commit: [59c35c44a9cf89a83a92a8d26749e59497d0317d] ASoC: simple-card: add simple_parse_node()
> -------------------------------------------------------------------------------
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#10236): https://groups.io/g/kernelci-results/message/10236
> Mute This Topic: https://groups.io/mt/82277947/924702
> Group Owner: kernelci-results+owner@xxxxxxxxx
> Unsubscribe: https://groups.io/g/kernelci-results/unsub [guillaume.tucker@xxxxxxxxxxxxx]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>