* [linux-next:master 2970/11953] drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:2109:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
@ 2022-03-13 11:50 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-03-13 11:50 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 19419 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: "Christian König" <christian.koenig@amd.com>
CC: Alex Deucher <alexander.deucher@amd.com>
CC: Felix Kuehling <Felix.Kuehling@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-lkp(a)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 <lkp@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.Cui@amd.com>
:::::: CC: Alex Deucher <alexander.deucher@amd.com>
---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 2+ messages in thread
* [linux-next:master 2970/11953] drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:2109:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
@ 2022-03-15 5:31 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-03-15 5:31 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 18755 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: Linux Memory Management List <linux-mm@kvack.org>
TO: "Christian König" <christian.koenig@amd.com>
CC: Alex Deucher <alexander.deucher@amd.com>
CC: Felix Kuehling <Felix.Kuehling@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: 5 days ago
:::::: commit date: 6 weeks ago
config: riscv-randconfig-c006-20220310 (https://download.01.org/0day-ci/archive/20220315/202203151308.VuOwt66a-lkp(a)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 <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^ ~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:973:2: note: 'session_idx' initialized to -1
int session_idx = -1;
^~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:980:9: note: Assuming 'idx' is < field 'length_dw'
while (idx < ib->length_dw) {
^~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:980:2: note: Loop condition is true. Entering loop body
while (idx < ib->length_dw) {
^
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:984:8: note: Assuming 'len' is >= 8
if ((len < 8) || (len & 3)) {
^~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:984:7: note: Left side of '||' is false
if ((len < 8) || (len & 3)) {
^
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:984:21: note: Assuming the condition is false
if ((len < 8) || (len & 3)) {
^~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:984:3: note: Taking false branch
if ((len < 8) || (len & 3)) {
^
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:990:3: note: Control jumps to 'case 16777217:' @line 1001
switch (cmd) {
^
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:1002:17: note: The result of the left shift is undefined because the right operand is negative
created |= 1 << session_idx;
^ ~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:1016:19: warning: The result of the left shift is undefined because the right operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult]
destroyed |= 1 << session_idx;
^ ~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:973:2: note: 'session_idx' initialized to -1
int session_idx = -1;
^~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:980:9: note: Assuming 'idx' is < field 'length_dw'
while (idx < ib->length_dw) {
^~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:980:2: note: Loop condition is true. Entering loop body
while (idx < ib->length_dw) {
^
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:984:8: note: Assuming 'len' is >= 8
if ((len < 8) || (len & 3)) {
^~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:984:7: note: Left side of '||' is false
if ((len < 8) || (len & 3)) {
^
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:984:21: note: Assuming the condition is false
if ((len < 8) || (len & 3)) {
^~~~~~~
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:984:3: note: Taking false branch
if ((len < 8) || (len & 3)) {
^
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:990:3: note: Control jumps to 'case 33554433:' @line 1015
switch (cmd) {
^
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c:1016:19: note: The result of the left shift is undefined because the right operand is negative
destroyed |= 1 << session_idx;
^ ~~~~~~~~~~~
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.
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
22f7cc7524081bb Christian König 2022-01-28 2062
22f7cc7524081bb Christian König 2022-01-28 2063 int amdgpu_fill_buffer(struct amdgpu_bo *bo,
22f7cc7524081bb Christian König 2022-01-28 2064 uint32_t src_data,
22f7cc7524081bb Christian König 2022-01-28 2065 struct dma_resv *resv,
22f7cc7524081bb Christian König 2022-01-28 2066 struct dma_fence **f)
22f7cc7524081bb Christian König 2022-01-28 2067 {
22f7cc7524081bb Christian König 2022-01-28 2068 struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
22f7cc7524081bb Christian König 2022-01-28 2069 struct amdgpu_ring *ring = adev->mman.buffer_funcs_ring;
22f7cc7524081bb Christian König 2022-01-28 2070 struct dma_fence *fence = NULL;
22f7cc7524081bb Christian König 2022-01-28 2071 struct amdgpu_res_cursor dst;
22f7cc7524081bb Christian König 2022-01-28 2072 int r;
22f7cc7524081bb Christian König 2022-01-28 2073
22f7cc7524081bb Christian König 2022-01-28 2074 if (!adev->mman.buffer_funcs_enabled) {
22f7cc7524081bb Christian König 2022-01-28 2075 DRM_ERROR("Trying to clear memory with ring turned off.\n");
22f7cc7524081bb Christian König 2022-01-28 2076 return -EINVAL;
22f7cc7524081bb Christian König 2022-01-28 2077 }
22f7cc7524081bb Christian König 2022-01-28 2078
22f7cc7524081bb Christian König 2022-01-28 2079 amdgpu_res_first(bo->tbo.resource, 0, amdgpu_bo_size(bo), &dst);
22f7cc7524081bb Christian König 2022-01-28 2080
22f7cc7524081bb Christian König 2022-01-28 2081 mutex_lock(&adev->mman.gtt_window_lock);
22f7cc7524081bb Christian König 2022-01-28 2082 while (dst.remaining) {
22f7cc7524081bb Christian König 2022-01-28 2083 struct dma_fence *next;
22f7cc7524081bb Christian König 2022-01-28 2084 uint64_t cur_size, to;
22f7cc7524081bb Christian König 2022-01-28 2085
22f7cc7524081bb Christian König 2022-01-28 2086 /* Never fill more than 256MiB at once to avoid timeouts */
22f7cc7524081bb Christian König 2022-01-28 2087 cur_size = min(dst.size, 256ULL << 20);
22f7cc7524081bb Christian König 2022-01-28 2088
22f7cc7524081bb Christian König 2022-01-28 2089 r = amdgpu_ttm_map_buffer(&bo->tbo, bo->tbo.resource, &dst,
22f7cc7524081bb Christian König 2022-01-28 2090 1, ring, false, &cur_size, &to);
22f7cc7524081bb Christian König 2022-01-28 2091 if (r)
22f7cc7524081bb Christian König 2022-01-28 2092 goto error;
22f7cc7524081bb Christian König 2022-01-28 2093
22f7cc7524081bb Christian König 2022-01-28 2094 r = amdgpu_ttm_fill_mem(ring, src_data, to, cur_size, resv,
22f7cc7524081bb Christian König 2022-01-28 2095 &next, true);
22f7cc7524081bb Christian König 2022-01-28 2096 if (r)
22f7cc7524081bb Christian König 2022-01-28 2097 goto error;
22f7cc7524081bb Christian König 2022-01-28 2098
22f7cc7524081bb Christian König 2022-01-28 2099 dma_fence_put(fence);
22f7cc7524081bb Christian König 2022-01-28 2100 fence = next;
22f7cc7524081bb Christian König 2022-01-28 2101
22f7cc7524081bb Christian König 2022-01-28 2102 amdgpu_res_next(&dst, cur_size);
22f7cc7524081bb Christian König 2022-01-28 2103 }
22f7cc7524081bb Christian König 2022-01-28 2104 error:
22f7cc7524081bb Christian König 2022-01-28 2105 mutex_unlock(&adev->mman.gtt_window_lock);
22f7cc7524081bb Christian König 2022-01-28 2106 if (f)
22f7cc7524081bb Christian König 2022-01-28 2107 *f = dma_fence_get(fence);
22f7cc7524081bb Christian König 2022-01-28 2108 dma_fence_put(fence);
59b4a97742888d9 Flora Cui 2016-07-19 @2109 return r;
59b4a97742888d9 Flora Cui 2016-07-19 2110 }
59b4a97742888d9 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.Cui@amd.com>
:::::: CC: Alex Deucher <alexander.deucher@amd.com>
---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-03-15 5:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-13 11:50 [linux-next:master 2970/11953] drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c:2109:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn] kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2022-03-15 5:31 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.