On 6/16/26 14:50, Pierre-Eric Pelloux-Prayer wrote:
> When amdgpu_init_minimal_xgmi is used, SDMA engines init
> is delayed so amdgpu_ttm_enable_buffer_funcs must be
> called later.
> 
> Without this, the check for num_buffer_funcs_scheds will
> fail and using ttm buffer funcs later will fail.
> 
> Fixes: 3a5da695c8d1 ("drm/amdgpu: only use working sdma schedulers for ttm")
> Signed-off-by: Pierre-Eric Pelloux-Prayer <[email protected]>

Acked-by: Christian König <[email protected]> but Alex should probably 
take a look as well.

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 ++-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c   | 2 ++
>  2 files changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 57e10afb4714..2e8954fa5c40 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -2479,7 +2479,8 @@ static int amdgpu_device_ip_init(struct amdgpu_device 
> *adev)
>       if (r)
>               goto init_failed;
>  
> -     amdgpu_ttm_enable_buffer_funcs(adev);
> +     if (amdgpu_ip_member_of_hwini(adev, AMD_IP_BLOCK_TYPE_SDMA))
> +             amdgpu_ttm_enable_buffer_funcs(adev);
>  
>       /* Don't init kfd if whole hive need to be reset during init */
>       if (adev->init_lvl->level != AMDGPU_INIT_LEVEL_MINIMAL_XGMI) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> index faac80a8a6eb..c0dca209335e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
> @@ -1663,6 +1663,8 @@ static void amdgpu_xgmi_reset_on_init_work(struct 
> work_struct *work)
>               if (r && r != -EHWPOISON)
>                       dev_err(tmp_adev->dev,
>                               "error during bad page data initialization");
> +
> +             amdgpu_ttm_enable_buffer_funcs(tmp_adev);
>       }
>  }
>  

Reply via email to