CC: [email protected] BCC: [email protected] CC: [email protected] TO: "Rex-BC Chen" <[email protected]> CC: Viresh Kumar <[email protected]> CC: "Andrew-sh.Cheng" <[email protected]> CC: "Jia-Wei Chang" <[email protected]> CC: AngeloGioacchino Del Regno <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm.git cpufreq/arm/linux-next head: c210063b40acab74bb7262d2bfae557171884ff2 commit: c210063b40acab74bb7262d2bfae557171884ff2 [24/24] cpufreq: mediatek: Add opp notification support :::::: branch date: 17 hours ago :::::: commit date: 17 hours ago config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20220507/[email protected]/config) compiler: aarch64-linux-gcc (GCC) 11.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Julia Lawall <[email protected]> cocci warnings: (new ones prefixed by >>) >> drivers/cpufreq/mediatek-cpufreq.c:199:2-8: preceding lock on line 190 drivers/cpufreq/mediatek-cpufreq.c:208:2-8: preceding lock on line 190 vim +199 drivers/cpufreq/mediatek-cpufreq.c 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 173 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 174 static int mtk_cpufreq_set_target(struct cpufreq_policy *policy, 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 175 unsigned int index) 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 176 { 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 177 struct cpufreq_frequency_table *freq_table = policy->freq_table; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 178 struct clk *cpu_clk = policy->clk; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 179 struct clk *armpll = clk_get_parent(cpu_clk); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 180 struct mtk_cpu_dvfs_info *info = policy->driver_data; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 181 struct device *cpu_dev = info->cpu_dev; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 182 struct dev_pm_opp *opp; 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 183 long freq_hz, pre_freq_hz; 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 184 int vproc, pre_vproc, inter_vproc, target_vproc, ret; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 185 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 186 inter_vproc = info->intermediate_voltage; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 187 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 188 pre_freq_hz = clk_get_rate(cpu_clk); bffcd33313dcfa drivers/cpufreq/mediatek-cpufreq.c Jia-Wei Chang 2022-04-22 189 c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 @190 mutex_lock(&info->reg_lock); c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 191 bffcd33313dcfa drivers/cpufreq/mediatek-cpufreq.c Jia-Wei Chang 2022-04-22 192 if (unlikely(info->pre_vproc <= 0)) 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 193 pre_vproc = regulator_get_voltage(info->proc_reg); bffcd33313dcfa drivers/cpufreq/mediatek-cpufreq.c Jia-Wei Chang 2022-04-22 194 else bffcd33313dcfa drivers/cpufreq/mediatek-cpufreq.c Jia-Wei Chang 2022-04-22 195 pre_vproc = info->pre_vproc; bffcd33313dcfa drivers/cpufreq/mediatek-cpufreq.c Jia-Wei Chang 2022-04-22 196 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 197 if (pre_vproc < 0) { 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 198 dev_err(cpu_dev, "invalid Vproc value: %d\n", pre_vproc); 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 @199 return pre_vproc; 40be4c3ccbf407 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-11-29 200 } 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 201 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 202 freq_hz = freq_table[index].frequency * 1000; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 203 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 204 opp = dev_pm_opp_find_freq_ceil(cpu_dev, &freq_hz); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 205 if (IS_ERR(opp)) { 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 206 dev_err(cpu_dev, "cpu%d: failed to find OPP for %ld\n", 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 207 policy->cpu, freq_hz); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 208 return PTR_ERR(opp); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 209 } 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 210 vproc = dev_pm_opp_get_voltage(opp); 8a31d9d94297b1 drivers/cpufreq/mt8173-cpufreq.c Viresh Kumar 2017-01-23 211 dev_pm_opp_put(opp); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 212 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 213 /* 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 214 * If the new voltage or the intermediate voltage is higher than the 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 215 * current voltage, scale up voltage first. 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 216 */ 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c Jia-Wei Chang 2022-05-05 217 target_vproc = max(inter_vproc, vproc); 6a17b3876bc830 drivers/cpufreq/mediatek-cpufreq.c Jia-Wei Chang 2022-05-05 218 if (pre_vproc <= target_vproc) { 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 219 ret = mtk_cpufreq_set_voltage(info, target_vproc); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 220 if (ret) { 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 221 dev_err(cpu_dev, 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 222 "cpu%d: failed to scale up voltage!\n", policy->cpu); 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 223 mtk_cpufreq_set_voltage(info, pre_vproc); c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 224 goto out; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 225 } 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 226 } 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 227 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 228 /* Reparent the CPU clock to intermediate clock. */ 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 229 ret = clk_set_parent(cpu_clk, info->inter_clk); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 230 if (ret) { 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 231 dev_err(cpu_dev, 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 232 "cpu%d: failed to re-parent cpu clock!\n", policy->cpu); 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 233 mtk_cpufreq_set_voltage(info, pre_vproc); c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 234 goto out; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 235 } 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 236 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 237 /* Set the original PLL to target rate. */ 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 238 ret = clk_set_rate(armpll, freq_hz); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 239 if (ret) { 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 240 dev_err(cpu_dev, 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 241 "cpu%d: failed to scale cpu clock rate!\n", policy->cpu); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 242 clk_set_parent(cpu_clk, armpll); 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 243 mtk_cpufreq_set_voltage(info, pre_vproc); c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 244 goto out; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 245 } 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 246 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 247 /* Set parent of CPU clock back to the original PLL. */ 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 248 ret = clk_set_parent(cpu_clk, armpll); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 249 if (ret) { 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 250 dev_err(cpu_dev, 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 251 "cpu%d: failed to re-parent cpu clock!\n", policy->cpu); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 252 mtk_cpufreq_set_voltage(info, inter_vproc); c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 253 goto out; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 254 } 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 255 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 256 /* 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 257 * If the new voltage is lower than the intermediate voltage or the 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 258 * original voltage, scale down to the new voltage. 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 259 */ 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 260 if (vproc < inter_vproc || vproc < pre_vproc) { 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 261 ret = mtk_cpufreq_set_voltage(info, vproc); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 262 if (ret) { 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 263 dev_err(cpu_dev, 9acc0f7a6edd8d drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 264 "cpu%d: failed to scale down voltage!\n", policy->cpu); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 265 clk_set_parent(cpu_clk, info->inter_clk); 4aef4aeaf1dd47 drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-04-22 266 clk_set_rate(armpll, pre_freq_hz); 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 267 clk_set_parent(cpu_clk, armpll); c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 268 goto out; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 269 } 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 270 } 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 271 c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 272 info->current_freq = freq_hz; c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 273 c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 274 out: c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 275 mutex_unlock(&info->reg_lock); c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 276 c210063b40acab drivers/cpufreq/mediatek-cpufreq.c Rex-BC Chen 2022-05-05 277 return ret; 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 278 } 1453863fb02a18 drivers/cpufreq/mt8173-cpufreq.c Pi-Cheng Chen 2015-08-19 279 :::::: The code at line 199 was first introduced by commit :::::: 4aef4aeaf1dd47b2242ba78857b2773b7a5b5b05 cpufreq: mediatek: Replace old_* with pre_* :::::: TO: Rex-BC Chen <[email protected]> :::::: CC: Viresh Kumar <[email protected]> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
