CC: [email protected] CC: Junxiao Chang <[email protected]>
tree: https://github.com/intel/linux-intel-lts.git 5.10/yocto head: d75bc4fd519e80cd379997651b77218cb949ecf7 commit: 6bf890b1629e2a0821448f2c94b20438a1703c3a [2361/2740] drm/amdgpu: Use delayed work to collect RAS error counters :::::: branch date: 6 weeks ago :::::: commit date: 6 weeks ago config: arm-randconfig-c002-20210822 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project a83d99c55ebb14532c414066a5aa3bdb65389965) 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 arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://github.com/intel/linux-intel-lts/commit/6bf890b1629e2a0821448f2c94b20438a1703c3a git remote add intel-linux-intel-lts https://github.com/intel/linux-intel-lts.git git fetch --no-tags intel-linux-intel-lts 5.10/yocto git checkout 6bf890b1629e2a0821448f2c94b20438a1703c3a # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 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 >>) 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. 3 warnings generated. Suppressed 3 warnings (3 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. 4 warnings generated. Suppressed 4 warnings (4 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. 4 warnings generated. Suppressed 4 warnings (4 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. 3 warnings generated. Suppressed 3 warnings (3 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. crypto/drbg.c:244:17: warning: Value stored to 'entropylen' during its initialization is never read [clang-analyzer-deadcode.DeadStores] unsigned short entropylen = drbg_sec_strength(drbg->core->flags); ^~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ crypto/drbg.c:244:17: note: Value stored to 'entropylen' during its initialization is never read unsigned short entropylen = drbg_sec_strength(drbg->core->flags); ^~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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. 9 warnings generated. drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c:842:3: warning: Value stored to 'tmp' is never read [clang-analyzer-deadcode.DeadStores] tmp = RREG32_SOC15(GC, 0, mmGRBM_SOFT_RESET); ^ drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c:842:3: note: Value stored to 'tmp' is never read 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. 2 warnings generated. Suppressed 2 warnings (2 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. 2 warnings generated. Suppressed 2 warnings (2 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. 2 warnings generated. Suppressed 2 warnings (2 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. 3 warnings generated. Suppressed 3 warnings (3 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. 3 warnings generated. Suppressed 3 warnings (3 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. 4 warnings generated. Suppressed 4 warnings (4 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. 3 warnings generated. Suppressed 3 warnings (3 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. 3 warnings generated. Suppressed 3 warnings (3 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. 3 warnings generated. Suppressed 3 warnings (3 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. 11 warnings generated. drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c:397: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:397: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:404: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:404: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:405: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:405: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. 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. 11 warnings generated. drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:792:3: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcpy(head.name, ras_block_str(i)); ^~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:792:3: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 strcpy(head.name, ras_block_str(i)); ^~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:1957:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = -ENOMEM; ^ ~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:1957:3: note: Value stored to 'ret' is never read ret = -ENOMEM; ^ ~~~~~~~ >> drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2311:2: warning: Assigned value is >> garbage or undefined [clang-analyzer-core.uninitialized.Assign] atomic_set(&con->ras_ce_count, ce_count); ^ arch/arm/include/asm/atomic.h:26:25: note: expanded from macro 'atomic_set' #define atomic_set(v,i) WRITE_ONCE(((v)->counter), (i)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:61:2: note: expanded from macro 'WRITE_ONCE' __WRITE_ONCE(x, val); \ ^~~~~~~~~~~~~~~~~~~~ include/asm-generic/rwonce.h:55:30: note: expanded from macro '__WRITE_ONCE' *(volatile typeof(x) *)&(x) = (val); \ ^ ~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2267:26: note: 'ce_count' declared without an initial value unsigned long ue_count, ce_count; ^~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2271:7: note: Calling 'amdgpu_ras_is_supported' if (!amdgpu_ras_is_supported(adev, ras_block->block)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgpu_ras.h:481:6: note: Assuming 'block' is < AMDGPU_RAS_BLOCK__LAST if (block >= AMDGPU_RAS_BLOCK_COUNT) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgpu_ras.h:481:2: note: Taking false branch if (block >= AMDGPU_RAS_BLOCK_COUNT) ^ drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgpu_ras.h:483:9: note: Assuming 'ras' is non-null, which participates in a condition later return ras && (adev->ras_enabled & (1 << block)); ^~~ drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgpu_ras.h:483:9: note: Left side of '&&' is true drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgpu_ras.h:483:2: note: Returning without writing to 'adev->psp.ras.ras', which participates in a condition later return ras && (adev->ras_enabled & (1 << block)); ^ drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgpu_ras.h:483:2: note: Returning without writing to 'adev->in_suspend', which participates in a condition later drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgpu_ras.h:483:2: note: Returning value, which participates in a condition later return ras && (adev->ras_enabled & (1 << block)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2271:7: note: Returning from 'amdgpu_ras_is_supported' if (!amdgpu_ras_is_supported(adev, ras_block->block)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2271:6: note: Assuming the condition is false if (!amdgpu_ras_is_supported(adev, ras_block->block)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2271:2: note: Taking false branch if (!amdgpu_ras_is_supported(adev, ras_block->block)) { ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2276:6: note: Calling 'amdgpu_ras_feature_enable_on_boot' r = amdgpu_ras_feature_enable_on_boot(adev, ras_block, 1); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:710:7: note: 'con' is non-null, which participates in a condition later if (!con) ^~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:710:2: note: Taking false branch if (!con) ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:713:6: note: Assuming the condition is true if (con->flags & AMDGPU_RAS_FLAG_INIT_BY_VBIOS) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:713:2: note: Taking true branch if (con->flags & AMDGPU_RAS_FLAG_INIT_BY_VBIOS) { ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:714:7: note: 'enable' is true if (enable) { ^~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:714:3: note: Taking true branch if (enable) { ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:726:8: note: Assuming the condition is false if (ret == -EINVAL) { ^~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:726:4: note: Taking false branch if (ret == -EINVAL) { ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:752:2: note: Returning value (loaded from 'ret'), which participates in a condition later return ret; ^~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2276:6: note: Returning from 'amdgpu_ras_feature_enable_on_boot' r = amdgpu_ras_feature_enable_on_boot(adev, ras_block, 1); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2277:6: note: Assuming 'r' is 0 if (r) { ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2277:2: note: Taking false branch if (r) { ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2292:2: note: Calling 'amdgpu_persistent_edc_harvesting' amdgpu_persistent_edc_harvesting(adev, ras_block); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2248:2: note: Taking false branch if (!amdgpu_persistent_edc_harvesting_supported(adev)) ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2251:6: note: Value assigned to field 'in_suspend', which participates in a condition later if (amdgpu_ras_query_error_status(adev, &info) != 0) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2251:6: note: Assuming the condition is false if (amdgpu_ras_query_error_status(adev, &info) != 0) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2251:2: note: Taking false branch if (amdgpu_ras_query_error_status(adev, &info) != 0) ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c:2254:6: note: Calling 'amdgpu_ras_reset_error_status' if (amdgpu_ras_reset_error_status(adev, ras_block->block) != 0) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +2311 drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c 56d08d57eea886 John Clements 2021-03-25 2259 b293e891b05701 Hawking Zhang 2019-08-30 2260 /* helper function to handle common stuff in ip late init phase */ b293e891b05701 Hawking Zhang 2019-08-30 2261 int amdgpu_ras_late_init(struct amdgpu_device *adev, b293e891b05701 Hawking Zhang 2019-08-30 2262 struct ras_common_if *ras_block, b293e891b05701 Hawking Zhang 2019-08-30 2263 struct ras_fs_if *fs_info, b293e891b05701 Hawking Zhang 2019-08-30 2264 struct ras_ih_if *ih_info) b293e891b05701 Hawking Zhang 2019-08-30 2265 { 6bf890b1629e2a Luben Tuikov 2021-05-21 2266 struct amdgpu_ras *con = amdgpu_ras_get_context(adev); 6bf890b1629e2a Luben Tuikov 2021-05-21 2267 unsigned long ue_count, ce_count; b293e891b05701 Hawking Zhang 2019-08-30 2268 int r; b293e891b05701 Hawking Zhang 2019-08-30 2269 b293e891b05701 Hawking Zhang 2019-08-30 2270 /* disable RAS feature per IP block if it is not supported */ b293e891b05701 Hawking Zhang 2019-08-30 2271 if (!amdgpu_ras_is_supported(adev, ras_block->block)) { b293e891b05701 Hawking Zhang 2019-08-30 2272 amdgpu_ras_feature_enable_on_boot(adev, ras_block, 0); b293e891b05701 Hawking Zhang 2019-08-30 2273 return 0; b293e891b05701 Hawking Zhang 2019-08-30 2274 } b293e891b05701 Hawking Zhang 2019-08-30 2275 b293e891b05701 Hawking Zhang 2019-08-30 2276 r = amdgpu_ras_feature_enable_on_boot(adev, ras_block, 1); b293e891b05701 Hawking Zhang 2019-08-30 2277 if (r) { b293e891b05701 Hawking Zhang 2019-08-30 2278 if (r == -EAGAIN) { b293e891b05701 Hawking Zhang 2019-08-30 2279 /* request gpu reset. will run again */ b293e891b05701 Hawking Zhang 2019-08-30 2280 amdgpu_ras_request_reset_on_boot(adev, b293e891b05701 Hawking Zhang 2019-08-30 2281 ras_block->block); b293e891b05701 Hawking Zhang 2019-08-30 2282 return 0; 53b3f8f40e6cff Dennis Li 2020-08-19 2283 } else if (adev->in_suspend || amdgpu_in_reset(adev)) { b293e891b05701 Hawking Zhang 2019-08-30 2284 /* in resume phase, if fail to enable ras, b293e891b05701 Hawking Zhang 2019-08-30 2285 * clean up all ras fs nodes, and disable ras */ b293e891b05701 Hawking Zhang 2019-08-30 2286 goto cleanup; b293e891b05701 Hawking Zhang 2019-08-30 2287 } else b293e891b05701 Hawking Zhang 2019-08-30 2288 return r; b293e891b05701 Hawking Zhang 2019-08-30 2289 } b293e891b05701 Hawking Zhang 2019-08-30 2290 56d08d57eea886 John Clements 2021-03-25 2291 /* check for errors on warm reset edc persisant supported ASIC */ 56d08d57eea886 John Clements 2021-03-25 2292 amdgpu_persistent_edc_harvesting(adev, ras_block); 56d08d57eea886 John Clements 2021-03-25 2293 b293e891b05701 Hawking Zhang 2019-08-30 2294 /* in resume phase, no need to create ras fs node */ 53b3f8f40e6cff Dennis Li 2020-08-19 2295 if (adev->in_suspend || amdgpu_in_reset(adev)) b293e891b05701 Hawking Zhang 2019-08-30 2296 return 0; b293e891b05701 Hawking Zhang 2019-08-30 2297 b293e891b05701 Hawking Zhang 2019-08-30 2298 if (ih_info->cb) { b293e891b05701 Hawking Zhang 2019-08-30 2299 r = amdgpu_ras_interrupt_add_handler(adev, ih_info); b293e891b05701 Hawking Zhang 2019-08-30 2300 if (r) b293e891b05701 Hawking Zhang 2019-08-30 2301 goto interrupt; b293e891b05701 Hawking Zhang 2019-08-30 2302 } b293e891b05701 Hawking Zhang 2019-08-30 2303 b293e891b05701 Hawking Zhang 2019-08-30 2304 r = amdgpu_ras_sysfs_create(adev, fs_info); b293e891b05701 Hawking Zhang 2019-08-30 2305 if (r) b293e891b05701 Hawking Zhang 2019-08-30 2306 goto sysfs; b293e891b05701 Hawking Zhang 2019-08-30 2307 6bf890b1629e2a Luben Tuikov 2021-05-21 2308 /* Those are the cached values at init. 6bf890b1629e2a Luben Tuikov 2021-05-21 2309 */ 6bf890b1629e2a Luben Tuikov 2021-05-21 2310 amdgpu_ras_query_error_count(adev, &ce_count, &ue_count); 6bf890b1629e2a Luben Tuikov 2021-05-21 @2311 atomic_set(&con->ras_ce_count, ce_count); 6bf890b1629e2a Luben Tuikov 2021-05-21 2312 atomic_set(&con->ras_ue_count, ue_count); 6bf890b1629e2a Luben Tuikov 2021-05-21 2313 b293e891b05701 Hawking Zhang 2019-08-30 2314 return 0; b293e891b05701 Hawking Zhang 2019-08-30 2315 cleanup: b293e891b05701 Hawking Zhang 2019-08-30 2316 amdgpu_ras_sysfs_remove(adev, ras_block); b293e891b05701 Hawking Zhang 2019-08-30 2317 sysfs: b293e891b05701 Hawking Zhang 2019-08-30 2318 if (ih_info->cb) b293e891b05701 Hawking Zhang 2019-08-30 2319 amdgpu_ras_interrupt_remove_handler(adev, ih_info); b293e891b05701 Hawking Zhang 2019-08-30 2320 interrupt: b293e891b05701 Hawking Zhang 2019-08-30 2321 amdgpu_ras_feature_enable(adev, ras_block, 0); b293e891b05701 Hawking Zhang 2019-08-30 2322 return r; b293e891b05701 Hawking Zhang 2019-08-30 2323 } b293e891b05701 Hawking Zhang 2019-08-30 2324 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
