CC: [email protected] CC: [email protected] CC: [email protected] TO: Andrey Grodzovsky <[email protected]>
tree: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next head: 3675c2f26f33ab4928859fb8950a4697a16be5c9 commit: cfbb6b0047448e2d986160d9f30d60f604d9ad0f [7/11] drm/amdgpu: Rework reset domain to be refcounted. :::::: branch date: 3 days ago :::::: commit date: 3 days ago config: riscv-randconfig-c006-20220210 (https://download.01.org/0day-ci/archive/20220213/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project f6685f774697c85d6a352dcea013f46a99f9fe31) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu git remote add drm-misc git://anongit.freedesktop.org/drm/drm-misc git fetch --no-tags drm-misc drm-misc-next git checkout cfbb6b0047448e2d986160d9f30d60f604d9ad0f # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2547:32: note: Returning from 'si_get_pi' struct si_power_info *si_pi = si_get_pi(adev); ^~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2547:2: note: 'si_pi' initialized here struct si_power_info *si_pi = si_get_pi(adev); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2555:6: note: Assuming 'dte_data' is equal to NULL if (dte_data == NULL) ^~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2555:2: note: Taking true branch if (dte_data == NULL) ^ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2556:21: note: Access to field 'enable_dte' results in a dereference of a null pointer (loaded from variable 'si_pi') si_pi->enable_dte = false; ~~~~~ ^ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2913:5: warning: Value stored to 'smc_result' is never read [clang-analyzer-deadcode.DeadStores] smc_result = amdgpu_si_send_msg_to_smc(adev, PPSMC_MSG_DisableDTE); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2913:5: note: Value stored to 'smc_result' is never read smc_result = amdgpu_si_send_msg_to_smc(adev, PPSMC_MSG_DisableDTE); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2915:4: warning: Value stored to 'smc_result' is never read [clang-analyzer-deadcode.DeadStores] smc_result = amdgpu_si_send_msg_to_smc(adev, PPSMC_MSG_DisableCac); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2915:4: note: Value stored to 'smc_result' is never read smc_result = amdgpu_si_send_msg_to_smc(adev, PPSMC_MSG_DisableCac); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2920:5: warning: Value stored to 'smc_result' is never read [clang-analyzer-deadcode.DeadStores] smc_result = amdgpu_si_send_msg_to_smc(adev, PPSMC_CACLongTermAvgDisable); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:2920:5: note: Value stored to 'smc_result' is never read smc_result = amdgpu_si_send_msg_to_smc(adev, PPSMC_CACLongTermAvgDisable); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:4620:7: warning: Value stored to 'voltage_found' is never read [clang-analyzer-deadcode.DeadStores] voltage_found = true; ^ ~~~~ drivers/gpu/drm/amd/amdgpu/../pm/powerplay/si_dpm.c:4620:7: note: Value stored to 'voltage_found' is never read voltage_found = true; ^ ~~~~ Suppressed 8 warnings (8 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 8 warnings generated. Suppressed 8 warnings (8 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 9 warnings generated. drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:78:2: warning: Value stored to 'pm_pg_lock' is never read [clang-analyzer-deadcode.DeadStores] pm_pg_lock = use_bank = use_ring = false; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:78:2: note: Value stored to 'pm_pg_lock' is never read pm_pg_lock = use_bank = use_ring = false; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 8 warnings (8 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 8 warnings generated. Suppressed 8 warnings (8 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 8 warnings generated. Suppressed 8 warnings (8 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 8 warnings generated. Suppressed 8 warnings (8 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 12 warnings generated. >> drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:415:5: warning: Value stored to >> 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = -ENOMEM; ^ ~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:415:5: note: Value stored to 'ret' is never read ret = -ENOMEM; ^ ~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:460:7: warning: Value stored to 'is_hi_req' during its initialization is never read [clang-analyzer-deadcode.DeadStores] bool is_hi_req = pstate == AMDGPU_XGMI_PSTATE_MAX_VEGA20; ^~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:460:7: note: Value stored to 'is_hi_req' during its initialization is never read bool is_hi_req = pstate == AMDGPU_XGMI_PSTATE_MAX_VEGA20; ^~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:467:2: warning: Value stored to 'request_adev' is never read [clang-analyzer-deadcode.DeadStores] request_adev = hive->hi_req_gpu ? hive->hi_req_gpu : adev; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:467:2: note: Value stored to 'request_adev' is never read request_adev = hive->hi_req_gpu ? hive->hi_req_gpu : adev; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:468:2: warning: Value stored to 'init_low' is never read [clang-analyzer-deadcode.DeadStores] init_low = hive->pstate == AMDGPU_XGMI_PSTATE_UNKNOWN; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:468:2: note: Value stored to 'init_low' is never read init_low = hive->pstate == AMDGPU_XGMI_PSTATE_UNKNOWN; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 8 warnings (8 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 8 warnings generated. Suppressed 8 warnings (8 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 9 warnings generated. Suppressed 9 warnings (7 in non-user code, 2 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 9 warnings generated. drivers/spi/spi-amd.c:162:17: warning: Dereference of null pointer [clang-analyzer-core.NullDereference] cmd_opcode = *(u8 *)xfer->tx_buf; ^ drivers/spi/spi-amd.c:216:2: note: Calling 'amd_spi_fifo_xfer' amd_spi_fifo_xfer(amd_spi, master, msg); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/spi/spi-amd.c:152:2: note: Loop condition is true. Entering loop body list_for_each_entry(xfer, &message->transfers, ^ include/linux/list.h:638:2: note: expanded from macro 'list_for_each_entry' for (pos = list_first_entry(head, typeof(*pos), member); \ ^ drivers/spi/spi-amd.c:154:7: note: Assuming field 'rx_buf' is null if (xfer->rx_buf) ^~~~~~~~~~~~ drivers/spi/spi-amd.c:154:3: note: Taking false branch if (xfer->rx_buf) ^ drivers/spi/spi-amd.c:156:7: note: Assuming field 'tx_buf' is non-null if (xfer->tx_buf) ^~~~~~~~~~~~ drivers/spi/spi-amd.c:156:3: note: Taking true branch if (xfer->tx_buf) ^ drivers/spi/spi-amd.c:159:3: note: Taking true branch if (m_cmd & AMD_SPI_XFER_TX) { ^ drivers/spi/spi-amd.c:167:16: note: Assuming 'i' is >= 'tx_len' for (i = 0; i < tx_len; i++) { ^~~~~~~~~~ drivers/spi/spi-amd.c:167:4: note: Loop condition is false. Execution continues on line 172 for (i = 0; i < tx_len; i++) { ^ drivers/spi/spi-amd.c:177:3: note: Taking false branch if (m_cmd & AMD_SPI_XFER_RX) { ^ drivers/spi/spi-amd.c:152:2: note: Loop condition is true. Entering loop body list_for_each_entry(xfer, &message->transfers, ^ include/linux/list.h:638:2: note: expanded from macro 'list_for_each_entry' for (pos = list_first_entry(head, typeof(*pos), member); \ ^ drivers/spi/spi-amd.c:154:7: note: Assuming field 'rx_buf' is null if (xfer->rx_buf) ^~~~~~~~~~~~ drivers/spi/spi-amd.c:154:3: note: Taking false branch if (xfer->rx_buf) vim +/ret +415 drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b1fa8c89556e8d Andrey Grodzovsky 2019-03-05 363 b1fa8c89556e8d Andrey Grodzovsky 2019-03-05 364 b1fa8c89556e8d Andrey Grodzovsky 2019-03-05 365 d95e8e97e2d522 Dennis Li 2020-08-18 366 struct amdgpu_hive_info *amdgpu_get_xgmi_hive(struct amdgpu_device *adev) fb30fc59a24551 Shaoyun Liu 2018-06-27 367 { be8901c2ee3a16 Kevin Wang 2021-02-03 368 struct amdgpu_hive_info *hive = NULL; d95e8e97e2d522 Dennis Li 2020-08-18 369 int ret; fb30fc59a24551 Shaoyun Liu 2018-06-27 370 fb30fc59a24551 Shaoyun Liu 2018-06-27 371 if (!adev->gmc.xgmi.hive_id) fb30fc59a24551 Shaoyun Liu 2018-06-27 372 return NULL; 22d6575b8db590 Tom St Denis 2019-01-07 373 d95e8e97e2d522 Dennis Li 2020-08-18 374 if (adev->hive) { d95e8e97e2d522 Dennis Li 2020-08-18 375 kobject_get(&adev->hive->kobj); d95e8e97e2d522 Dennis Li 2020-08-18 376 return adev->hive; d95e8e97e2d522 Dennis Li 2020-08-18 377 } d95e8e97e2d522 Dennis Li 2020-08-18 378 22d6575b8db590 Tom St Denis 2019-01-07 379 mutex_lock(&xgmi_mutex); 22d6575b8db590 Tom St Denis 2019-01-07 380 be8901c2ee3a16 Kevin Wang 2021-02-03 381 list_for_each_entry(hive, &xgmi_hive_list, node) { d95e8e97e2d522 Dennis Li 2020-08-18 382 if (hive->hive_id == adev->gmc.xgmi.hive_id) d95e8e97e2d522 Dennis Li 2020-08-18 383 goto pro_end; 22d6575b8db590 Tom St Denis 2019-01-07 384 } fb30fc59a24551 Shaoyun Liu 2018-06-27 385 d95e8e97e2d522 Dennis Li 2020-08-18 386 hive = kzalloc(sizeof(*hive), GFP_KERNEL); d95e8e97e2d522 Dennis Li 2020-08-18 387 if (!hive) { d95e8e97e2d522 Dennis Li 2020-08-18 388 dev_err(adev->dev, "XGMI: allocation failed\n"); d95e8e97e2d522 Dennis Li 2020-08-18 389 hive = NULL; d95e8e97e2d522 Dennis Li 2020-08-18 390 goto pro_end; b1fa8c89556e8d Andrey Grodzovsky 2019-03-05 391 } b1fa8c89556e8d Andrey Grodzovsky 2019-03-05 392 d95e8e97e2d522 Dennis Li 2020-08-18 393 /* initialize new hive if not exist */ d95e8e97e2d522 Dennis Li 2020-08-18 394 ret = kobject_init_and_add(&hive->kobj, d95e8e97e2d522 Dennis Li 2020-08-18 395 &amdgpu_xgmi_hive_type, d95e8e97e2d522 Dennis Li 2020-08-18 396 &adev->dev->kobj, d95e8e97e2d522 Dennis Li 2020-08-18 397 "%s", "xgmi_hive_info"); d95e8e97e2d522 Dennis Li 2020-08-18 398 if (ret) { d95e8e97e2d522 Dennis Li 2020-08-18 399 dev_err(adev->dev, "XGMI: failed initializing kobject for xgmi hive\n"); 7b833d680481f4 Bernard Zhao 2021-11-14 400 kobject_put(&hive->kobj); d95e8e97e2d522 Dennis Li 2020-08-18 401 kfree(hive); d95e8e97e2d522 Dennis Li 2020-08-18 402 hive = NULL; d95e8e97e2d522 Dennis Li 2020-08-18 403 goto pro_end; d95e8e97e2d522 Dennis Li 2020-08-18 404 } d95e8e97e2d522 Dennis Li 2020-08-18 405 cfbb6b0047448e Andrey Grodzovsky 2022-01-21 406 /** cfbb6b0047448e Andrey Grodzovsky 2022-01-21 407 * Avoid recreating reset domain when hive is reconstructed for the case cfbb6b0047448e Andrey Grodzovsky 2022-01-21 408 * of reset the devices in the XGMI hive during probe for SRIOV cfbb6b0047448e Andrey Grodzovsky 2022-01-21 409 * See https://www.spinics.net/lists/amd-gfx/msg58836.html cfbb6b0047448e Andrey Grodzovsky 2022-01-21 410 */ cfbb6b0047448e Andrey Grodzovsky 2022-01-21 411 if (adev->reset_domain->type != XGMI_HIVE) { cfbb6b0047448e Andrey Grodzovsky 2022-01-21 412 hive->reset_domain = amdgpu_reset_create_reset_domain(XGMI_HIVE, "amdgpu-reset-hive"); cfbb6b0047448e Andrey Grodzovsky 2022-01-21 413 if (!hive->reset_domain) { cfbb6b0047448e Andrey Grodzovsky 2022-01-21 414 dev_err(adev->dev, "XGMI: failed initializing reset domain for xgmi hive\n"); cfbb6b0047448e Andrey Grodzovsky 2022-01-21 @415 ret = -ENOMEM; cfbb6b0047448e Andrey Grodzovsky 2022-01-21 416 kobject_put(&hive->kobj); a4c63cafa58b4b Andrey Grodzovsky 2021-11-30 417 kfree(hive); a4c63cafa58b4b Andrey Grodzovsky 2021-11-30 418 hive = NULL; a4c63cafa58b4b Andrey Grodzovsky 2021-11-30 419 goto pro_end; a4c63cafa58b4b Andrey Grodzovsky 2021-11-30 420 } cfbb6b0047448e Andrey Grodzovsky 2022-01-21 421 } else { cfbb6b0047448e Andrey Grodzovsky 2022-01-21 422 amdgpu_reset_get_reset_domain(adev->reset_domain); cfbb6b0047448e Andrey Grodzovsky 2022-01-21 423 hive->reset_domain = adev->reset_domain; cfbb6b0047448e Andrey Grodzovsky 2022-01-21 424 } a4c63cafa58b4b Andrey Grodzovsky 2021-11-30 425 d95e8e97e2d522 Dennis Li 2020-08-18 426 hive->hive_id = adev->gmc.xgmi.hive_id; d95e8e97e2d522 Dennis Li 2020-08-18 427 INIT_LIST_HEAD(&hive->device_list); d95e8e97e2d522 Dennis Li 2020-08-18 428 INIT_LIST_HEAD(&hive->node); d95e8e97e2d522 Dennis Li 2020-08-18 429 mutex_init(&hive->hive_lock); d95e8e97e2d522 Dennis Li 2020-08-18 430 atomic_set(&hive->number_devices, 0); d95e8e97e2d522 Dennis Li 2020-08-18 431 task_barrier_init(&hive->tb); d95e8e97e2d522 Dennis Li 2020-08-18 432 hive->pstate = AMDGPU_XGMI_PSTATE_UNKNOWN; d95e8e97e2d522 Dennis Li 2020-08-18 433 hive->hi_req_gpu = NULL; a4c63cafa58b4b Andrey Grodzovsky 2021-11-30 434 d84a430d9f7b1c Jonathan Kim 2020-03-17 435 /* d84a430d9f7b1c Jonathan Kim 2020-03-17 436 * hive pstate on boot is high in vega20 so we have to go to low d84a430d9f7b1c Jonathan Kim 2020-03-17 437 * pstate on after boot. d84a430d9f7b1c Jonathan Kim 2020-03-17 438 */ d95e8e97e2d522 Dennis Li 2020-08-18 439 hive->hi_req_count = AMDGPU_MAX_XGMI_DEVICE_PER_HIVE; d95e8e97e2d522 Dennis Li 2020-08-18 440 list_add_tail(&hive->node, &xgmi_hive_list); d95e8e97e2d522 Dennis Li 2020-08-18 441 d95e8e97e2d522 Dennis Li 2020-08-18 442 pro_end: d95e8e97e2d522 Dennis Li 2020-08-18 443 if (hive) d95e8e97e2d522 Dennis Li 2020-08-18 444 kobject_get(&hive->kobj); 22d6575b8db590 Tom St Denis 2019-01-07 445 mutex_unlock(&xgmi_mutex); d95e8e97e2d522 Dennis Li 2020-08-18 446 return hive; d95e8e97e2d522 Dennis Li 2020-08-18 447 } ed2bf5229c53f2 Andrey Grodzovsky 2018-11-14 448 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
