linux_dsm_epyc7002/drivers/gpu/drm/amd/amdkfd
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
..
cik_event_interrupt.c drm/amdkfd: Add bad opcode exception handling 2015-05-19 13:02:28 +03:00
cik_int.h drm/amdkfd: Add bad opcode exception handling 2015-05-19 13:02:28 +03:00
cik_regs.h drm/amdkfd: Use generic defines in new amd headers 2015-07-20 09:16:49 +03:00
Kconfig drm/amdkfd: Add dependency of DRM_AMDGPU to Kconfig 2015-07-20 09:16:48 +03:00
kfd_chardev.c amdkfd: Copy from the proper user command pointer 2016-01-15 15:14:17 -05:00
kfd_crat.h amdkfd: Add topology module to amdkfd 2014-07-16 21:22:32 +03:00
kfd_dbgdev.c drm/amdkfd: avoid CONFIG_ prefix for non-Kconfig symbols 2015-06-06 20:48:34 +03:00
kfd_dbgdev.h drm/amdkfd: avoid CONFIG_ prefix for non-Kconfig symbols 2015-06-06 20:48:34 +03:00
kfd_dbgmgr.c drm/amdkfd: Add address watch operation to debugger 2015-06-03 11:33:06 +03:00
kfd_dbgmgr.h drm/amdkfd: Add address watch operation to debugger 2015-06-03 11:33:06 +03:00
kfd_device_queue_manager_cik.c drm/amdkfd: fix bug when initializing sdma vm 2015-07-30 09:26:15 +03:00
kfd_device_queue_manager_vi.c drm/amdkfd: fix bug when initializing sdma vm 2015-07-30 09:26:15 +03:00
kfd_device_queue_manager.c drm/amdkfd: make reset wavefronts per process per device 2015-06-06 22:26:39 +03:00
kfd_device_queue_manager.h drm/amdkfd: Add static user-mode queues support 2015-06-03 11:32:28 +03:00
kfd_device.c drm/amdkfd: add supported CZ devices PCI IDs to amdkfd 2015-07-20 09:16:48 +03:00
kfd_doorbell.c drm/amdkfd: reformat some debug prints 2015-05-19 12:13:38 +03:00
kfd_events.c drm/amdkfd: add debug print to kfd_events.c 2015-06-06 21:09:51 +03:00
kfd_events.h drm/amdkfd: Add bad opcode exception handling 2015-05-19 13:02:28 +03:00
kfd_flat_memory.c amdkfd: use <linux/mman.h> instead of <uapi/asm-generic/mman-common.h> 2015-08-30 12:36:58 +03:00
kfd_interrupt.c drm/amdkfd: Add the events module 2015-05-19 13:02:26 +03:00
kfd_kernel_queue_cik.c drm/amdkfd: Add initial VI support for KQ 2014-12-02 16:38:57 +02:00
kfd_kernel_queue_vi.c drm/amdkfd: Add initial VI support for KQ 2014-12-02 16:38:57 +02:00
kfd_kernel_queue.c drm/amdkfd: reformat some debug prints 2015-05-19 12:13:38 +03:00
kfd_kernel_queue.h drm/amdkfd: Remove sync_with_hw() from amdkfd 2015-01-15 12:07:48 +02:00
kfd_module.c drm/amdkfd: Track when module's init is complete 2016-02-27 22:52:40 +02:00
kfd_mqd_manager_cik.c drm/amdkfd: Use generic defines in new amd headers 2015-07-20 09:16:49 +03:00
kfd_mqd_manager_vi.c drm/amdkfd: add support for VI in MQD manager 2015-07-20 09:16:48 +03:00
kfd_mqd_manager.c drm/amdkfd: Change MQD manager to be H/W specific 2015-01-04 11:24:25 +02:00
kfd_mqd_manager.h amdkfd: Add mqd_manager module 2014-07-17 00:36:17 +03:00
kfd_packet_manager.c drm/amdkfd: Implement create_map_queues() for Carrizo 2015-07-20 09:16:49 +03:00
kfd_pasid.c drm/amdkfd: Allow user to limit only queues per device 2015-01-18 13:18:01 +02:00
kfd_pm4_headers_diq.h drm/amdkfd: Add skeleton H/W debugger module support 2015-06-03 11:32:28 +03:00
kfd_pm4_headers_vi.h drm/amdkfd: add CP HWS packet headers for VI 2015-07-20 09:16:48 +03:00
kfd_pm4_headers.h drm/amdkfd: Add static user-mode queues support 2015-06-03 11:32:28 +03:00
kfd_pm4_opcodes.h amdkfd: Add kernel queue module 2014-07-17 00:45:35 +03:00
kfd_priv.h drm/amdkfd: make reset wavefronts per process per device 2015-06-06 22:26:39 +03:00
kfd_process_queue_manager.c drm/amdkfd: Add skeleton H/W debugger module support 2015-06-03 11:32:28 +03:00
kfd_process.c drm/amdkfd: Remove unnecessary cast in kfree 2016-01-28 14:40:11 +02:00
kfd_queue.c amdkfd: Add queue module 2014-07-17 00:18:51 +03:00
kfd_topology.c drm/amdkfd: Set correct doorbell packet type for Carrizo 2015-07-20 09:16:49 +03:00
kfd_topology.h drm/amdkfd: Set correct doorbell packet type for Carrizo 2015-07-20 09:16:49 +03:00
Makefile drm/amdkfd: add support for VI in MQD manager 2015-07-20 09:16:48 +03:00