:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check warning: 
drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c:934:17: warning: use of uninitialized 
value 'index' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]"
:::::: 

BCC: l...@intel.com
CC: kbuild-...@lists.01.org
CC: linux-ker...@vger.kernel.org
TO: Stanley Yang <stanley.y...@amd.com>
CC: Alex Deucher <alexander.deuc...@amd.com>
CC: Likun Gao <likun....@amd.com>
CC: Hawking Zhang <hawking.zh...@amd.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   1612c382ffbdf1f673caec76502b1c00e6d35363
commit: 61a039d1757b148717b9e10ea0cd30e5da6cf919 drm/amdgpu: add initial 
support for sdma v6.0
date:   3 months ago
:::::: branch date: 83 minutes ago
:::::: commit date: 3 months ago
config: arm-randconfig-c002-20220805 
(https://download.01.org/0day-ci/archive/20220807/202208071014.27nfi2aj-...@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
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
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=61a039d1757b148717b9e10ea0cd30e5da6cf919
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 61a039d1757b148717b9e10ea0cd30e5da6cf919
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross 
ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <l...@intel.com>

gcc-analyzer warnings: (new ones prefixed by >>)
   drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c: In function 
'sdma_v6_0_ring_test_ring':
   drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c:919:26: warning: dereference of NULL 
'0' [CWE-476] [-Wanalyzer-null-dereference]
     919 |                 *cpu_ptr = tmp;
         |                 ~~~~~~~~~^~~~~
     'sdma_v6_0_ring_test_ring': events 1-2
       |
       |  913 |         if (ring->is_mes_queue) {
       |      |            ^
       |      |            |
       |      |            (1) following 'true' branch...
       |  914 |                 uint32_t offset = 0;
       |  915 |                 offset = amdgpu_mes_ctx_get_offs(ring,
       |      |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                          |
       |      |                          (2) ...to here
       |  916 |                                          
AMDGPU_MES_CTX_PADDING_OFFS);
       |      |                                          
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |
     'sdma_v6_0_ring_test_ring': event 3
       |
       |drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h:384:71:
       |  383 |         (ring->is_mes_queue && ring->mes_ctx ?                  
        \
       |      |         
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |  384 |          (void *)((uint8_t *)(ring->mes_ctx->meta_data_ptr) + 
offset) : \
       |      |          
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
       |      |                                                                 
      |
       |      |                                                                 
      (3) following 'false' branch...
       |  385 |          NULL)
       |      |          ~~~~~                                                  
       
   drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c:918:27: note: in expansion of macro 
'amdgpu_mes_ctx_get_offs_cpu_addr'
       |  918 |                 cpu_ptr = 
amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset);
       |      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |
     'sdma_v6_0_ring_test_ring': events 4-5
       |
       |  919 |                 *cpu_ptr = tmp;
       |      |                 ~~~~~~~~~^~~~~
       |      |                          |
       |      |                          (4) ...to here
       |      |                          (5) dereference of NULL '<unknown>'
       |
>> drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c:934:17: warning: use of uninitialized 
>> value 'index' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]
     934 |                 amdgpu_device_wb_free(adev, index);
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     'sdma_v6_0_ring_test_ring': events 1-4
       |
       |  905 |         unsigned index;
       |      |                  ^~~~~
       |      |                  |
       |      |                  (1) region created on stack here
       |......
       |  913 |         if (ring->is_mes_queue) {
       |      |            ~      
       |      |            |
       |      |            (2) following 'true' branch...
       |  914 |                 uint32_t offset = 0;
       |  915 |                 offset = amdgpu_mes_ctx_get_offs(ring,
       |      |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                          |
       |      |                          (3) ...to here
       |  916 |                                          
AMDGPU_MES_CTX_PADDING_OFFS);
       |      |                                          
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |......
       |  932 |         if (r) {
       |      |            ~      
       |      |            |
       |      |            (4) following 'true' branch (when 'r != 0')...
       |
     'sdma_v6_0_ring_test_ring': event 5
       |
       |include/drm/drm_print.h:518:9:
       |  518 |         __drm_err(fmt, ##__VA_ARGS__)
       |      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |         |
       |      |         (5) ...to here
   drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c:933:17: note: in expansion of macro 
'DRM_ERROR'
       |  933 |                 DRM_ERROR("amdgpu: dma failed to lock ring %d 
(%d).\n", ring->idx, r);
       |      |                 ^~~~~~~~~
       |
     'sdma_v6_0_ring_test_ring': event 6
       |
       |  934 |                 amdgpu_device_wb_free(adev, index);
       |      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                 |
       |      |                 (6) use of uninitialized value 'index' here
       |
   drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c: In function 'sdma_v6_0_ring_test_ib':
   drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c:1000:26: warning: dereference of NULL 
'0' [CWE-476] [-Wanalyzer-null-dereference]
    1000 |                 *cpu_ptr = tmp;
         |                 ~~~~~~~~~^~~~~
     'sdma_v6_0_ring_test_ib': events 1-2
       |
       |  990 |         if (ring->is_mes_queue) {
       |      |            ^
       |      |            |
       |      |            (1) following 'true' branch...
       |  991 |                 uint32_t offset = 0;
       |  992 |                 offset = amdgpu_mes_ctx_get_offs(ring, 
AMDGPU_MES_CTX_IB_OFFS);
       |      |                          
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                          |
       |      |                          (2) ...to here
       |
     'sdma_v6_0_ring_test_ib': event 3
       |
       |drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h:384:71:
       |  383 |         (ring->is_mes_queue && ring->mes_ctx ?                  
        \
       |      |         
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |  384 |          (void *)((uint8_t *)(ring->mes_ctx->meta_data_ptr) + 
offset) : \
       |      |          
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
       |      |                                                                 
      |
       |      |                                                                 
      (3) following 'false' branch...
       |  385 |          NULL)
       |      |          ~~~~~                                                  
       
   drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c:999:27: note: in expansion of macro 
'amdgpu_mes_ctx_get_offs_cpu_addr'
       |  999 |                 cpu_ptr = 
amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset);
       |      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |
     'sdma_v6_0_ring_test_ib': events 4-5
       |
       | 1000 |                 *cpu_ptr = tmp;
       |      |                 ~~~~~~~~~^~~~~
       |      |                          |
       |      |                          (4) ...to here
       |      |                          (5) dereference of NULL '<unknown>'
       |
   drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c:1044:21: warning: dereference of NULL 
'cpu_ptr' [CWE-476] [-Wanalyzer-null-dereference]
    1044 |                 tmp = le32_to_cpu(*cpu_ptr);
     'sdma_v6_0_ring_test_ib': events 1-13
       |
       |  990 |         if (ring->is_mes_queue) {
       |      |            ^
       |      |            |
       |      |            (1) following 'false' branch...
       |......
       | 1002 |                 r = amdgpu_device_wb_get(adev, &index);
       |      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                     |
       |      |                     (2) ...to here
       | 1003 |                 if (r) {
       |      |                    ~
       |      |                    |
       |      |                    (3) following 'false' branch (when 'r == 
0')...

vim +/index +934 drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c

61a039d1757b14 Stanley Yang 2022-04-13  891  
61a039d1757b14 Stanley Yang 2022-04-13  892  /**
61a039d1757b14 Stanley Yang 2022-04-13  893   * sdma_v6_0_ring_test_ring - 
simple async dma engine test
61a039d1757b14 Stanley Yang 2022-04-13  894   *
61a039d1757b14 Stanley Yang 2022-04-13  895   * @ring: amdgpu_ring structure 
holding ring information
61a039d1757b14 Stanley Yang 2022-04-13  896   *
61a039d1757b14 Stanley Yang 2022-04-13  897   * Test the DMA engine by writing 
using it to write an
61a039d1757b14 Stanley Yang 2022-04-13  898   * value to memory.
61a039d1757b14 Stanley Yang 2022-04-13  899   * Returns 0 for success, error 
for failure.
61a039d1757b14 Stanley Yang 2022-04-13  900   */
61a039d1757b14 Stanley Yang 2022-04-13  901  static int 
sdma_v6_0_ring_test_ring(struct amdgpu_ring *ring)
61a039d1757b14 Stanley Yang 2022-04-13  902  {
61a039d1757b14 Stanley Yang 2022-04-13  903     struct amdgpu_device *adev = 
ring->adev;
61a039d1757b14 Stanley Yang 2022-04-13  904     unsigned i;
61a039d1757b14 Stanley Yang 2022-04-13  905     unsigned index;
61a039d1757b14 Stanley Yang 2022-04-13  906     int r;
61a039d1757b14 Stanley Yang 2022-04-13  907     u32 tmp;
61a039d1757b14 Stanley Yang 2022-04-13  908     u64 gpu_addr;
61a039d1757b14 Stanley Yang 2022-04-13  909     volatile uint32_t *cpu_ptr = 
NULL;
61a039d1757b14 Stanley Yang 2022-04-13  910  
61a039d1757b14 Stanley Yang 2022-04-13  911     tmp = 0xCAFEDEAD;
61a039d1757b14 Stanley Yang 2022-04-13  912  
61a039d1757b14 Stanley Yang 2022-04-13  913     if (ring->is_mes_queue) {
61a039d1757b14 Stanley Yang 2022-04-13  914             uint32_t offset = 0;
61a039d1757b14 Stanley Yang 2022-04-13  915             offset = 
amdgpu_mes_ctx_get_offs(ring,
61a039d1757b14 Stanley Yang 2022-04-13  916                                     
 AMDGPU_MES_CTX_PADDING_OFFS);
61a039d1757b14 Stanley Yang 2022-04-13  917             gpu_addr = 
amdgpu_mes_ctx_get_offs_gpu_addr(ring, offset);
61a039d1757b14 Stanley Yang 2022-04-13  918             cpu_ptr = 
amdgpu_mes_ctx_get_offs_cpu_addr(ring, offset);
61a039d1757b14 Stanley Yang 2022-04-13  919             *cpu_ptr = tmp;
61a039d1757b14 Stanley Yang 2022-04-13  920     } else {
61a039d1757b14 Stanley Yang 2022-04-13  921             r = 
amdgpu_device_wb_get(adev, &index);
61a039d1757b14 Stanley Yang 2022-04-13  922             if (r) {
61a039d1757b14 Stanley Yang 2022-04-13  923                     
dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r);
61a039d1757b14 Stanley Yang 2022-04-13  924                     return r;
61a039d1757b14 Stanley Yang 2022-04-13  925             }
61a039d1757b14 Stanley Yang 2022-04-13  926  
61a039d1757b14 Stanley Yang 2022-04-13  927             gpu_addr = 
adev->wb.gpu_addr + (index * 4);
61a039d1757b14 Stanley Yang 2022-04-13  928             adev->wb.wb[index] = 
cpu_to_le32(tmp);
61a039d1757b14 Stanley Yang 2022-04-13  929     }
61a039d1757b14 Stanley Yang 2022-04-13  930  
61a039d1757b14 Stanley Yang 2022-04-13  931     r = amdgpu_ring_alloc(ring, 5);
61a039d1757b14 Stanley Yang 2022-04-13  932     if (r) {
61a039d1757b14 Stanley Yang 2022-04-13  933             DRM_ERROR("amdgpu: dma 
failed to lock ring %d (%d).\n", ring->idx, r);
61a039d1757b14 Stanley Yang 2022-04-13 @934             
amdgpu_device_wb_free(adev, index);
61a039d1757b14 Stanley Yang 2022-04-13  935             return r;
61a039d1757b14 Stanley Yang 2022-04-13  936     }
61a039d1757b14 Stanley Yang 2022-04-13  937  
61a039d1757b14 Stanley Yang 2022-04-13  938     amdgpu_ring_write(ring, 
SDMA_PKT_COPY_LINEAR_HEADER_OP(SDMA_OP_WRITE) |
61a039d1757b14 Stanley Yang 2022-04-13  939                       
SDMA_PKT_COPY_LINEAR_HEADER_SUB_OP(SDMA_SUBOP_WRITE_LINEAR));
61a039d1757b14 Stanley Yang 2022-04-13  940     amdgpu_ring_write(ring, 
lower_32_bits(gpu_addr));
61a039d1757b14 Stanley Yang 2022-04-13  941     amdgpu_ring_write(ring, 
upper_32_bits(gpu_addr));
61a039d1757b14 Stanley Yang 2022-04-13  942     amdgpu_ring_write(ring, 
SDMA_PKT_WRITE_UNTILED_DW_3_COUNT(0));
61a039d1757b14 Stanley Yang 2022-04-13  943     amdgpu_ring_write(ring, 
0xDEADBEEF);
61a039d1757b14 Stanley Yang 2022-04-13  944     amdgpu_ring_commit(ring);
61a039d1757b14 Stanley Yang 2022-04-13  945  
61a039d1757b14 Stanley Yang 2022-04-13  946     for (i = 0; i < 
adev->usec_timeout; i++) {
61a039d1757b14 Stanley Yang 2022-04-13  947             if (ring->is_mes_queue)
61a039d1757b14 Stanley Yang 2022-04-13  948                     tmp = 
le32_to_cpu(*cpu_ptr);
61a039d1757b14 Stanley Yang 2022-04-13  949             else
61a039d1757b14 Stanley Yang 2022-04-13  950                     tmp = 
le32_to_cpu(adev->wb.wb[index]);
61a039d1757b14 Stanley Yang 2022-04-13  951             if (tmp == 0xDEADBEEF)
61a039d1757b14 Stanley Yang 2022-04-13  952                     break;
61a039d1757b14 Stanley Yang 2022-04-13  953             if (amdgpu_emu_mode == 
1)
61a039d1757b14 Stanley Yang 2022-04-13  954                     msleep(1);
61a039d1757b14 Stanley Yang 2022-04-13  955             else
61a039d1757b14 Stanley Yang 2022-04-13  956                     udelay(1);
61a039d1757b14 Stanley Yang 2022-04-13  957     }
61a039d1757b14 Stanley Yang 2022-04-13  958  
61a039d1757b14 Stanley Yang 2022-04-13  959     if (i >= adev->usec_timeout)
61a039d1757b14 Stanley Yang 2022-04-13  960             r = -ETIMEDOUT;
61a039d1757b14 Stanley Yang 2022-04-13  961  
61a039d1757b14 Stanley Yang 2022-04-13  962     if (!ring->is_mes_queue)
61a039d1757b14 Stanley Yang 2022-04-13  963             
amdgpu_device_wb_free(adev, index);
61a039d1757b14 Stanley Yang 2022-04-13  964  
61a039d1757b14 Stanley Yang 2022-04-13  965     return r;
61a039d1757b14 Stanley Yang 2022-04-13  966  }
61a039d1757b14 Stanley Yang 2022-04-13  967  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to