[bug report] drm/amdkfd: mark GFX12 system and peer GPU memory mappings as MTYPE_NC

Dan Carpenter dan.carpenter at linaro.org
Sat May 4 19:35:13 UTC 2024


Hello Sreekant Somasekharan,

This is a semi-automatic email about new static checker warnings.

Commit 628e1ace2379 ("drm/amdkfd: mark GFX12 system and peer GPU
memory mappings as MTYPE_NC") from Mar 26, 2024, leads to the
following Smatch complaint:

    drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c:518 gmc_v12_0_get_vm_pte()
    warn: variable dereferenced before check 'bo' (see line 500)

drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
   499		struct amdgpu_bo *bo = mapping->bo_va->base.bo;
   500		struct amdgpu_device *bo_adev = amdgpu_ttm_adev(bo->tbo.bdev);
                                                                ^^^^
   501		bool coherent = bo->flags & AMDGPU_GEM_CREATE_COHERENT;
                                ^^^^^^^^^
   502		bool is_system = bo->tbo.resource->mem_type == TTM_PL_SYSTEM;
                                 ^^^^^^^
The patch adds unchecked dereferences.

   503	
   504	
   505		*flags &= ~AMDGPU_PTE_EXECUTABLE;
   506		*flags |= mapping->flags & AMDGPU_PTE_EXECUTABLE;
   507	
   508		*flags &= ~AMDGPU_PTE_MTYPE_GFX12_MASK;
   509		*flags |= (mapping->flags & AMDGPU_PTE_MTYPE_GFX12_MASK);
   510	
   511		if (mapping->flags & AMDGPU_PTE_PRT_GFX12) {
   512			*flags |= AMDGPU_PTE_PRT_GFX12;
   513			*flags |= AMDGPU_PTE_SNOOPED;
   514			*flags |= AMDGPU_PTE_SYSTEM;
   515			*flags &= ~AMDGPU_PTE_VALID;
   516		}
   517	
   518		if (bo && bo->flags & (AMDGPU_GEM_CREATE_COHERENT |
                    ^^
But previously we assumed bo could be NULL.

   519				       AMDGPU_GEM_CREATE_UNCACHED))
   520			*flags = (*flags & ~AMDGPU_PTE_MTYPE_GFX12_MASK) |

regards,
dan carpenter


More information about the amd-gfx mailing list