linux/drivers/gpu/drm
Oded Gabbay 412c8f7de0 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>
2016-02-27 22:52:40 +02:00
..
amd drm/amdkfd: Track when module's init is complete 2016-02-27 22:52:40 +02:00
arm drm: Add support for ARM's HDLCD controller. 2016-02-10 13:44:16 +00:00
armada drm/armada: Remove NULL open/pre/postclose hooks 2016-01-25 19:35:05 +01:00
ast drm/ast: removed optional dummy encoder mode_fixup function. 2016-02-16 15:32:15 +01:00
atmel-hlcdc drm/atmel: Nuke preclose 2016-02-08 09:55:48 +01:00
bochs drm/bochs: removed optional dummy encoder mode_fixup function. 2016-02-16 15:32:19 +01:00
bridge drm/bridge: removed dummy mode_fixup function from dw-hdmi. 2016-02-11 09:24:01 +01:00
cirrus drm/cirrus: removed optional dummy encoder mode_fixup function. 2016-02-16 15:32:24 +01:00
etnaviv drm/etnaviv: call correct function when trying to vmap a DMABUF 2016-01-26 18:54:01 +01:00
exynos drm/exynos: removed optional dummy encoder mode_fixup function. 2016-02-16 15:30:36 +01:00
fsl-dcu drm/fsl-dcu: fix register initialization 2016-02-25 16:13:16 -08:00
gma500 drm/gma500: removed optional dummy encoder mode_fixup function. 2016-02-16 15:32:43 +01:00
i2c drm/i2c/tda998x: removed unnecessary code, mode_fixup is now optional. 2016-02-11 09:24:01 +01:00
i810
i915 drm/i915: Set aux.dev to the drm_connector device, instead of drm_device. 2016-02-14 19:21:01 +01:00
imx drm/imx: removed optional dummy encoder mode_fixup function. 2016-02-16 15:33:05 +01:00
mga
mgag200 drm/mgag200: removed optional dummy encoder mode_fixup function. 2016-02-16 15:33:26 +01:00
msm Merge tag 'topic/drm-misc-2016-02-18' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-02-19 10:57:44 +10:00
nouveau drm/nouveau: Defer probe if gmux is present but its driver isn't 2016-02-09 11:21:12 +01:00
omapdrm dma-buf: Remove range-based flush 2016-02-09 09:25:22 +01:00
panel drm/fsl-dcu: use mode flags for hsync/vsync polarity 2016-02-25 16:13:16 -08:00
qxl drm/qxl: removed optional dummy encoder mode_fixup function. 2016-02-16 15:34:00 +01:00
r128
radeon drm/radeon: Return -EPROBE_DEFER when amdkfd not loaded 2016-02-27 22:52:40 +02:00
rcar-du drm: rcar-du: Add tri-planar memory formats support 2016-02-23 09:34:33 +02:00
rockchip Merge branch 'drm-rockchip-next-2016-02-18' of https://github.com/markyzq/kernel-drm-rockchip into drm-next 2016-02-19 13:10:18 +10:00
savage
shmobile Merge tag 'topic/drm-misc-2016-02-08' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-02-09 10:39:11 +10:00
sis
sti drm/sti: removed optional dummy encoder mode_fixup function. 2016-02-16 15:34:24 +01:00
tdfx
tegra drm/tegra: drop unused variable. 2016-02-09 11:17:37 +10:00
tilcdc drm/tilcdc: removed optional dummy encoder mode_fixup function. 2016-02-16 15:34:40 +01:00
ttm Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2016-01-17 13:40:25 -08:00
udl drm/udl: Use module_usb_driver 2016-02-17 14:19:30 +01:00
vc4 drm/vc4: Add support for YUV planes. 2016-02-16 11:24:08 -08:00
vgem
via
virtio Merge tag 'topic/drm-misc-2016-02-18' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-02-19 10:57:44 +10:00
vmwgfx Merge tag 'topic/drm-misc-2016-02-08' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-02-09 10:39:11 +10:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c drm/atomic: Add encoder_mask to crtc_state, v3. 2016-02-09 11:21:06 +01:00
drm_atomic.c drm: Add functions to setup/tear down drm_events. 2016-01-25 08:40:09 +01:00
drm_auth.c
drm_bridge.c drm/bridge: Improve kerneldoc 2015-12-08 16:07:53 +01:00
drm_bufs.c
drm_cache.c
drm_context.c
drm_crtc_helper.c drm: fixes crct set_mode when crtc mode_fixup is null. 2016-02-16 15:36:49 +01:00
drm_crtc_internal.h
drm_crtc.c drm: Add drm_format_plane_width() and drm_format_plane_height() 2016-02-09 16:34:58 +01:00
drm_debugfs.c
drm_dma.c
drm_dp_aux_dev.c drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. 2016-02-12 14:22:40 +01:00
drm_dp_helper.c drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. 2016-02-12 14:22:40 +01:00
drm_dp_mst_topology.c drm/dp/mst: deallocate payload on port destruction 2016-02-05 15:23:49 +10:00
drm_drv.c drm: move MODULE_PARM_DESC to other file 2016-01-08 15:32:29 +01:00
drm_edid_load.c
drm_edid.c drm/edid: Switch DDC when reading the EDID 2016-02-09 11:21:09 +01:00
drm_encoder_slave.c drm: fixes when i2c encoder slave mode_fixup is null. 2016-02-10 15:14:49 +01:00
drm_fb_cma_helper.c drm/fb_cma_helper: remove duplicate const from drm_fb_cma_alloc 2016-01-20 13:55:57 +01:00
drm_fb_helper.c drm/fb_helper: Use add_one_connector in add_all_connectors. 2016-02-15 14:56:46 +01:00
drm_flip_work.c
drm_fops.c drm: Nuke vblank event file cleanup code 2016-02-08 09:55:47 +01:00
drm_gem_cma_helper.c drm: Use the driver's gem_object_free function from CMA helpers. 2015-12-15 10:23:44 +01:00
drm_gem.c drm: Remove opencoded drm_gem_object_release_handle() 2016-01-05 16:23:09 +01:00
drm_global.c
drm_hashtab.c tree wide: use kvfree() than conditional kfree()/vfree() 2016-01-22 17:02:18 -08:00
drm_info.c
drm_internal.h
drm_ioc32.c
drm_ioctl.c
drm_irq.c drm/vblank: Use drm_event_reserve_init 2016-02-08 09:54:54 +01:00
drm_kms_helper_common.c drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. 2016-02-12 14:22:40 +01:00
drm_legacy.h
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c
drm_modes.c drm: modes: add missing [drm] to message printing 2016-02-09 16:34:44 +01:00
drm_modeset_lock.c drm/doc: Convert to markdown 2015-12-15 10:22:26 +01:00
drm_of.c
drm_panel.c
drm_pci.c drm: add drm_pcie_get_max_link_width helper (v2) 2015-12-21 16:42:31 -05:00
drm_plane_helper.c drm: Pass 'name' to drm_universal_plane_init() 2015-12-11 09:13:10 +01:00
drm_platform.c
drm_prime.c drm: prime: Honour O_RDWR during prime-handle-to-fd 2016-02-09 09:25:12 +01:00
drm_probe_helper.c Merge branch 'for-linus' into for-next 2015-12-23 08:33:34 +01:00
drm_rect.c
drm_scatter.c
drm_sysfs.c drm/sysfs: use kobj_to_dev() 2016-01-13 16:43:07 +01:00
drm_trace_points.c
drm_trace.h
drm_vm.c
drm_vma_manager.c
Kconfig Merge branch 'drm-next-4.6' of git://people.freedesktop.org/~agd5f/linux into drm-next 2016-02-19 11:13:01 +10:00
Makefile Merge tag 'topic/drm-misc-2016-02-18' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-02-19 10:57:44 +10:00