CC: l...@lists.linux.dev CC: kbuild-...@lists.01.org BCC: l...@intel.com CC: Linux Memory Management List <linux...@kvack.org> TO: "Christian König" <christian.koe...@amd.com> CC: Alex Deucher <alexander.deuc...@amd.com> CC: Felix Kuehling <felix.kuehl...@amd.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 71941773e143369a73c9c4a3b62fbb60736a1182 commit: 22f7cc7524081bb2bfb2720e43ab9889e2ed5b00 [2970/11953] drm/amdgpu: restructure amdgpu_fill_buffer v2 :::::: branch date: 3 days ago :::::: commit date: 6 weeks ago config: riscv-randconfig-c006-20220310 (https://download.01.org/0day-ci/archive/20220313/202203131937.vcibo0u5-...@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 276ca87382b8f16a65bddac700202924228982f6) 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 # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=22f7cc7524081bb2bfb2720e43ab9889e2ed5b00 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 22f7cc7524081bb2bfb2720e43ab9889e2ed5b00 # 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 <l...@intel.com> clang-analyzer warnings: (new ones prefixed by >>) ^ ~ drivers/gpu/drm/via/via_dma.c:695:2: warning: Value stored to 'tmp_size' is never read [clang-analyzer-deadcode.DeadStores] tmp_size = d_siz->size; ^ ~~~~~~~~~~~ drivers/gpu/drm/via/via_dma.c:695:2: note: Value stored to 'tmp_size' is never read tmp_size = d_siz->size; ^ ~~~~~~~~~~~ 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. 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. 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. 4 warnings generated. drivers/gpu/drm/nouveau/nvif/object.c:38:48: warning: The left operand of '==' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult] if (size >= sizeof(*args) && args->v0.version == 0) { ^ drivers/gpu/drm/nouveau/nvif/object.c:132:12: note: Calling 'nvif_object_ioctl' int ret = nvif_object_ioctl(object, &args, sizeof(args), NULL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/nouveau/nvif/object.c:38:6: note: Left side of '&&' is true if (size >= sizeof(*args) && args->v0.version == 0) { ^ drivers/gpu/drm/nouveau/nvif/object.c:38:48: note: The left operand of '==' is a garbage value if (size >= sizeof(*args) && args->v0.version == 0) { ~~~~~~~~~~~~~~~~ ^ 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. 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. 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. 5 warnings generated. drivers/net/can/softing/softing_fw.c:531:3: warning: Value stored to 'error_reporting' is never read [clang-analyzer-deadcode.DeadStores] error_reporting += softing_error_reporting(netdev); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/can/softing/softing_fw.c:531:3: note: Value stored to 'error_reporting' is never read error_reporting += softing_error_reporting(netdev); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 4 warnings (3 in non-user code, 1 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. 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/atom.c:960:2: warning: Value stored to 'dst' is never read [clang-analyzer-deadcode.DeadStores] dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/atom.c:960:2: note: Value stored to 'dst' is never read dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/atom.c:979:2: warning: Value stored to 'dst' is never read [clang-analyzer-deadcode.DeadStores] dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/atom.c:979:2: note: Value stored to 'dst' is never read dst = atom_get_dst(ctx, arg, attr, ptr, &saved, 1); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/atom.c:1386:2: warning: Value stored to 'str_off' is never read [clang-analyzer-deadcode.DeadStores] str_off = 0; ^ ~ drivers/gpu/drm/amd/amdgpu/atom.c:1386:2: note: Value stored to 'str_off' is never read str_off = 0; ^ ~ drivers/gpu/drm/amd/amdgpu/atom.c:1409:2: warning: Value stored to 'off_to_vbios_str' is never read [clang-analyzer-deadcode.DeadStores] off_to_vbios_str = 0; ^ ~ drivers/gpu/drm/amd/amdgpu/atom.c:1409:2: note: Value stored to 'off_to_vbios_str' is never read off_to_vbios_str = 0; ^ ~ 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/amdgpu_ttm.c:2109:2: warning: Undefined or >> garbage value returned to caller >> [clang-analyzer-core.uninitialized.UndefReturn] return r; ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:460:6: note: Assuming field 'mem_type' is not equal to TTM_PL_TT if (new_mem->mem_type == TTM_PL_TT || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:460:6: note: Left side of '||' is false drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:461:6: note: Assuming the condition is false new_mem->mem_type == AMDGPU_PL_PREEMPT) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:460:2: note: Taking false branch if (new_mem->mem_type == TTM_PL_TT || ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:469:19: note: Assuming field 'pin_count' is <= 0 if (WARN_ON_ONCE(abo->tbo.pin_count > 0)) ^ include/asm-generic/bug.h:179:41: note: expanded from macro 'WARN_ON_ONCE' #define WARN_ON_ONCE(condition) WARN_ON(condition) ^~~~~~~~~ include/asm-generic/bug.h:166:25: note: expanded from macro 'WARN_ON' int __ret_warn_on = !!(condition); \ ^~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:469:2: note: Taking false branch if (WARN_ON_ONCE(abo->tbo.pin_count > 0)) ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:474:6: note: Assuming field 'mem_type' is not equal to TTM_PL_SYSTEM if (old_mem->mem_type == TTM_PL_SYSTEM && bo->ttm == NULL) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:474:41: note: Left side of '&&' is false if (old_mem->mem_type == TTM_PL_SYSTEM && bo->ttm == NULL) { ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:478:15: note: Field 'mem_type' is not equal to TTM_PL_SYSTEM if (old_mem->mem_type == TTM_PL_SYSTEM && ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:478:41: note: Left side of '&&' is false if (old_mem->mem_type == TTM_PL_SYSTEM && ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:484:7: note: Assuming field 'mem_type' is not equal to TTM_PL_TT if ((old_mem->mem_type == TTM_PL_TT || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:484:7: note: Left side of '||' is false drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:485:7: note: Assuming the condition is false old_mem->mem_type == AMDGPU_PL_PREEMPT) && ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:485:47: note: Left side of '&&' is false old_mem->mem_type == AMDGPU_PL_PREEMPT) && ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:497:6: note: Assuming the condition is false if (old_mem->mem_type == AMDGPU_PL_GDS || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:497:6: note: Left side of '||' is false drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:498:6: note: Assuming the condition is false old_mem->mem_type == AMDGPU_PL_GWS || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:497:6: note: Left side of '||' is false if (old_mem->mem_type == AMDGPU_PL_GDS || ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:499:6: note: Assuming the condition is false old_mem->mem_type == AMDGPU_PL_OA || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:497:6: note: Left side of '||' is false if (old_mem->mem_type == AMDGPU_PL_GDS || ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:500:6: note: Assuming the condition is false new_mem->mem_type == AMDGPU_PL_GDS || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:497:6: note: Left side of '||' is false if (old_mem->mem_type == AMDGPU_PL_GDS || ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:501:6: note: Assuming the condition is false new_mem->mem_type == AMDGPU_PL_GWS || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:497:6: note: Left side of '||' is false if (old_mem->mem_type == AMDGPU_PL_GDS || ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:502:6: note: Assuming the condition is false new_mem->mem_type == AMDGPU_PL_OA) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:497:2: note: Taking false branch if (old_mem->mem_type == AMDGPU_PL_GDS || ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:508:6: note: Assuming field 'type' is not equal to ttm_bo_type_device if (bo->type == ttm_bo_type_device && ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:508:37: note: Left side of '&&' is false if (bo->type == ttm_bo_type_device && ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:517:6: note: Assuming field 'buffer_funcs_enabled' is true if (adev->mman.buffer_funcs_enabled) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:517:2: note: Taking true branch if (adev->mman.buffer_funcs_enabled) { ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:518:18: note: Field 'mem_type' is not equal to TTM_PL_SYSTEM if (((old_mem->mem_type == TTM_PL_SYSTEM && ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:518:44: note: Left side of '&&' is false if (((old_mem->mem_type == TTM_PL_SYSTEM && ^ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:520:9: note: Assuming field 'mem_type' is not equal to TTM_PL_VRAM (old_mem->mem_type == TTM_PL_VRAM && vim +2109 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c 22f7cc7524081b Christian König 2022-01-28 2062 22f7cc7524081b Christian König 2022-01-28 2063 int amdgpu_fill_buffer(struct amdgpu_bo *bo, 22f7cc7524081b Christian König 2022-01-28 2064 uint32_t src_data, 22f7cc7524081b Christian König 2022-01-28 2065 struct dma_resv *resv, 22f7cc7524081b Christian König 2022-01-28 2066 struct dma_fence **f) 22f7cc7524081b Christian König 2022-01-28 2067 { 22f7cc7524081b Christian König 2022-01-28 2068 struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev); 22f7cc7524081b Christian König 2022-01-28 2069 struct amdgpu_ring *ring = adev->mman.buffer_funcs_ring; 22f7cc7524081b Christian König 2022-01-28 2070 struct dma_fence *fence = NULL; 22f7cc7524081b Christian König 2022-01-28 2071 struct amdgpu_res_cursor dst; 22f7cc7524081b Christian König 2022-01-28 2072 int r; 22f7cc7524081b Christian König 2022-01-28 2073 22f7cc7524081b Christian König 2022-01-28 2074 if (!adev->mman.buffer_funcs_enabled) { 22f7cc7524081b Christian König 2022-01-28 2075 DRM_ERROR("Trying to clear memory with ring turned off.\n"); 22f7cc7524081b Christian König 2022-01-28 2076 return -EINVAL; 22f7cc7524081b Christian König 2022-01-28 2077 } 22f7cc7524081b Christian König 2022-01-28 2078 22f7cc7524081b Christian König 2022-01-28 2079 amdgpu_res_first(bo->tbo.resource, 0, amdgpu_bo_size(bo), &dst); 22f7cc7524081b Christian König 2022-01-28 2080 22f7cc7524081b Christian König 2022-01-28 2081 mutex_lock(&adev->mman.gtt_window_lock); 22f7cc7524081b Christian König 2022-01-28 2082 while (dst.remaining) { 22f7cc7524081b Christian König 2022-01-28 2083 struct dma_fence *next; 22f7cc7524081b Christian König 2022-01-28 2084 uint64_t cur_size, to; 22f7cc7524081b Christian König 2022-01-28 2085 22f7cc7524081b Christian König 2022-01-28 2086 /* Never fill more than 256MiB at once to avoid timeouts */ 22f7cc7524081b Christian König 2022-01-28 2087 cur_size = min(dst.size, 256ULL << 20); 22f7cc7524081b Christian König 2022-01-28 2088 22f7cc7524081b Christian König 2022-01-28 2089 r = amdgpu_ttm_map_buffer(&bo->tbo, bo->tbo.resource, &dst, 22f7cc7524081b Christian König 2022-01-28 2090 1, ring, false, &cur_size, &to); 22f7cc7524081b Christian König 2022-01-28 2091 if (r) 22f7cc7524081b Christian König 2022-01-28 2092 goto error; 22f7cc7524081b Christian König 2022-01-28 2093 22f7cc7524081b Christian König 2022-01-28 2094 r = amdgpu_ttm_fill_mem(ring, src_data, to, cur_size, resv, 22f7cc7524081b Christian König 2022-01-28 2095 &next, true); 22f7cc7524081b Christian König 2022-01-28 2096 if (r) 22f7cc7524081b Christian König 2022-01-28 2097 goto error; 22f7cc7524081b Christian König 2022-01-28 2098 22f7cc7524081b Christian König 2022-01-28 2099 dma_fence_put(fence); 22f7cc7524081b Christian König 2022-01-28 2100 fence = next; 22f7cc7524081b Christian König 2022-01-28 2101 22f7cc7524081b Christian König 2022-01-28 2102 amdgpu_res_next(&dst, cur_size); 22f7cc7524081b Christian König 2022-01-28 2103 } 22f7cc7524081b Christian König 2022-01-28 2104 error: 22f7cc7524081b Christian König 2022-01-28 2105 mutex_unlock(&adev->mman.gtt_window_lock); 22f7cc7524081b Christian König 2022-01-28 2106 if (f) 22f7cc7524081b Christian König 2022-01-28 2107 *f = dma_fence_get(fence); 22f7cc7524081b Christian König 2022-01-28 2108 dma_fence_put(fence); 59b4a97742888d Flora Cui 2016-07-19 @2109 return r; 59b4a97742888d Flora Cui 2016-07-19 2110 } 59b4a97742888d Flora Cui 2016-07-19 2111 :::::: The code at line 2109 was first introduced by commit :::::: 59b4a97742888d9d3c4daa96bd15157ebd496f81 drm/amdgpu: implement amdgpu_fill_buffer() :::::: TO: Flora Cui <flora....@amd.com> :::::: CC: Alex Deucher <alexander.deuc...@amd.com> --- 0-DAY CI Kernel Test Service https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org