Message ID | 1d7c97524b9e1fbc60271d9c246c5461ca8a106c.1598594714.git.viresh.kumar@linaro.org |
---|---|
State | Accepted |
Commit | 91ca244bdcb6a0b6ad12c8325e5e9228b9472374 |
Headers | show |
Series | [V2,1/8] cpufreq: imx6q: Unconditionally call dev_pm_opp_of_remove_table() | expand |
On 28-08-20, 10:43, Ulf Hansson wrote: > On Fri, 28 Aug 2020 at 08:08, Viresh Kumar <viresh.kumar@linaro.org> wrote: > > > > dev_pm_opp_of_remove_table() doesn't report any errors when it fails to > > find the OPP table with error -ENODEV (i.e. OPP table not present for > > the device). And we can call dev_pm_opp_of_remove_table() > > unconditionally here. > > > > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > > Replaced v1 with v2 on my next branch, thanks! > > Just to be sure, this patch doesn't depend on any changes for the opp > core that are queued for v5.10? No it doesn't.
On 28-08-20, 10:43, Ulf Hansson wrote: > On Fri, 28 Aug 2020 at 08:08, Viresh Kumar <viresh.kumar@linaro.org> wrote: > > > > dev_pm_opp_of_remove_table() doesn't report any errors when it fails to > > find the OPP table with error -ENODEV (i.e. OPP table not present for > > the device). And we can call dev_pm_opp_of_remove_table() > > unconditionally here. > > > > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > > Replaced v1 with v2 on my next branch, thanks! > > Just to be sure, this patch doesn't depend on any changes for the opp > core that are queued for v5.10? The recent crashes reported by Anders and Naresh were related to a OPP core bug, for which I have just sent the fix here: https://lore.kernel.org/lkml/922ff0759a16299e24cacfc981ac07914d8f1826.1598865786.git.viresh.kumar@linaro.org/ This is already tested by Naresh now and finally everything works as expected. I am going to get this fix merged in 5.9-rc4, but we do have a dependency now with that fix. What's the best way to handle this stuff now ? The easiest IMO would be for me to send these patches through the OPP tree, otherwise people need to carry this and the OPP fix (for which I can provide the branch/tag).
On 31-08-20, 12:57, Ulf Hansson wrote: > On Mon, 31 Aug 2020 at 12:45, Viresh Kumar <viresh.kumar@linaro.org> wrote: > > > > On 28-08-20, 10:43, Ulf Hansson wrote: > > > On Fri, 28 Aug 2020 at 08:08, Viresh Kumar <viresh.kumar@linaro.org> wrote: > > > > > > > > dev_pm_opp_of_remove_table() doesn't report any errors when it fails to > > > > find the OPP table with error -ENODEV (i.e. OPP table not present for > > > > the device). And we can call dev_pm_opp_of_remove_table() > > > > unconditionally here. > > > > > > > > Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> > > > > > > Replaced v1 with v2 on my next branch, thanks! > > > > > > Just to be sure, this patch doesn't depend on any changes for the opp > > > core that are queued for v5.10? > > > > The recent crashes reported by Anders and Naresh were related to a OPP > > core bug, for which I have just sent the fix here: > > > > https://lore.kernel.org/lkml/922ff0759a16299e24cacfc981ac07914d8f1826.1598865786.git.viresh.kumar@linaro.org/ > > > > This is already tested by Naresh now and finally everything works as > > expected. > > > > I am going to get this fix merged in 5.9-rc4, but we do have a > > dependency now with that fix. > > > > What's the best way to handle this stuff now ? The easiest IMO would > > be for me to send these patches through the OPP tree, otherwise people > > need to carry this and the OPP fix (for which I can provide the > > branch/tag). > > No need for a tag/branch to be shared. Instead I am simply going to > defer to pick up any related changes for mmc, until I can rebase my > tree on an rc[n] that contains your fix. > > When that is possible, please re-post the mmc patches. The dependency patch got merged in 5.9-rc4. Do you still want me to resend this patch or you can apply it directly from here ?
diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c index 5a33389037cd..f7beaec6412e 100644 --- a/drivers/mmc/host/sdhci-msm.c +++ b/drivers/mmc/host/sdhci-msm.c @@ -263,7 +263,6 @@ struct sdhci_msm_host { unsigned long clk_rate; struct mmc_host *mmc; struct opp_table *opp_table; - bool has_opp_table; bool use_14lpp_dll_reset; bool tuning_done; bool calibration_done; @@ -2285,11 +2284,9 @@ static int sdhci_msm_probe(struct platform_device *pdev) /* OPP table is optional */ ret = dev_pm_opp_of_add_table(&pdev->dev); - if (!ret) { - msm_host->has_opp_table = true; - } else if (ret != -ENODEV) { + if (ret && ret != -ENODEV) { dev_err(&pdev->dev, "Invalid OPP table in Device tree\n"); - goto opp_cleanup; + goto opp_put_clkname; } /* Vote for maximum clock rate for maximum performance */ @@ -2453,8 +2450,8 @@ static int sdhci_msm_probe(struct platform_device *pdev) clk_bulk_disable_unprepare(ARRAY_SIZE(msm_host->bulk_clks), msm_host->bulk_clks); opp_cleanup: - if (msm_host->has_opp_table) - dev_pm_opp_of_remove_table(&pdev->dev); + dev_pm_opp_of_remove_table(&pdev->dev); +opp_put_clkname: dev_pm_opp_put_clkname(msm_host->opp_table); bus_clk_disable: if (!IS_ERR(msm_host->bus_clk)) @@ -2474,8 +2471,7 @@ static int sdhci_msm_remove(struct platform_device *pdev) sdhci_remove_host(host, dead); - if (msm_host->has_opp_table) - dev_pm_opp_of_remove_table(&pdev->dev); + dev_pm_opp_of_remove_table(&pdev->dev); dev_pm_opp_put_clkname(msm_host->opp_table); pm_runtime_get_sync(&pdev->dev); pm_runtime_disable(&pdev->dev);
dev_pm_opp_of_remove_table() doesn't report any errors when it fails to find the OPP table with error -ENODEV (i.e. OPP table not present for the device). And we can call dev_pm_opp_of_remove_table() unconditionally here. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> --- V2: - Compare with -ENODEV only for failures. - Create new label to put clkname. --- drivers/mmc/host/sdhci-msm.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)