mirror_ubuntu-kernels/drivers/gpu/drm/amd/amdgpu
Oded Gabbay efb1c6582e drm/amdgpu: Return -EPROBE_DEFER when amdkfd not loaded
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: Oded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
2016-02-27 22:52:40 +02:00
..
amdgpu_acp.c drm/amd: add pm domain for ACP IP sub blocks 2016-02-10 14:17:09 -05:00
amdgpu_acp.h drm/amd: add pm domain for ACP IP sub blocks 2016-02-10 14:17:09 -05:00
amdgpu_acpi.c drm/amdgpu: mv amdgpu_acpi.h to amd/include/amd_acpi.h 2015-12-21 16:42:05 -05:00
amdgpu_afmt.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_amdkfd_gfx_v7.c drm/amdgpu: fix non-ANSI declaration of amdgpu_amdkfd_gfx_*_get_functions() 2016-01-28 14:39:34 +02:00
amdgpu_amdkfd_gfx_v8.c drm/amdgpu: fix non-ANSI declaration of amdgpu_amdkfd_gfx_*_get_functions() 2016-01-28 14:39:34 +02:00
amdgpu_amdkfd.c drm/amdgpu: Return -EPROBE_DEFER when amdkfd not loaded 2016-02-27 22:52:40 +02:00
amdgpu_amdkfd.h drm/amdgpu: Return -EPROBE_DEFER when amdkfd not loaded 2016-02-27 22:52:40 +02:00
amdgpu_atombios.c drm/amdgpu: add check for atombios GPU virtualization table 2016-02-10 14:17:10 -05:00
amdgpu_atombios.h drm/amdgpu: add check for atombios GPU virtualization table 2016-02-10 14:17:10 -05:00
amdgpu_atpx_handler.c vga_switcheroo: Add handler flags infrastructure 2016-02-09 11:21:07 +01:00
amdgpu_benchmark.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_bios.c drm/amdgpu: Use new read bios from rom callback 2015-12-02 12:45:59 -05:00
amdgpu_bo_list.c drm/amdgpu: check userptrs mm earlier 2016-02-10 14:17:16 -05:00
amdgpu_cgs.c drm/amdgpu/cgs: add an interface to access PCI resources 2016-01-11 09:52:43 -05:00
amdgpu_connectors.c drm/amdgpu: Don't link train DisplayPort on HPD until we get the dpcd 2015-08-21 18:07:38 -04:00
amdgpu_connectors.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_cs.c drm/amdgpu: move sync into job object 2016-02-10 14:17:24 -05:00
amdgpu_ctx.c drm/amdgpu: fix coding style in amdgpu_ctx.c 2016-02-12 15:42:54 -05:00
amdgpu_device.c drm/amdgpu: cleanup gem init/finit 2016-02-16 17:46:24 -05:00
amdgpu_display.c drm/amdgpu: remove page flip work queue v3 2016-02-16 17:25:38 -05:00
amdgpu_dpm.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_dpm.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_drv.c drm/amdgpu: Return -EPROBE_DEFER when amdkfd not loaded 2016-02-27 22:52:40 +02:00
amdgpu_drv.h drm/amdgpu: merge amdgpu_family.h into amd_shared.h (v2) 2015-08-17 16:50:21 -04:00
amdgpu_encoders.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_fb.c drm/amdgpu: don't init fbdev if we don't have any connectors 2016-01-26 00:35:56 -05:00
amdgpu_fence.c drm/amdgpu: remove fence reset detection leftovers 2016-02-16 17:22:16 -05:00
amdgpu_gart.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_gds.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_gem.c drm/amdgpu: cleanup gem init/finit 2016-02-16 17:46:24 -05:00
amdgpu_gfx.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_gfx.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_i2c.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_i2c.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_ib.c drm/amdgpu: move sync into job object 2016-02-10 14:17:24 -05:00
amdgpu_ih.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_ih.h drm/amdgpu: Implement irq interfaces for CGS 2015-08-17 16:50:09 -04:00
amdgpu_ioc32.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_irq.c drm/amdgpu: add missing irq.h include 2016-01-14 08:07:55 +10:00
amdgpu_irq.h drm/amdgpu: add irq domain support 2016-01-11 09:52:57 -05:00
amdgpu_job.c drm/amdgpu: nuke the kernel context 2016-02-12 15:41:58 -05:00
amdgpu_kms.c drm/amdgpu/gfx: clean up harvest configuration (v2) 2016-02-12 15:47:18 -05:00
amdgpu_mn.c drm/amdgpu: Don't call interval_tree_remove in amdgpu_mn_destroy 2016-02-17 16:10:56 -05:00
amdgpu_mode.h drm/amdgpu: remove page flip work queue v3 2016-02-16 17:25:38 -05:00
amdgpu_object.c drm/amdgpu: cleanup gem init/finit 2016-02-16 17:46:24 -05:00
amdgpu_object.h drm/amdgpu: cleanup gem init/finit 2016-02-16 17:46:24 -05:00
amdgpu_pll.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_pll.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_pm.c drm/amd/powerplay: add some sysfs interfaces for powerplay. 2016-02-10 14:16:59 -05:00
amdgpu_pm.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_powerplay.c drm/amdgpu: Allow the driver to load if amdgpu.powerplay=1 on asics without powerplay support 2016-01-19 12:42:30 -05:00
amdgpu_powerplay.h drm/amd/powerplay: add basic powerplay framework 2015-12-21 16:42:07 -05:00
amdgpu_prime.c drm/amdgpu: cleanup gem init/finit 2016-02-16 17:46:24 -05:00
amdgpu_ring.c drm/amdgpu: make pad_ib a ring function v3 2016-02-10 14:17:20 -05:00
amdgpu_sa.c drm/amdgpu: use WARN_ON_ONCE instead of BUG_ON in the SA 2016-02-10 14:17:03 -05:00
amdgpu_sync.c drm/amdgpu: remove adev and fence from amdgpu_sync_free 2016-02-10 14:17:17 -05:00
amdgpu_test.c drm/amdgpu: clean up hw semaphore support in driver 2016-02-10 14:16:49 -05:00
amdgpu_trace_points.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_trace.h drm/amdgpu: move ring from IBs into job 2016-02-10 14:17:20 -05:00
amdgpu_ttm.c drm/amdgpu: use separate scheduler entitiy for buffer moves 2016-02-12 15:39:07 -05:00
amdgpu_ucode.c drm/amdgpu: export reservation_object from dmabuf to ttm (v2) 2015-09-23 17:23:34 -04:00
amdgpu_ucode.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
amdgpu_uvd.c drm/amdgpu: use separate scheduler entity for UVD submissions 2016-02-12 15:40:02 -05:00
amdgpu_uvd.h drm/amdgpu: send UVD IB tests directly to the ring again 2016-02-10 14:17:23 -05:00
amdgpu_vce.c drm/amdgpu: use separate scheduler entity for VCE submissions 2016-02-12 15:41:01 -05:00
amdgpu_vce.h drm/amdgpu: send VCE IB tests directly to the ring again 2016-02-10 14:17:24 -05:00
amdgpu_vm.c drm/amdgpu: use SDMA round robin for VM updates v3 2016-02-12 15:38:16 -05:00
amdgpu.h drm/amdgpu: cleanup gem init/finit 2016-02-16 17:46:24 -05:00
atom.c drm/amdgpu/atom: add support for new div32 opcodes (v3) 2015-10-14 16:16:24 -04:00
atom.h drm/amdgpu/atom: add support for new div32 opcodes (v3) 2015-10-14 16:16:24 -04:00
atombios_crtc.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_crtc.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_dp.c drm/amdgpu: fix dp link rate selection (v2) 2015-12-21 16:38:51 -05:00
atombios_dp.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_encoders.c drm/amdgpu: Restore LCD backlight level on resume 2015-09-29 15:08:53 -04:00
atombios_encoders.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_i2c.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
atombios_i2c.h drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
ci_dpm.c drm/amdgpu: Show gpu load when display gpu performance for Ci. 2016-01-08 15:39:24 -05:00
ci_dpm.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
ci_smc.c drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
cik_dpm.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cik_ih.c drm/amdgpu: add irq domain support 2016-01-11 09:52:57 -05:00
cik_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cik_sdma.c drm/amdgpu/cik: move sdma tiling config setup into sdma code 2016-02-12 15:52:43 -05:00
cik_sdma.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cik.c drm/amdgpu: clean up asic level reset for CI 2016-02-10 14:16:53 -05:00
cik.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cikd.h drm/amdgpu: add count field for the SDMA NOP packet v2 2015-09-02 12:21:35 -04:00
clearstate_ci.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
clearstate_defs.h
clearstate_vi.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
cz_dpm.c drm/amdgpu/cz: force vce clocks when sclks are forced 2016-01-13 12:13:33 -05:00
cz_dpm.h drm/amdgpu/cz: add code to enable forcing VCE clocks 2016-01-13 12:12:43 -05:00
cz_ih.c drm/amdgpu: add irq domain support 2016-01-11 09:52:57 -05:00
cz_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
cz_smc.c drm/amdgpu: Update SMC/DPM for Stoney 2015-10-21 12:19:46 -04:00
cz_smumgr.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
dce_v8_0.c Merge branch 'drm-next-4.6' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-02-19 11:13:01 +10:00
dce_v8_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
dce_v10_0.c Merge branch 'drm-next-4.6' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-02-19 11:13:01 +10:00
dce_v10_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
dce_v11_0.c Merge branch 'drm-next-4.6' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-02-19 11:13:01 +10:00
dce_v11_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
fiji_dpm.c drm/amdgpu: rename fiji_smumgr.h to fiji_smum.h 2015-12-21 16:42:44 -05:00
fiji_smc.c drm/amdgpu/smu: skip SMC ucode loading on SR-IOV capable boards (v2) 2016-02-10 14:17:13 -05:00
fiji_smum.h drm/amdgpu: rename fiji_smumgr.h to fiji_smum.h 2015-12-21 16:42:44 -05:00
gfx_v7_0.c drm/amdgpu/cik: move uvd tiling config setup into uvd code 2016-02-12 15:52:53 -05:00
gfx_v7_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
gfx_v8_0.c drm/amdgpu/vi: move uvd tiling config setup into uvd code 2016-02-12 15:53:14 -05:00
gfx_v8_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
gmc_v7_0.c drm/amdgpu: cleanup gem init/finit 2016-02-16 17:46:24 -05:00
gmc_v7_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
gmc_v8_0.c drm/amdgpu: cleanup gem init/finit 2016-02-16 17:46:24 -05:00
gmc_v8_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
iceland_dpm.c drm/amdgpu/iceland: don't call smu_init on resume 2015-06-10 09:32:25 -04:00
iceland_ih.c drm/amdgpu: add irq domain support 2016-01-11 09:52:57 -05:00
iceland_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
iceland_sdma_pkt_open.h drm/amdgpu: add count field for the SDMA NOP packet v2 2015-09-02 12:21:35 -04:00
iceland_smc.c drm/amdgpu/smu: skip SMC ucode loading on SR-IOV capable boards (v2) 2016-02-10 14:17:13 -05:00
iceland_smumgr.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
Kconfig drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04:00
kv_dpm.c drm/amdgpu: add missing dpm check for KV dpm late init 2015-10-19 15:54:21 -04:00
kv_dpm.h drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
kv_smc.c drm/amdgpu: Add support for CIK parts 2015-06-03 21:03:17 -04:00
Makefile drm/amdgpu: rename amdgpu_sched.c to amdgpu_job.c 2016-02-10 14:17:23 -05:00
ObjectID.h
ppsmc.h drm/amdgpu: add ppsmc.h 2015-06-03 21:03:13 -04:00
sdma_v2_4.c drm/amdgpu/vi: move sdma tiling config setup into sdma code 2016-02-12 15:53:04 -05:00
sdma_v2_4.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
sdma_v3_0.c drm/amdgpu/vi: move sdma tiling config setup into sdma code 2016-02-12 15:53:04 -05:00
sdma_v3_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
smu_ucode_xfer_vi.h drm/amdgpu: Add initial VI support 2015-06-03 21:03:17 -04:00
tonga_dpm.c drm/amdgpu: fix tonga smu resume 2016-01-15 12:43:11 -05:00
tonga_ih.c drm/amdgpu: add irq domain support 2016-01-11 09:52:57 -05:00
tonga_ih.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
tonga_sdma_pkt_open.h drm/amdgpu: add count field for the SDMA NOP packet v2 2015-09-02 12:21:35 -04:00
tonga_smc.c drm/amdgpu/smu: skip SMC ucode loading on SR-IOV capable boards (v2) 2016-02-10 14:17:13 -05:00
tonga_smum.h drm/amdgpu: rename tonga_smumgr.h to tonga_smum.h 2015-12-21 16:42:43 -05:00
uvd_v4_2.c drm/amdgpu/cik: move uvd tiling config setup into uvd code 2016-02-12 15:52:53 -05:00
uvd_v4_2.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
uvd_v5_0.c drm/amdgpu/vi: move uvd tiling config setup into uvd code 2016-02-12 15:53:14 -05:00
uvd_v5_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
uvd_v6_0.c drm/amdgpu/vi: move uvd tiling config setup into uvd code 2016-02-12 15:53:14 -05:00
uvd_v6_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vce_v2_0.c drm/amdgpu: make pad_ib a ring function v3 2016-02-10 14:17:20 -05:00
vce_v2_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vce_v3_0.c drm/amdgpu: make pad_ib a ring function v3 2016-02-10 14:17:20 -05:00
vce_v3_0.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vi_dpm.h drm/amdgpu: Add Fiji support to SMC and DPM (v2) 2015-08-17 16:50:26 -04:00
vi.c drm/amd: add ACP driver support 2016-02-10 14:17:08 -05:00
vi.h drm/amdgpu: rename amdgpu_ip_funcs to amd_ip_funcs (v2) 2015-06-03 21:03:51 -04:00
vid.h drm/amdgpu: Add amdgpu <--> amdkfd gfx8 interface 2015-07-20 09:16:48 +03:00