On Tue, Sep 15, 2026 at 2:21 PM Mario Limonciello
<[email protected]> wrote:
>
> amdgpu_amdkfd_clear_kfd_mapping() assumes that a non-NULL kfd_dev
> has a fully populated node array. This is not true when KFD device
> initialization fails after probe.
>
> For example, kgd2kfd_device_init() sets num_nodes before checking
> PCIe atomics support. On a host system without the required atomics,
> it returns before allocating nodes[0], but the kfd_dev remains attached
> to the amdgpu device. A later GPU reset then dereferences nodes[0]->id.
>
> Require the authoritative KFD initialization flag before walking the
> node array, matching the existing KFD reset and teardown paths.
>
> Fixes: 353f7430d1ec ("drm/amdgpu: unmap all user mappings of framebuffer and 
> doorbell before mode1 reset")
> Closes: https://gitlab.freedesktop.org/drm/amd/-/work_items/5833
> Cc: [email protected]
> Signed-off-by: Mario Limonciello <[email protected]>

Reviewed-by: Alex Deucher <[email protected]>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> index 09feb45584bab..17365cd0a997f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> @@ -330,7 +330,7 @@ void amdgpu_amdkfd_clear_kfd_mapping(struct amdgpu_device 
> *adev)
>         struct kfd_dev *kfd = adev->kfd.dev;
>         unsigned int i;
>
> -       if (!kfd)
> +       if (!kfd || !kfd->init_complete)
>                 return;
>
>         for (i = 0; i < kfd->num_nodes; i++) {
> --
> 2.43.0
>

Reply via email to