Message ID | 4b38ceed657bfcf87ff9ab0dd69dd1f2f5658b24.1653564321.git.viresh.kumar@linaro.org |
---|---|
State | New |
Headers | show |
Series | OPP: Add new configuration interface: dev_pm_opp_set_config() | expand |
On 30-05-22, 13:22, Viresh Kumar wrote: > On 29-05-22, 19:59, Dmitry Osipenko wrote: > > > Please keep the PTR_ERR_OR_ZERO. > > Ahh, sorry about that. Fixed. > > > > tegra20-cpufreq tegra20-cpufreq: failed to set OPP config: -1042688000 > > > > With that fixed, now there is another error: > > > > [ 1.761945] cpu cpu0: _of_add_opp_table_v2: no supported OPPs > > [ 1.761960] cpu cpu0: OPP table can't be empty > > So we failed to find any OPPs which work with the hardware version of > updated with dev_pm_opp_set_config(). I tried to follow the path and > see if there is something wrong here. Failed to find that :( > > > I see this on Tegra30, but not on Tegra20. Apparently OPP table > > refcounting is broken on Tegra30 by this patchset. To make it clear, > > there are no error without these OPP patches applied. I may take a > > closer look if will be needed, just ping me. > > Yes, it would be very helpful as I don't have the necessary hardware. Hey, any updates on this ? I am looking to resend the series soon, would be nice to fix this before that.
On 6/7/22 11:43, Viresh Kumar wrote: > On 30-05-22, 13:22, Viresh Kumar wrote: >> On 29-05-22, 19:59, Dmitry Osipenko wrote: >>>> Please keep the PTR_ERR_OR_ZERO. >> >> Ahh, sorry about that. Fixed. >> >>>> tegra20-cpufreq tegra20-cpufreq: failed to set OPP config: -1042688000 >>> >>> With that fixed, now there is another error: >>> >>> [ 1.761945] cpu cpu0: _of_add_opp_table_v2: no supported OPPs >>> [ 1.761960] cpu cpu0: OPP table can't be empty >> >> So we failed to find any OPPs which work with the hardware version of >> updated with dev_pm_opp_set_config(). I tried to follow the path and >> see if there is something wrong here. Failed to find that :( >> >>> I see this on Tegra30, but not on Tegra20. Apparently OPP table >>> refcounting is broken on Tegra30 by this patchset. To make it clear, >>> there are no error without these OPP patches applied. I may take a >>> closer look if will be needed, just ping me. >> >> Yes, it would be very helpful as I don't have the necessary hardware. > > Hey, any updates on this ? I am looking to resend the series soon, would be nice > to fix this before that. > I'll take a look over this weekend. Sorry for the delay.
On 29-05-22, 19:59, Dmitry Osipenko wrote: > With that fixed, now there is another error: > > [ 1.761945] cpu cpu0: _of_add_opp_table_v2: no supported OPPs > [ 1.761960] cpu cpu0: OPP table can't be empty > > I see this on Tegra30, but not on Tegra20. Apparently OPP table > refcounting is broken on Tegra30 by this patchset. To make it clear, > there are no error without these OPP patches applied. I may take a > closer look if will be needed, just ping me. Hi Jon, Dmitry reported this on Tegra30 earlier, do you also see such a failure ? Would be helpful to get this fixed as well, if it still exists.
On 24/06/2022 06:38, Viresh Kumar wrote: > On 29-05-22, 19:59, Dmitry Osipenko wrote: >> With that fixed, now there is another error: >> >> [ 1.761945] cpu cpu0: _of_add_opp_table_v2: no supported OPPs >> [ 1.761960] cpu cpu0: OPP table can't be empty >> >> I see this on Tegra30, but not on Tegra20. Apparently OPP table >> refcounting is broken on Tegra30 by this patchset. To make it clear, >> there are no error without these OPP patches applied. I may take a >> closer look if will be needed, just ping me. > > Hi Jon, > > Dmitry reported this on Tegra30 earlier, do you also see such a > failure ? Would be helpful to get this fixed as well, if it still > exists. Yes I am seeing the same issue on Tegra30 ... [ 2.177437] cpu cpu0: _of_add_opp_table_v2: no supported OPPs [ 2.177455] cpu cpu0: OPP table can't be empty And the cpufreq test we are running is failing. Thanks Jon
diff --git a/drivers/cpufreq/tegra20-cpufreq.c b/drivers/cpufreq/tegra20-cpufreq.c index e8db3d75be25..2c73623e3abb 100644 --- a/drivers/cpufreq/tegra20-cpufreq.c +++ b/drivers/cpufreq/tegra20-cpufreq.c @@ -34,7 +34,7 @@ static bool cpu0_node_has_opp_v2_prop(void) static void tegra20_cpufreq_put_supported_hw(void *opp_table) { - dev_pm_opp_put_supported_hw(opp_table); + dev_pm_opp_clear_config(opp_table); } static void tegra20_cpufreq_dt_unregister(void *cpufreq_dt) @@ -49,6 +49,10 @@ static int tegra20_cpufreq_probe(struct platform_device *pdev) struct device *cpu_dev; u32 versions[2]; int err; + struct dev_pm_opp_config config = { + .supported_hw = versions, + .supported_hw_count = ARRAY_SIZE(versions), + }; if (!cpu0_node_has_opp_v2_prop()) { dev_err(&pdev->dev, "operating points not found\n"); @@ -71,10 +75,10 @@ static int tegra20_cpufreq_probe(struct platform_device *pdev) if (WARN_ON(!cpu_dev)) return -ENODEV; - opp_table = dev_pm_opp_set_supported_hw(cpu_dev, versions, 2); - err = PTR_ERR_OR_ZERO(opp_table); + opp_table = dev_pm_opp_set_config(cpu_dev, &config); + err = PTR_ERR(opp_table); if (err) { - dev_err(&pdev->dev, "failed to set supported hw: %d\n", err); + dev_err(&pdev->dev, "failed to set OPP config: %d\n", err); return err; }
The OPP core now provides a unified API for setting all configuration types, i.e. dev_pm_opp_set_config(). Lets start using it. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> --- drivers/cpufreq/tegra20-cpufreq.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)