On 7/10/26 00:33, Alex Hung wrote:
> Building for ARCH=um with W=1 C=1 makes sparse report "incompatible
> types in comparison expression (different address spaces)" warnings in
> the KFD code, exposed after UML builds were enabled:
> 
> - amdgpu_amdkfd_fence.c compares the __rcu-annotated dma_fence.ops
>   pointer directly in to_amdgpu_amdkfd_fence().
> - amdgpu_amdkfd_gpuvm.c compares the __rcu eviction fence pointer
>   directly in amdgpu_amdkfd_gpuvm_restore_process_bos().
> 
> Fixes: af3f2f5db265 ("drm/amdgpu: Remove UML build exclusion from Kconfig")
> Reported-by: kernel test robot <[email protected]>
> Closes: 
> https://lore.kernel.org/oe-kbuild-all/[email protected]/
> Cc: Harry Wentland <[email protected]>
> Assisted-by: Copilot:Claude-Opus-4.8
> Signed-off-by: Alex Hung <[email protected]>

Reviewed-by: Christian König <[email protected]>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c | 2 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
> index 6a364357522b..b0299d861903 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.c
> @@ -92,7 +92,7 @@ struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct 
> dma_fence *f)
>               return NULL;
> 
>       fence = container_of(f, struct amdgpu_amdkfd_fence, base);
> -     if (f->ops == &amdkfd_fence_ops)
> +     if (rcu_access_pointer(f->ops) == &amdkfd_fence_ops)
>               return fence;
> 
>       return NULL;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> index 35fe2c974699..f0f516a79424 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> @@ -3096,7 +3096,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, 
> struct dma_fence __rcu *
>               process_info->eviction_fence = new_fence;
>               replace_eviction_fence(ef, dma_fence_get(&new_fence->base));
>       } else {
> -             WARN_ONCE(*ef != &process_info->eviction_fence->base,
> +             WARN_ONCE(rcu_access_pointer(*ef) != 
> &process_info->eviction_fence->base,
>                         "KFD eviction fence doesn't match KGD process_info");
>       }
> 
> --
> 2.43.0
> 

Reply via email to