]> git.baikalelectronics.ru Git - kernel.git/commit
drm/radeon: Return -EPROBE_DEFER when amdkfd not loaded
authorOded Gabbay <oded.gabbay@gmail.com>
Tue, 9 Feb 2016 11:30:04 +0000 (13:30 +0200)
committerOded Gabbay <oded.gabbay@gmail.com>
Sat, 27 Feb 2016 20:52:40 +0000 (22:52 +0200)
commita24c589970c93cd5432788f0dce28471098708e6
treed13173e76676decc7864832895b4592b0bb8b8b2
parent53dad5532208cd5832f2c787cfa365aa0cfec44b
drm/radeon: Return -EPROBE_DEFER when amdkfd not loaded

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: Oded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/radeon_drv.c
drivers/gpu/drm/radeon/radeon_kfd.c
drivers/gpu/drm/radeon/radeon_kfd.h