• Oded Gabbay's avatar
    drm/amdgpu: Return -EPROBE_DEFER when amdkfd not loaded · efb1c658
    Oded Gabbay authored
    amdgpu must load only after amdkfd's loading has been completed. If that
    is not enforced, then amdgpu's call into amdkfd's functions will cause a
    kernel BUG.
    
    When amdgpu and amdkfd are built as kernel modules, that rule is enforced
    by the kernel's modules loading mechanism. When amdgpu and amdkfd are
    built inside the kernel image, that rule is enforced by ordering in the
    drm Makefile (amdkfd before amdgpu).
    
    Instead of using drm Makefile ordering, we can now use deferred loading
    as amdkfd now returns -EPROBE_DEFER in kgd2kfd_init() when it is not yet
    loaded.
    
    This patch defers amdgpu loading by propagating -EPROBE_DEFER to the
    kernel's drivers loading infrastructure. That will put amdgpu into the
    pending drivers list (see description in dd.c). Once amdkfd is loaded,
    a call to kgd2kfd_init() will return successfully and amdgpu will be able
    to load.
    Signed-off-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
    Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    efb1c658
amdgpu_amdkfd.c 5.94 KB