alistair23-linux/drivers/gpu/drm
Matthew Dawson 04db4caf5c drm/radeon: Avoid double gpu reset by adding a timeout on IB ring tests.
When the radeon driver resets a gpu, it attempts to test whether all the
rings can successfully handle an IB.  If these rings fail to respond, the
process will wait forever.  Another gpu reset can't happen at this point,
as the current reset holds a lock required to do so.  Instead, make all
the IB tests run with a timeout, so the system can attempt to recover
in this case.

While this doesn't fix the underlying issue with card resets failing, it
gives the system a higher chance of recovering.  These timeouts have been
confirmed to help both a Tathi and Hawaii card recover after a gpu reset.

This also adds a new function, radeon_fence_wait_timeout, that behaves like
fence_wait_timeout.  It is used instead of fence_wait_timeout as it continues
to work during a reset.  radeon_fence_wait is changed to be implemented
using this function.

V2:
 - Changed the timeout to 1s, as the default 10s from radeon_wait_timeout was
too long.  A timeout of 100ms was tested and found to be too short.
 - Changed radeon_fence_wait_timeout to behave more like fence_wait_timeout.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Matthew Dawson <matthew@mjdsystems.ca>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2016-02-10 14:17:15 -05:00
..
amd drm/amdgpu/gfx: minor code cleanup 2016-02-10 14:17:15 -05:00
armada drm/armada: Remove NULL open/pre/postclose hooks 2016-01-25 19:35:05 +01:00
ast drm: Pass 'name' to drm_encoder_init() 2015-12-11 09:13:20 +01:00
atmel-hlcdc drm/atmel: Nuke preclose 2016-02-08 09:55:48 +01:00
bochs drm/bochs: Constify function pointer structs 2015-12-15 13:42:36 +01:00
bridge Merge tag 'topic/drm-misc-2016-01-17' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-01-18 07:01:16 +10:00
cirrus drm/cirrus: Constify function pointer structs 2015-12-15 13:43:59 +01:00
etnaviv drm/etnaviv: call correct function when trying to vmap a DMABUF 2016-01-26 18:54:01 +01:00
exynos 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
fsl-dcu drm/fsl: Remove preclose hook 2016-01-25 19:35:04 +01:00
gma500 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
i2c drm: adv7511: it's HPD, not HDP 2016-02-02 15:37:55 +01:00
i810
i915 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
imx 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
mga
mgag200 asm-generic changes for 4.5 2016-01-20 17:30:20 -08:00
msm 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
nouveau asm-generic changes for 4.5 2016-01-20 17:30:20 -08:00
omapdrm 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
panel drm/panel: simple: Add QiaoDian qd43003c0-40 2015-12-16 18:15:26 +01:00
qxl drm/qxl: use to_qxl_bo macro 2015-12-15 13:39:40 +01:00
r128
radeon drm/radeon: Avoid double gpu reset by adding a timeout on IB ring tests. 2016-02-10 14:17:15 -05:00
rcar-du 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
rockchip drm/rockchip: respect CONFIG_DRM_FBDEV_EMULATION 2016-01-22 08:45:31 +08: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 include/uapi/drm/sis_drm.h: move sis_file_private to drivers/gpu/drm/sis/sis_drv.h 2015-10-16 11:27:46 +10:00
sti dma-mapping: always provide the dma_map_ops based implementation 2016-01-20 17:09:18 -08:00
tdfx
tegra drm/tegra: drop unused variable. 2016-02-09 11:17:37 +10:00
tilcdc 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
ttm Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2016-01-17 13:40:25 -08:00
udl drm/udl: Constify function pointer structs 2015-12-15 13:48:54 +01:00
vc4 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
vgem drm/vgem: Drop vgem_drm_gem_mmap 2015-10-19 11:00:44 +02:00
via via_drm.h: move struct via_file_private definition to drivers/gpu/drm/via/via_drv.h 2015-10-16 11:27:49 +10:00
virtio virtio: barrier rework+fixes 2016-01-18 16:44:24 -08: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.c drm: Add functions to setup/tear down drm_events. 2016-01-25 08:40:09 +01:00
drm_atomic_helper.c 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
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.c drm: Add functions to setup/tear down drm_events. 2016-01-25 08:40:09 +01:00
drm_crtc_helper.c drm/crtc-helper: Add caveat to disable_unused_functions doc 2016-01-25 19:35:06 +01:00
drm_crtc_internal.h
drm_debugfs.c
drm_dma.c
drm_dp_helper.c
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.c drm/edid: index CEA/HDMI mode tables using the VIC 2016-01-08 15:30:28 +01:00
drm_edid_load.c
drm_encoder_slave.c drm: Constify drm_encoder_slave_funcs 2015-12-15 13:41:17 +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/fbdev-helper: Explain how to debug console_lock fun 2016-01-25 08:32:22 +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.c drm: Remove opencoded drm_gem_object_release_handle() 2016-01-05 16:23:09 +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_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: Enforce unlocked ioctl operation for kms driver ioctls 2015-10-16 15:50:54 +02:00
drm_irq.c drm/vblank: Use drm_event_reserve_init 2016-02-08 09:54:54 +01:00
drm_legacy.h
drm_lock.c signals: kill block_all_signals() and unblock_all_signals() 2015-11-06 17:50:42 -08:00
drm_memory.c
drm_mipi_dsi.c drm/dsi: Add Turn On/Shutdown Peripheral command helpers 2015-11-24 10:25:14 +01:00
drm_mm.c
drm_modes.c drm/doc: Convert to markdown 2015-12-15 10:22:26 +01:00
drm_modeset_lock.c drm/doc: Convert to markdown 2015-12-15 10:22:26 +01:00
drm_of.c drm: Introduce generic probe function for component based masters. 2015-10-20 12:01:29 +02:00
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/doc: Convert to markdown 2015-12-15 10:22:26 +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: Add "prefix" parameter to drm_rect_debug_print() 2015-11-24 11:47:46 +01:00
drm_scatter.c
drm_sysfs.c drm/sysfs: use kobj_to_dev() 2016-01-13 16:43:07 +01:00
drm_trace.h
drm_trace_points.c
drm_vm.c
drm_vma_manager.c drm/gem: Use kref_get_unless_zero for the weak mmap references 2015-10-19 11:00:44 +02:00
Kconfig drm/amd: add ACP driver support 2016-02-10 14:17:08 -05:00
Makefile Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2016-01-20 09:45:43 -08:00