• Oded Gabbay's avatar
    drm/radeon: Return -EPROBE_DEFER when amdkfd not loaded · 412c8f7d
    Oded Gabbay authored
    radeon must load only after amdkfd's loading has been completed. If that
    is not enforced, then radeon's call into amdkfd's functions will cause a
    kernel BUG.
    
    When radeon and amdkfd are built as kernel modules, that rule is
    enforced by the kernel's modules loading mechanism. When radeon and
    amdkfd are built inside the kernel image, that rule is enforced by
    ordering in the drm Makefile (amdkfd before radeon).
    
    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 radeon loading by propagating -EPROBE_DEFER to the
    kernel's drivers loading infrastructure. That will put radeon into the
    pending drivers list (see description in dd.c). Once amdkfd is loaded,
    a call to kgd2kfd_init() will return successfully and radeon will be
    able to load.
    Signed-off-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
    Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    412c8f7d
radeon_kfd.c 22.5 KB