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 >
