diff for duplicates of <1498726219.27840.2.camel@baylibre.com> diff --git a/a/1.txt b/N1/1.txt index fd8ed5f..fbc293d 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -15,23 +15,23 @@ On Wed, 2017-06-28 at 18:07 +0100, Sudeep Holla wrote: > Thanks. > > > It does not work unfortunately. Still crashes but somewhere else: -> > [ 2.301482] [<ffff00000849e67c>] scpi_of_clk_src_get+0x14/0x58 -> > [ 2.307261] [<ffff000008495f40>] __of_clk_get_by_name+0x100/0x118 -> > [ 2.313297] [<ffff000008495fac>] clk_get+0x2c/0x78 -> > [ 2.318044] [<ffff00000856f4d0>] dev_pm_opp_get_opp_table+0xb0/0x118 -> > [ 2.324338] [<ffff00000856fd00>] dev_pm_opp_add+0x20/0x68 -> > [ 2.329687] [<ffff0000087a04f8>] scpi_init_opp_table+0xa8/0x188 -> > [ 2.335550] [<ffff00000879fb20>] +> > [????2.301482] [<ffff00000849e67c>] scpi_of_clk_src_get+0x14/0x58 +> > [????2.307261] [<ffff000008495f40>] __of_clk_get_by_name+0x100/0x118 +> > [????2.313297] [<ffff000008495fac>] clk_get+0x2c/0x78 +> > [????2.318044] [<ffff00000856f4d0>] dev_pm_opp_get_opp_table+0xb0/0x118 +> > [????2.324338] [<ffff00000856fd00>] dev_pm_opp_add+0x20/0x68 +> > [????2.329687] [<ffff0000087a04f8>] scpi_init_opp_table+0xa8/0x188 +> > [????2.335550] [<ffff00000879fb20>] > > _get_cluster_clk_and_freq_table+0x80/0x180 -> > [ 2.342450] [<ffff0000087a0010>] bL_cpufreq_init+0x3f0/0x480 -> > [ 2.348056] [<ffff00000879e4a0>] cpufreq_online+0xc0/0x658 -> > [ 2.353490] [<ffff00000879eac8>] cpufreq_add_dev+0x78/0x88 -> > [ 2.358924] [<ffff00000855b684>] subsys_interface_register+0x84/0xc8 -> > [ 2.365220] [<ffff00000879d8f8>] cpufreq_register_driver+0x138/0x1b8 -> > [ 2.371516] [<ffff0000087a0114>] bL_cpufreq_register+0x74/0x120 -> > [ 2.377381] [<ffff0000087a0600>] scpi_cpufreq_probe+0x28/0x38 -> > [ 2.383076] [<ffff00000855efb0>] platform_drv_probe+0x50/0xb8 -> > [ 2.388766] [<ffff00000855d144>] driver_probe_device+0x21c/0x2d8 +> > [????2.342450] [<ffff0000087a0010>] bL_cpufreq_init+0x3f0/0x480 +> > [????2.348056] [<ffff00000879e4a0>] cpufreq_online+0xc0/0x658 +> > [????2.353490] [<ffff00000879eac8>] cpufreq_add_dev+0x78/0x88 +> > [????2.358924] [<ffff00000855b684>] subsys_interface_register+0x84/0xc8 +> > [????2.365220] [<ffff00000879d8f8>] cpufreq_register_driver+0x138/0x1b8 +> > [????2.371516] [<ffff0000087a0114>] bL_cpufreq_register+0x74/0x120 +> > [????2.377381] [<ffff0000087a0600>] scpi_cpufreq_probe+0x28/0x38 +> > [????2.383076] [<ffff00000855efb0>] platform_drv_probe+0x50/0xb8 +> > [????2.388766] [<ffff00000855d144>] driver_probe_device+0x21c/0x2d8 > > > > Looks like a different route and I know why. I have added an extra check @@ -41,7 +41,7 @@ On Wed, 2017-06-28 at 18:07 +0100, Sudeep Holla wrote: > > don't > > remember seeing any which fails, at some point, to register a clocks and > > still -> > register successfully. +> > register successfully.? > > > > No problem, as I said I am fine with the patch you sent as a fix for now @@ -77,24 +77,24 @@ Is it possible that you may be causing more harm/damage playing with a broken HW I tried your last version, and it does not Oops, at least not for me. The end result still looks odd to me: -[ 1.115219] scpi_clocks scpi:clocks: failed to register clock 'vcpu' -[ 1.159490] cpu cpu0: _get_cluster_clk_and_freq_table: Failed to get clk for +[????1.115219] scpi_clocks scpi:clocks: failed to register clock 'vcpu' +[????1.159490] cpu cpu0: _get_cluster_clk_and_freq_table: Failed to get clk for cpu: 0, cluster: 0 -[ 1.162986] cpu cpu0: _get_cluster_clk_and_freq_table: Failed to get data for +[????1.162986] cpu cpu0: _get_cluster_clk_and_freq_table: Failed to get data for cluster: 0 -[ 1.170945] cpu cpu1: _get_cluster_clk_and_freq_table: Failed to get clk for +[????1.170945] cpu cpu1: _get_cluster_clk_and_freq_table: Failed to get clk for cpu: 1, cluster: 0 -[ 1.179634] cpu cpu1: _get_cluster_clk_and_freq_table: Failed to get data for +[????1.179634] cpu cpu1: _get_cluster_clk_and_freq_table: Failed to get data for cluster: 0 -[ 1.187654] cpu cpu2: _get_cluster_clk_and_freq_table: Failed to get clk for +[????1.187654] cpu cpu2: _get_cluster_clk_and_freq_table: Failed to get clk for cpu: 2, cluster: 0 -[ 1.196284] cpu cpu2: _get_cluster_clk_and_freq_table: Failed to get data for +[????1.196284] cpu cpu2: _get_cluster_clk_and_freq_table: Failed to get data for cluster: 0 -[ 1.204375] cpu cpu3: _get_cluster_clk_and_freq_table: Failed to get clk for +[????1.204375] cpu cpu3: _get_cluster_clk_and_freq_table: Failed to get clk for cpu: 3, cluster: 0 -[ 1.212911] cpu cpu3: _get_cluster_clk_and_freq_table: Failed to get data for +[????1.212911] cpu cpu3: _get_cluster_clk_and_freq_table: Failed to get data for cluster: 0 -[ 1.220612] arm_big_little: bL_cpufreq_register: Registered platform driver: +[????1.220612] arm_big_little: bL_cpufreq_register: Registered platform driver: scpi So now, I have an scpi clock provider which registers successfully but fails to @@ -114,35 +114,35 @@ manages to register but has no clock cpu clock to drive ... > @@ -192,7 +192,7 @@ scpi_of_clk_src_get(struct of_phandle_args *clkspec, > void *data) > -> for (count = 0; count < clk_data->clk_num; count++) { -> sclk = clk_data->clk[count]; -> - if (idx == sclk->id) -> + if (sclk && idx == sclk->id) -> return &sclk->hw; -> } +> ????????for (count = 0; count < clk_data->clk_num; count++) { +> ????????????????sclk = clk_data->clk[count]; +> -???????????????if (idx == sclk->id) +> +???????????????if (sclk && idx == sclk->id) +> ????????????????????????return &sclk->hw; +> ????????} > > @@ -245,11 +245,14 @@ static int scpi_clk_add(struct device *dev, struct > device_node *np, -> sclk->id = val; +> ????????????????sclk->id = val; > -> err = scpi_clk_ops_init(dev, match, sclk, name); -> - if (err) -> + if (err) { -> dev_err(dev, "failed to register clock '%s'\n", +> ????????????????err = scpi_clk_ops_init(dev, match, sclk, name); +> -???????????????if (err) +> +???????????????if (err) { +> ????????????????????????dev_err(dev, "failed to register clock '%s'\n", > name); -> - else -> + clk_data->clk[idx] = NULL; -> + devm_kfree(dev, sclk); -> + } else { -> dev_dbg(dev, "Registered clock '%s'\n", name); -> - clk_data->clk[idx] = sclk; -> + clk_data->clk[idx] = sclk; -> + } -> } -> -> return of_clk_add_hw_provider(np, scpi_of_clk_src_get, clk_data); +> -???????????????else +> +???????????????????????clk_data->clk[idx] = NULL; +> +???????????????????????devm_kfree(dev, sclk); +> +???????????????} else { +> ????????????????????????dev_dbg(dev, "Registered clock '%s'\n", name); +> -???????????????clk_data->clk[idx] = sclk; +> +???????????????????????clk_data->clk[idx] = sclk; +> +???????????????} +> ????????} +> +> ????????return of_clk_add_hw_provider(np, scpi_of_clk_src_get, clk_data); > > -- > To unsubscribe from this list: send the line "unsubscribe linux-clk" in -> the body of a message to majordomo@vger.kernel.org -> More majordomo info at http://vger.kernel.org/majordomo-info.html +> the body of a message to majordomo at vger.kernel.org +> More majordomo info at??http://vger.kernel.org/majordomo-info.html diff --git a/a/content_digest b/N1/content_digest index 7c5da93..ff5f2c1 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -4,17 +4,10 @@ "ref\076efd418-9fd5-6ac5-b4c9-c75c5df69df0@arm.com\0" "ref\01498668381.2337.10.camel@baylibre.com\0" "ref\03e77fd3c-9807-10d4-3a8c-cab8b5562f6c@arm.com\0" - "From\0Jerome Brunet <jbrunet@baylibre.com>\0" - "Subject\0Re: [PATCH] clk: scpi: error when clock fails to register\0" + "From\0jbrunet@baylibre.com (Jerome Brunet)\0" + "Subject\0[PATCH] clk: scpi: error when clock fails to register\0" "Date\0Thu, 29 Jun 2017 10:50:19 +0200\0" - "To\0Sudeep Holla <sudeep.holla@arm.com>" - Michael Turquette <mturquette@baylibre.com> - " Stephen Boyd <sboyd@codeaurora.org>\0" - "Cc\0linux-arm-kernel@lists.infradead.org" - linux-clk@vger.kernel.org - linux-kernel@vger.kernel.org - Neil Armstrong <narmstrong@baylibre.com> - " Kevin Hilman <khilman@baylibre.com>\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" "On Wed, 2017-06-28 at 18:07 +0100, Sudeep Holla wrote:\n" @@ -34,23 +27,23 @@ "> Thanks.\n" "> \n" "> > It does not work unfortunately. Still crashes but somewhere else:\n" - "> > [\302\240\302\240\302\240\302\2402.301482] [<ffff00000849e67c>] scpi_of_clk_src_get+0x14/0x58\n" - "> > [\302\240\302\240\302\240\302\2402.307261] [<ffff000008495f40>] __of_clk_get_by_name+0x100/0x118\n" - "> > [\302\240\302\240\302\240\302\2402.313297] [<ffff000008495fac>] clk_get+0x2c/0x78\n" - "> > [\302\240\302\240\302\240\302\2402.318044] [<ffff00000856f4d0>] dev_pm_opp_get_opp_table+0xb0/0x118\n" - "> > [\302\240\302\240\302\240\302\2402.324338] [<ffff00000856fd00>] dev_pm_opp_add+0x20/0x68\n" - "> > [\302\240\302\240\302\240\302\2402.329687] [<ffff0000087a04f8>] scpi_init_opp_table+0xa8/0x188\n" - "> > [\302\240\302\240\302\240\302\2402.335550] [<ffff00000879fb20>]\n" + "> > [????2.301482] [<ffff00000849e67c>] scpi_of_clk_src_get+0x14/0x58\n" + "> > [????2.307261] [<ffff000008495f40>] __of_clk_get_by_name+0x100/0x118\n" + "> > [????2.313297] [<ffff000008495fac>] clk_get+0x2c/0x78\n" + "> > [????2.318044] [<ffff00000856f4d0>] dev_pm_opp_get_opp_table+0xb0/0x118\n" + "> > [????2.324338] [<ffff00000856fd00>] dev_pm_opp_add+0x20/0x68\n" + "> > [????2.329687] [<ffff0000087a04f8>] scpi_init_opp_table+0xa8/0x188\n" + "> > [????2.335550] [<ffff00000879fb20>]\n" "> > _get_cluster_clk_and_freq_table+0x80/0x180\n" - "> > [\302\240\302\240\302\240\302\2402.342450] [<ffff0000087a0010>] bL_cpufreq_init+0x3f0/0x480\n" - "> > [\302\240\302\240\302\240\302\2402.348056] [<ffff00000879e4a0>] cpufreq_online+0xc0/0x658\n" - "> > [\302\240\302\240\302\240\302\2402.353490] [<ffff00000879eac8>] cpufreq_add_dev+0x78/0x88\n" - "> > [\302\240\302\240\302\240\302\2402.358924] [<ffff00000855b684>] subsys_interface_register+0x84/0xc8\n" - "> > [\302\240\302\240\302\240\302\2402.365220] [<ffff00000879d8f8>] cpufreq_register_driver+0x138/0x1b8\n" - "> > [\302\240\302\240\302\240\302\2402.371516] [<ffff0000087a0114>] bL_cpufreq_register+0x74/0x120\n" - "> > [\302\240\302\240\302\240\302\2402.377381] [<ffff0000087a0600>] scpi_cpufreq_probe+0x28/0x38\n" - "> > [\302\240\302\240\302\240\302\2402.383076] [<ffff00000855efb0>] platform_drv_probe+0x50/0xb8\n" - "> > [\302\240\302\240\302\240\302\2402.388766] [<ffff00000855d144>] driver_probe_device+0x21c/0x2d8\n" + "> > [????2.342450] [<ffff0000087a0010>] bL_cpufreq_init+0x3f0/0x480\n" + "> > [????2.348056] [<ffff00000879e4a0>] cpufreq_online+0xc0/0x658\n" + "> > [????2.353490] [<ffff00000879eac8>] cpufreq_add_dev+0x78/0x88\n" + "> > [????2.358924] [<ffff00000855b684>] subsys_interface_register+0x84/0xc8\n" + "> > [????2.365220] [<ffff00000879d8f8>] cpufreq_register_driver+0x138/0x1b8\n" + "> > [????2.371516] [<ffff0000087a0114>] bL_cpufreq_register+0x74/0x120\n" + "> > [????2.377381] [<ffff0000087a0600>] scpi_cpufreq_probe+0x28/0x38\n" + "> > [????2.383076] [<ffff00000855efb0>] platform_drv_probe+0x50/0xb8\n" + "> > [????2.388766] [<ffff00000855d144>] driver_probe_device+0x21c/0x2d8\n" "> > \n" "> \n" "> Looks like a different route and I know why. I have added an extra check\n" @@ -60,7 +53,7 @@ "> > don't\n" "> > remember seeing any which fails, at some point, to register a clocks and\n" "> > still\n" - "> > register successfully.\302\240\n" + "> > register successfully.?\n" "> > \n" "> \n" "> No problem, as I said I am fine with the patch you sent as a fix for now\n" @@ -96,24 +89,24 @@ "I tried your last version, and it does not Oops, at least not for me.\n" "\n" "The end result still looks odd to me:\n" - "[\302\240\302\240\302\240\302\2401.115219] scpi_clocks scpi:clocks: failed to register clock 'vcpu'\n" - "[\302\240\302\240\302\240\302\2401.159490] cpu cpu0: _get_cluster_clk_and_freq_table: Failed to get clk for\n" + "[????1.115219] scpi_clocks scpi:clocks: failed to register clock 'vcpu'\n" + "[????1.159490] cpu cpu0: _get_cluster_clk_and_freq_table: Failed to get clk for\n" "cpu: 0, cluster: 0\n" - "[\302\240\302\240\302\240\302\2401.162986] cpu cpu0: _get_cluster_clk_and_freq_table: Failed to get data for\n" + "[????1.162986] cpu cpu0: _get_cluster_clk_and_freq_table: Failed to get data for\n" "cluster: 0\n" - "[\302\240\302\240\302\240\302\2401.170945] cpu cpu1: _get_cluster_clk_and_freq_table: Failed to get clk for\n" + "[????1.170945] cpu cpu1: _get_cluster_clk_and_freq_table: Failed to get clk for\n" "cpu: 1, cluster: 0\n" - "[\302\240\302\240\302\240\302\2401.179634] cpu cpu1: _get_cluster_clk_and_freq_table: Failed to get data for\n" + "[????1.179634] cpu cpu1: _get_cluster_clk_and_freq_table: Failed to get data for\n" "cluster: 0\n" - "[\302\240\302\240\302\240\302\2401.187654] cpu cpu2: _get_cluster_clk_and_freq_table: Failed to get clk for\n" + "[????1.187654] cpu cpu2: _get_cluster_clk_and_freq_table: Failed to get clk for\n" "cpu: 2, cluster: 0\n" - "[\302\240\302\240\302\240\302\2401.196284] cpu cpu2: _get_cluster_clk_and_freq_table: Failed to get data for\n" + "[????1.196284] cpu cpu2: _get_cluster_clk_and_freq_table: Failed to get data for\n" "cluster: 0\n" - "[\302\240\302\240\302\240\302\2401.204375] cpu cpu3: _get_cluster_clk_and_freq_table: Failed to get clk for\n" + "[????1.204375] cpu cpu3: _get_cluster_clk_and_freq_table: Failed to get clk for\n" "cpu: 3, cluster: 0\n" - "[\302\240\302\240\302\240\302\2401.212911] cpu cpu3: _get_cluster_clk_and_freq_table: Failed to get data for\n" + "[????1.212911] cpu cpu3: _get_cluster_clk_and_freq_table: Failed to get data for\n" "cluster: 0\n" - "[\302\240\302\240\302\240\302\2401.220612] arm_big_little: bL_cpufreq_register: Registered platform driver:\n" + "[????1.220612] arm_big_little: bL_cpufreq_register: Registered platform driver:\n" "scpi\n" "\n" "So now, I have an scpi clock provider which registers successfully but fails to\n" @@ -133,37 +126,37 @@ "> @@ -192,7 +192,7 @@ scpi_of_clk_src_get(struct of_phandle_args *clkspec,\n" "> void *data)\n" "> \n" - "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240for (count = 0; count < clk_data->clk_num; count++) {\n" - "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240sclk = clk_data->clk[count];\n" - "> -\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (idx == sclk->id)\n" - "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (sclk && idx == sclk->id)\n" - "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return &sclk->hw;\n" - "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n" + "> ????????for (count = 0; count < clk_data->clk_num; count++) {\n" + "> ????????????????sclk = clk_data->clk[count];\n" + "> -???????????????if (idx == sclk->id)\n" + "> +???????????????if (sclk && idx == sclk->id)\n" + "> ????????????????????????return &sclk->hw;\n" + "> ????????}\n" "> \n" "> @@ -245,11 +245,14 @@ static int scpi_clk_add(struct device *dev, struct\n" "> device_node *np,\n" - "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240sclk->id = val;\n" + "> ????????????????sclk->id = val;\n" "> \n" - "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240err = scpi_clk_ops_init(dev, match, sclk, name);\n" - "> -\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (err)\n" - "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (err) {\n" - "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_err(dev, \"failed to register clock '%s'\\n\",\n" + "> ????????????????err = scpi_clk_ops_init(dev, match, sclk, name);\n" + "> -???????????????if (err)\n" + "> +???????????????if (err) {\n" + "> ????????????????????????dev_err(dev, \"failed to register clock '%s'\\n\",\n" "> name);\n" - "> -\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240else\n" - "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_data->clk[idx] = NULL;\n" - "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240devm_kfree(dev, sclk);\n" - "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240} else {\n" - "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240dev_dbg(dev, \"Registered clock '%s'\\n\", name);\n" - "> -\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_data->clk[idx] = sclk;\n" - "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_data->clk[idx] = sclk;\n" - "> +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n" - "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n" - "> \n" - "> \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return of_clk_add_hw_provider(np, scpi_of_clk_src_get, clk_data);\n" + "> -???????????????else\n" + "> +???????????????????????clk_data->clk[idx] = NULL;\n" + "> +???????????????????????devm_kfree(dev, sclk);\n" + "> +???????????????} else {\n" + "> ????????????????????????dev_dbg(dev, \"Registered clock '%s'\\n\", name);\n" + "> -???????????????clk_data->clk[idx] = sclk;\n" + "> +???????????????????????clk_data->clk[idx] = sclk;\n" + "> +???????????????}\n" + "> ????????}\n" + "> \n" + "> ????????return of_clk_add_hw_provider(np, scpi_of_clk_src_get, clk_data);\n" "> \n" "> --\n" "> To unsubscribe from this list: send the line \"unsubscribe linux-clk\" in\n" - "> the body of a message to majordomo@vger.kernel.org\n" - "> More majordomo info at\302\240\302\240http://vger.kernel.org/majordomo-info.html" + "> the body of a message to majordomo at vger.kernel.org\n" + > More majordomo info at??http://vger.kernel.org/majordomo-info.html -7c929211a962b3fc39de093233a09f92b4ed0e9d4126e96f4114199b23f04667 +5741b99e76c19895743d939e118678d3552364f7c66382f020af67468656dff1
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.