Hello Le Ma, The patch 5fdbff096edb: "drm/amdgpu/mes: ring aggregatged doorbell when mes queue is unmapped" from Oct 30, 2020, leads to the following unpublished Smatch static checker warning: drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c:8552 gfx_v10_0_ring_set_wptr_gfx() warn: duplicate check '*is_queue_unmap' (previous on line 8546) drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c 8525 static void gfx_v10_0_ring_set_wptr_gfx(struct amdgpu_ring *ring) 8526 { 8527 struct amdgpu_device *adev = ring->adev; 8528 uint32_t *wptr_saved; 8529 uint32_t *is_queue_unmap; 8530 uint64_t aggregated_db_index; 8531 uint32_t mqd_size = adev->mqds[AMDGPU_HW_IP_GFX].mqd_size; 8532 uint64_t wptr_tmp; 8533 8534 if (ring->is_mes_queue) { 8535 wptr_saved = (uint32_t *)(ring->mqd_ptr + mqd_size); 8536 is_queue_unmap = (uint32_t *)(ring->mqd_ptr + mqd_size + 8537 sizeof(uint32_t)); 8538 aggregated_db_index = 8539 amdgpu_mes_get_aggregated_doorbell_index(adev, 8540 AMDGPU_MES_PRIORITY_LEVEL_NORMAL); 8541 8542 wptr_tmp = ring->wptr & ring->buf_mask; 8543 atomic64_set((atomic64_t *)ring->wptr_cpu_addr, wptr_tmp); 8544 *wptr_saved = wptr_tmp; 8545 /* assume doorbell always being used by mes mapped queue */ 8546 if (*is_queue_unmap) { ^^^^^^^^^^^^^^^ Checked 8547 WDOORBELL64(aggregated_db_index, wptr_tmp); 8548 WDOORBELL64(ring->doorbell_index, wptr_tmp); 8549 } else { 8550 WDOORBELL64(ring->doorbell_index, wptr_tmp); 8551 --> 8552 if (*is_queue_unmap) ^^^^^^^^^^^^^^^ It's possible this is changed inside a function, but it looks suspicious. 8553 WDOORBELL64(aggregated_db_index, wptr_tmp); 8554 } 8555 } else { 8556 if (ring->use_doorbell) { 8557 /* XXX check if swapping is necessary on BE */ 8558 atomic64_set((atomic64_t *)ring->wptr_cpu_addr, 8559 ring->wptr); 8560 WDOORBELL64(ring->doorbell_index, ring->wptr); 8561 } else { 8562 WREG32_SOC15(GC, 0, mmCP_RB0_WPTR, 8563 lower_32_bits(ring->wptr)); 8564 WREG32_SOC15(GC, 0, mmCP_RB0_WPTR_HI, 8565 upper_32_bits(ring->wptr)); 8566 } 8567 } 8568 } regards, dan carpenter