Hello Xiangliang Yu, The patch bc992ba5a3c1: "drm/amdgpu/virt: use kiq to access registers (v2)" from Jan 12, 2017, leads to the following static checker warning: drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c:122 amdgpu_virt_kiq_rreg() error: uninitialized symbol 'f'. drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c 104 uint32_t amdgpu_virt_kiq_rreg(struct amdgpu_device *adev, uint32_t reg) 105 { 106 signed long r; 107 uint32_t val; 108 struct dma_fence *f; 109 struct amdgpu_kiq *kiq = &adev->gfx.kiq; 110 struct amdgpu_ring *ring = &kiq->ring; 111 112 BUG_ON(!ring->funcs->emit_rreg); 113 114 mutex_lock(&adev->virt.lock); 115 amdgpu_ring_alloc(ring, 32); 116 amdgpu_ring_emit_hdp_flush(ring); 117 amdgpu_ring_emit_rreg(ring, reg); 118 amdgpu_ring_emit_hdp_invalidate(ring); 119 amdgpu_fence_emit(ring, &f); What about if amdgpu_fence_emit() returns -ENOMEM? 120 amdgpu_ring_commit(ring); 121 mutex_unlock(&adev->virt.lock); 122 123 r = dma_fence_wait(f, false); 124 if (r) 125 DRM_ERROR("wait for kiq fence error: %ld.\n", r); 126 dma_fence_put(f); 127 128 val = adev->wb.wb[adev->virt.reg_val_offs]; 129 130 return val; 131 } regards, dan carpenter