* [linux-stable-rc:linux-4.9.y 9056/9999] drivers/devfreq/rk3399_dmc.c:416:17: sparse: sparse: context imbalance in 'rk3399_dmcfreq_probe' - unexpected unlock
@ 2020-11-13 18:35 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-11-13 18:35 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 10615 bytes --]
CC: kbuild-all(a)lists.01.org
TO: Chanwoo Choi <cw00.choi@samsung.com>
CC: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
CC: Sasha Levin <alexander.levin@microsoft.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.9.y
head: 6940a98776c9014fdcc806e39ab0ebc8316cf241
commit: c673faa159f76a78170a280b229beed6526b05bc [9056/9999] PM / devfreq: rk3399_dmc: Add COMPILE_TEST and HAVE_ARM_SMCCC dependency
:::::: branch date: 5 months ago
:::::: commit date: 9 months ago
config: arm64-randconfig-s031-20201111 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 7.5.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-107-gaf3512a6-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=c673faa159f76a78170a280b229beed6526b05bc
git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git fetch --no-tags linux-stable-rc linux-4.9.y
git checkout c673faa159f76a78170a280b229beed6526b05bc
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-7.5.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
"sparse warnings: (new ones prefixed by >>)"
>> drivers/devfreq/rk3399_dmc.c:416:17: sparse: sparse: context imbalance in 'rk3399_dmcfreq_probe' - unexpected unlock
vim +/rk3399_dmcfreq_probe +416 drivers/devfreq/rk3399_dmc.c
5a893e31a636cca Lin Huang 2016-09-05 332
5a893e31a636cca Lin Huang 2016-09-05 333 static int rk3399_dmcfreq_probe(struct platform_device *pdev)
5a893e31a636cca Lin Huang 2016-09-05 334 {
5a893e31a636cca Lin Huang 2016-09-05 335 struct arm_smccc_res res;
5a893e31a636cca Lin Huang 2016-09-05 336 struct device *dev = &pdev->dev;
5a893e31a636cca Lin Huang 2016-09-05 337 struct device_node *np = pdev->dev.of_node;
5a893e31a636cca Lin Huang 2016-09-05 338 struct rk3399_dmcfreq *data;
5a893e31a636cca Lin Huang 2016-09-05 339 int ret, irq, index, size;
5a893e31a636cca Lin Huang 2016-09-05 340 uint32_t *timing;
5a893e31a636cca Lin Huang 2016-09-05 341 struct dev_pm_opp *opp;
5a893e31a636cca Lin Huang 2016-09-05 342
5a893e31a636cca Lin Huang 2016-09-05 343 irq = platform_get_irq(pdev, 0);
5a893e31a636cca Lin Huang 2016-09-05 344 if (irq < 0) {
5a893e31a636cca Lin Huang 2016-09-05 345 dev_err(&pdev->dev, "Cannot get the dmc interrupt resource\n");
5a893e31a636cca Lin Huang 2016-09-05 346 return -EINVAL;
5a893e31a636cca Lin Huang 2016-09-05 347 }
5a893e31a636cca Lin Huang 2016-09-05 348 data = devm_kzalloc(dev, sizeof(struct rk3399_dmcfreq), GFP_KERNEL);
5a893e31a636cca Lin Huang 2016-09-05 349 if (!data)
5a893e31a636cca Lin Huang 2016-09-05 350 return -ENOMEM;
5a893e31a636cca Lin Huang 2016-09-05 351
5a893e31a636cca Lin Huang 2016-09-05 352 mutex_init(&data->lock);
5a893e31a636cca Lin Huang 2016-09-05 353
5a893e31a636cca Lin Huang 2016-09-05 354 data->vdd_center = devm_regulator_get(dev, "center");
5a893e31a636cca Lin Huang 2016-09-05 355 if (IS_ERR(data->vdd_center)) {
5a893e31a636cca Lin Huang 2016-09-05 356 dev_err(dev, "Cannot get the regulator \"center\"\n");
5a893e31a636cca Lin Huang 2016-09-05 357 return PTR_ERR(data->vdd_center);
5a893e31a636cca Lin Huang 2016-09-05 358 }
5a893e31a636cca Lin Huang 2016-09-05 359
5a893e31a636cca Lin Huang 2016-09-05 360 data->dmc_clk = devm_clk_get(dev, "dmc_clk");
5a893e31a636cca Lin Huang 2016-09-05 361 if (IS_ERR(data->dmc_clk)) {
5a893e31a636cca Lin Huang 2016-09-05 362 dev_err(dev, "Cannot get the clk dmc_clk\n");
5a893e31a636cca Lin Huang 2016-09-05 363 return PTR_ERR(data->dmc_clk);
5a893e31a636cca Lin Huang 2016-09-05 364 };
5a893e31a636cca Lin Huang 2016-09-05 365
5a893e31a636cca Lin Huang 2016-09-05 366 data->irq = irq;
5a893e31a636cca Lin Huang 2016-09-05 367 ret = devm_request_irq(dev, irq, rk3399_dmc_irq, 0,
5a893e31a636cca Lin Huang 2016-09-05 368 dev_name(dev), data);
5a893e31a636cca Lin Huang 2016-09-05 369 if (ret) {
5a893e31a636cca Lin Huang 2016-09-05 370 dev_err(dev, "Failed to request dmc irq: %d\n", ret);
5a893e31a636cca Lin Huang 2016-09-05 371 return ret;
5a893e31a636cca Lin Huang 2016-09-05 372 }
5a893e31a636cca Lin Huang 2016-09-05 373
5a893e31a636cca Lin Huang 2016-09-05 374 init_waitqueue_head(&data->wait_dcf_queue);
5a893e31a636cca Lin Huang 2016-09-05 375 data->wait_dcf_flag = 0;
5a893e31a636cca Lin Huang 2016-09-05 376
5a893e31a636cca Lin Huang 2016-09-05 377 data->edev = devfreq_event_get_edev_by_phandle(dev, 0);
5a893e31a636cca Lin Huang 2016-09-05 378 if (IS_ERR(data->edev))
5a893e31a636cca Lin Huang 2016-09-05 379 return -EPROBE_DEFER;
5a893e31a636cca Lin Huang 2016-09-05 380
5a893e31a636cca Lin Huang 2016-09-05 381 ret = devfreq_event_enable_edev(data->edev);
5a893e31a636cca Lin Huang 2016-09-05 382 if (ret < 0) {
5a893e31a636cca Lin Huang 2016-09-05 383 dev_err(dev, "failed to enable devfreq-event devices\n");
5a893e31a636cca Lin Huang 2016-09-05 384 return ret;
5a893e31a636cca Lin Huang 2016-09-05 385 }
5a893e31a636cca Lin Huang 2016-09-05 386
5a893e31a636cca Lin Huang 2016-09-05 387 /*
5a893e31a636cca Lin Huang 2016-09-05 388 * Get dram timing and pass it to arm trust firmware,
5a893e31a636cca Lin Huang 2016-09-05 389 * the dram drvier in arm trust firmware will get these
5a893e31a636cca Lin Huang 2016-09-05 390 * timing and to do dram initial.
5a893e31a636cca Lin Huang 2016-09-05 391 */
5a893e31a636cca Lin Huang 2016-09-05 392 if (!of_get_ddr_timings(&data->timing, np)) {
5a893e31a636cca Lin Huang 2016-09-05 393 timing = &data->timing.ddr3_speed_bin;
5a893e31a636cca Lin Huang 2016-09-05 394 size = sizeof(struct dram_timing) / 4;
5a893e31a636cca Lin Huang 2016-09-05 395 for (index = 0; index < size; index++) {
5a893e31a636cca Lin Huang 2016-09-05 396 arm_smccc_smc(ROCKCHIP_SIP_DRAM_FREQ, *timing++, index,
5a893e31a636cca Lin Huang 2016-09-05 397 ROCKCHIP_SIP_CONFIG_DRAM_SET_PARAM,
5a893e31a636cca Lin Huang 2016-09-05 398 0, 0, 0, 0, &res);
5a893e31a636cca Lin Huang 2016-09-05 399 if (res.a0) {
5a893e31a636cca Lin Huang 2016-09-05 400 dev_err(dev, "Failed to set dram param: %ld\n",
5a893e31a636cca Lin Huang 2016-09-05 401 res.a0);
5a893e31a636cca Lin Huang 2016-09-05 402 return -EINVAL;
5a893e31a636cca Lin Huang 2016-09-05 403 }
5a893e31a636cca Lin Huang 2016-09-05 404 }
5a893e31a636cca Lin Huang 2016-09-05 405 }
5a893e31a636cca Lin Huang 2016-09-05 406
5a893e31a636cca Lin Huang 2016-09-05 407 arm_smccc_smc(ROCKCHIP_SIP_DRAM_FREQ, 0, 0,
5a893e31a636cca Lin Huang 2016-09-05 408 ROCKCHIP_SIP_CONFIG_DRAM_INIT,
5a893e31a636cca Lin Huang 2016-09-05 409 0, 0, 0, 0, &res);
5a893e31a636cca Lin Huang 2016-09-05 410
5a893e31a636cca Lin Huang 2016-09-05 411 /*
5a893e31a636cca Lin Huang 2016-09-05 412 * We add a devfreq driver to our parent since it has a device tree node
5a893e31a636cca Lin Huang 2016-09-05 413 * with operating points.
5a893e31a636cca Lin Huang 2016-09-05 414 */
5a893e31a636cca Lin Huang 2016-09-05 415 if (dev_pm_opp_of_add_table(dev)) {
5a893e31a636cca Lin Huang 2016-09-05 @416 dev_err(dev, "Invalid operating-points in device tree.\n");
5a893e31a636cca Lin Huang 2016-09-05 417 rcu_read_unlock();
5a893e31a636cca Lin Huang 2016-09-05 418 return -EINVAL;
5a893e31a636cca Lin Huang 2016-09-05 419 }
5a893e31a636cca Lin Huang 2016-09-05 420
5a893e31a636cca Lin Huang 2016-09-05 421 of_property_read_u32(np, "upthreshold",
5a893e31a636cca Lin Huang 2016-09-05 422 &data->ondemand_data.upthreshold);
5a893e31a636cca Lin Huang 2016-09-05 423 of_property_read_u32(np, "downdifferential",
5a893e31a636cca Lin Huang 2016-09-05 424 &data->ondemand_data.downdifferential);
5a893e31a636cca Lin Huang 2016-09-05 425
5a893e31a636cca Lin Huang 2016-09-05 426 data->rate = clk_get_rate(data->dmc_clk);
5a893e31a636cca Lin Huang 2016-09-05 427
5a893e31a636cca Lin Huang 2016-09-05 428 rcu_read_lock();
5a893e31a636cca Lin Huang 2016-09-05 429 opp = devfreq_recommended_opp(dev, &data->rate, 0);
5a893e31a636cca Lin Huang 2016-09-05 430 if (IS_ERR(opp)) {
5a893e31a636cca Lin Huang 2016-09-05 431 rcu_read_unlock();
5a893e31a636cca Lin Huang 2016-09-05 432 return PTR_ERR(opp);
5a893e31a636cca Lin Huang 2016-09-05 433 }
5a893e31a636cca Lin Huang 2016-09-05 434 rcu_read_unlock();
5a893e31a636cca Lin Huang 2016-09-05 435 data->curr_opp = opp;
5a893e31a636cca Lin Huang 2016-09-05 436
5a893e31a636cca Lin Huang 2016-09-05 437 rk3399_devfreq_dmc_profile.initial_freq = data->rate;
5a893e31a636cca Lin Huang 2016-09-05 438
5a893e31a636cca Lin Huang 2016-09-05 439 data->devfreq = devfreq_add_device(dev,
5a893e31a636cca Lin Huang 2016-09-05 440 &rk3399_devfreq_dmc_profile,
5a893e31a636cca Lin Huang 2016-09-05 441 "simple_ondemand",
5a893e31a636cca Lin Huang 2016-09-05 442 &data->ondemand_data);
5a893e31a636cca Lin Huang 2016-09-05 443 if (IS_ERR(data->devfreq))
5a893e31a636cca Lin Huang 2016-09-05 444 return PTR_ERR(data->devfreq);
5a893e31a636cca Lin Huang 2016-09-05 445 devm_devfreq_register_opp_notifier(dev, data->devfreq);
5a893e31a636cca Lin Huang 2016-09-05 446
5a893e31a636cca Lin Huang 2016-09-05 447 data->dev = dev;
5a893e31a636cca Lin Huang 2016-09-05 448 platform_set_drvdata(pdev, data);
5a893e31a636cca Lin Huang 2016-09-05 449
5a893e31a636cca Lin Huang 2016-09-05 450 return 0;
5a893e31a636cca Lin Huang 2016-09-05 451 }
5a893e31a636cca Lin Huang 2016-09-05 452
:::::: The code at line 416 was first introduced by commit
:::::: 5a893e31a636cca3798af2db5aee8d3d144b1e1e PM / devfreq: rockchip: add devfreq driver for rk3399 dmc
:::::: TO: Lin Huang <hl@rock-chips.com>
:::::: CC: MyungJoo Ham <myungjoo.ham@samsung.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 29735 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-11-13 18:35 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-13 18:35 [linux-stable-rc:linux-4.9.y 9056/9999] drivers/devfreq/rk3399_dmc.c:416:17: sparse: sparse: context imbalance in 'rk3399_dmcfreq_probe' - unexpected unlock kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.