Messages in this thread Patch in this message | | | Subject | Re: [PATCH 2/2] opp: Manage empty OPP tables with clk handle | From | Rajendra Nayak <> | Date | Wed, 3 Jul 2019 14:41:10 +0530 |
| |
[].. >> > > Explain the rationale behind this code here in a comment. > >> + if (!_get_opp_count(opp_table)) { >> + ret = _generic_set_opp_clk_only(dev, clk, freq); >> + goto put_opp_table; >> + } >> + >> temp_freq = old_freq; >> old_opp = _find_freq_ceil(opp_table, &temp_freq); >> if (IS_ERR(old_opp)) { > > Also, rebase over the OPP branch please:
thanks, I will fix/rebase and repost, in the meantime while I was testing this a little more I realized I also need something like the change below to avoid a refcount mismatch WARN when empty OPP table is removed using dev_pm_opp_of_remove_table()
diff --git a/drivers/opp/core.c b/drivers/opp/core.c index fa7d4d6d37b3..20128a88baf2 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c @@ -2118,7 +2118,8 @@ void _dev_pm_opp_find_and_remove_table(struct device *dev) return; } - _put_opp_list_kref(opp_table); + if (_get_opp_count(opp_table)) + _put_opp_list_kref(opp_table); /* Drop reference taken by _find_opp_table() */ dev_pm_opp_put_opp_table(opp_table); Does this look like a good way to fix it?
-- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
| |