On 22-07-20, 10:54, Viresh Kumar wrote: > On 21-07-20, 01:43, Stephen Boyd wrote: > > It seems that dev_pm_opp_set_rate() calls _find_opp_table() and finds > > something that isn't an error pointer but then dev_pm_opp_of_add_table() > > returns an error value because there isn't an operating-points property > > in DT. We're getting saved because this driver also happens to call > > dev_pm_opp_set_clkname() which allocates the OPP table a second time > > (because the first time it got freed when dev_pm_opp_of_add_table() > > return -ENODEV because the property was missing). > > > > Why do we need 'has_opp_table' logic? It seems that we have to keep > > track of the fact that dev_pm_opp_of_add_table() failed so that we don't > > put the table again, but then dev_pm_opp_set_clkname() can be called > > to allocate the table regardless. I have sent a patchset to clean this stuff up a bit now. -- viresh