linux-stable/drivers/gpu/drm/amd/amdgpu
Oded Gabbay c68f4528a2 drm/amdkfd: Track when module's init is complete
Current dependencies between amdkfd and radeon/amdgpu force the loading
of amdkfd _before_ radeon and/or amdgpu are loaded. When all these kernel
drivers are built as modules, this ordering is enforced by the kernel
built-in mechanism of loading dependent modules.

However, there is no such mechanism in case where all these drivers are
compiled inside the kernel image (not as modules). The current way to
enforce loading of amdkfd before radeon/amdgpu, is to put amdkfd before
radeon/amdgpu in the drm Makefile, but that method is way too fragile.

In addition, there is no kernel mechanism to check whether a kernel
driver that is built inside the kernel image, has already been loaded.

To solve this, this patch adds to kfd_module.c a new static variable,
amdkfd_init_completed, that is set to 1 only when amdkfd's
module initialization function has been completed (successfully).

kgd2kfd_init(), which is the initialization function of the
kgd-->kfd interface, and which is the first function in amdkfd called by
radeon/amdgpu, will return successfully only if amdkfd_init_completed is
equal 1.

If amdkfd_init_completed is not equal to 1, kgd2kfd_init() will
return -EPROBE_DEFER to signal radeon/amdgpu they need to defer
their loading until amdkfd is loaded.

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.h drm/amdgpu: cleanup gem init/finit 2016-02-16 17:46:24 -05: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.c drm/amdkfd: Track when module's init is complete 2016-02-27 22:52:40 +02:00
amdgpu_amdkfd.h drm/amdgpu: Add amdgpu <--> amdkfd gfx8 interface 2015-07-20 09:16:48 +03: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_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: drop hard_reset module parameter 2016-02-10 14:16:55 -05: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.h drm/amdgpu: move ring from IBs into job 2016-02-10 14:17:20 -05:00
amdgpu_trace_points.c drm/amdgpu: add core driver (v4) 2015-06-03 21:03:15 -04: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
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.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
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
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.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
vi_dpm.h drm/amdgpu: Add Fiji support to SMC and DPM (v2) 2015-08-17 16:50:26 -04:00
vid.h drm/amdgpu: Add amdgpu <--> amdkfd gfx8 interface 2015-07-20 09:16:48 +03:00