linux/drivers/gpu/drm/radeon
Jerome Glisse 225758d8ba drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4
This patch cleanup the fence code, it drops the timeout field of
fence as the time to complete each IB is unpredictable and shouldn't
be bound.

The fence cleanup lead to GPU lockup detection improvement, this
patch introduce a callback, allowing to do asic specific test for
lockup detection. In this patch the CP is use as a first indicator
of GPU lockup. If CP doesn't make progress during 1second we assume
we are facing a GPU lockup.

To avoid overhead of testing GPU lockup frequently due to fence
taking time to be signaled we query the lockup callback every
500msec. There is plenty code comment explaining the design & choise
inside the code.

This have been tested mostly on R3XX/R5XX hw, in normal running
destkop (compiz firefox, quake3 running) the lockup callback wasn't
call once (1 hour session). Also tested with forcing GPU lockup and
lockup was reported after the 1s CP activity timeout.

V2 switch to 500ms timeout so GPU lockup get call at least 2 times
   in less than 2sec.
V3 store last jiffies in fence struct so on ERESTART, EBUSY we keep
   track of how long we already wait for a given fence
V4 make sure we got up to date cp read pointer so we don't have
   false positive

Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-04-06 10:42:45 +10:00
..
reg_srcs drm/radeon/r6xx/r7xx: further safe reg clean up 2010-03-31 13:12:39 +10:00
.gitignore drm: create gitignore file for radeon 2009-09-25 13:08:21 +10:00
atom-bits.h drm/radeon: introduce kernel modesetting for radeon hardware 2009-06-15 12:01:53 +10:00
atom-names.h drm/radeon: introduce kernel modesetting for radeon hardware 2009-06-15 12:01:53 +10:00
atom-types.h drm/radeon: introduce kernel modesetting for radeon hardware 2009-06-15 12:01:53 +10:00
atom.c drm/radeon/kms/atom: make sure tables are valid (v2) 2010-03-31 13:11:29 +10:00
atom.h drm/radeon/kms/atom: make sure tables are valid (v2) 2010-03-31 13:11:29 +10:00
atombios.h No need to patch AMD-provided drivers/gpu/drm/radeon/atombios.h 2010-02-12 10:31:37 +01:00
atombios_crtc.c drm/radeon/kms: minor fixes for eDP with LCD* device tags (v2) 2010-03-31 13:13:16 +10:00
atombios_dp.c drm/radeon/kms/dp: disable training pattern on the sink at the end of link training 2010-03-31 13:14:08 +10:00
avivod.h [rfc] drm/radeon/kms: pm debugging check for vbl. 2010-02-23 09:46:21 +10:00
evergreen.c drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4 2010-04-06 10:42:45 +10:00
evergreen_reg.h drm/radeon/kms: add initial Evergreen support (Radeon HD 5xxx) 2010-02-09 09:44:02 +10:00
Kconfig drm/radeon/kms: change Kconfig text to reflect the new option. 2010-02-08 15:05:58 +10:00
Makefile drm/radeon: create radeon_asic.c 2010-03-15 11:27:03 +10:00
mkregtable.c drm/radeon: mkregtable.c: close a file before exit 2010-01-08 13:11:55 +10:00
ObjectID.h drm/radeon/kms: pull in the latest upstream ObjectID.h changes 2010-01-08 13:03:57 +10:00
r100.c drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4 2010-04-06 10:42:45 +10:00
r100_track.h drm/radeon/kms: allow rendering while no colorbuffer is set on r300 2009-12-23 11:14:04 +10:00
r100d.h drm/radeon/kms: Convert R100 to new init path (V2) 2009-10-02 08:51:49 +10:00
r200.c drm/radeon: include radeon_asic.h in the asic specific files 2010-03-15 11:27:22 +10:00
r300.c drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4 2010-04-06 10:42:45 +10:00
r300_cmdbuf.c drm/radeon: Fix printf type warning in 64bit system. 2010-03-01 22:21:37 +11:00
r300_reg.h drm/radeon/kms: add support for square microtiles on r3xx-r5xx 2010-02-25 11:36:12 +10:00
r300d.h drm/radeon/kms: Convert R300 to new init path 2009-10-02 08:51:48 +10:00
r420.c drm/radeon/kms: expose thermal/fan i2c buses 2010-03-31 09:38:06 +10:00
r420d.h drm/radeon/kms: Convert RS400/RS480 to new init path & fix legacy VGA (V3) 2009-10-02 08:51:46 +10:00
r500_reg.h drm/radeon/kms: add support for hw i2c on r1xx-r5xx 2010-02-09 09:31:10 +10:00
r520.c drm/radeon/kms: display watermark fixes 2010-03-31 13:02:06 +10:00
r520d.h drm/radeon/kms: Convert R520 to new init path and associated cleanup 2009-09-29 11:15:56 +10:00
r600.c drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4 2010-04-06 10:42:45 +10:00
r600_audio.c drm/radeon/kms: improve coding style a little 2010-03-15 10:05:55 +10:00
r600_blit.c drm/radeon: use ALIGN instead of open coding it 2010-03-01 15:56:41 +10:00
r600_blit_kms.c drm/radeon: use ALIGN instead of open coding it 2010-03-01 15:56:41 +10:00
r600_blit_shaders.c drm/radeon/r600: add missing license and comments to r600_blit_shaders.c 2010-03-15 10:07:38 +10:00
r600_blit_shaders.h drm/radeon/kms: add r600 KMS support 2009-09-08 11:15:52 +10:00
r600_cp.c drm/radeon/kms: gfx init fixes for r6xx/r7xx 2010-03-31 09:53:53 +10:00
r600_cs.c drm/radeon/r6xx/r7xx: CS parser fixes 2010-03-31 13:12:17 +10:00
r600_hdmi.c drm/radeon/kms: improve coding style a little 2010-03-15 10:05:55 +10:00
r600_reg.h drm/radeon/kms: clean HDMI definitions 2010-03-15 10:01:40 +10:00
r600d.h drm/radeon/r6xx/r7xx: CS parser fixes 2010-03-31 13:12:17 +10:00
radeon.h drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4 2010-04-06 10:42:45 +10:00
radeon_agp.c drm/radeon/kms: simplify memory controller setup V2 2010-02-18 14:49:35 +10:00
radeon_asic.c drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4 2010-04-06 10:42:45 +10:00
radeon_asic.h drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4 2010-04-06 10:42:45 +10:00
radeon_atombios.c drm/radeon/kms/atom: fix gpio i2c table overrun (v2) 2010-04-06 09:59:31 +10:00
radeon_atpx_handler.c vga_switcheroo: fix build on platforms with no ACPI 2010-03-01 22:21:58 +11:00
radeon_benchmark.c drm/radeon: Skip dma copy test in benchmark if card doesn't have dma engine. 2010-02-11 13:13:25 +10:00
radeon_bios.c Merge branch 'gpu-switcher' of /ssd/git//linux-2.6 into drm-next-stage 2010-03-01 16:22:38 +10:00
radeon_clocks.c drm/radeon/kms: add initial Evergreen support (Radeon HD 5xxx) 2010-02-09 09:44:02 +10:00
radeon_combios.c Merge branch 'v2.6.34-rc2' into drm-linus 2010-03-31 14:55:14 +10:00
radeon_connectors.c drm/radeon/kms: use new pre/post_xfer i2c bit algo hooks 2010-03-31 14:55:50 +10:00
radeon_cp.c drm/radeon: R300 AD only has one quad pipe. 2010-04-06 09:56:40 +10:00
radeon_cs.c drm/radeon/kms: Fix NULL pointer dereference if memory allocation failed. 2010-03-31 13:11:53 +10:00
radeon_cursor.c Merge remote branch 'korg/drm-radeon-testing' into drm-next-stage 2010-02-26 16:23:23 +10:00
radeon_device.c drm/radeon/kms: never treat rs4xx as AGP 2010-03-31 13:11:04 +10:00
radeon_display.c drm/radeon/kms: display watermark updates (v2) 2010-03-31 14:54:47 +10:00
radeon_drv.c drm/radeon/kms: add hw_i2c module option 2010-03-31 14:55:52 +10:00
radeon_drv.h drm/radeon: bump the UMS driver version for r6xx/r7xx const buffer support 2010-03-31 13:12:28 +10:00
radeon_encoders.c drm/radeon/kms/evergreen: get DP working 2010-04-01 12:50:07 +10:00
radeon_family.h drm/radeon/kms: add initial Evergreen support (Radeon HD 5xxx) 2010-02-09 09:44:02 +10:00
radeon_fb.c Merge branch 'gpu-switcher' of /ssd/git//linux-2.6 into drm-next-stage 2010-03-01 16:22:38 +10:00
radeon_fence.c drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4 2010-04-06 10:42:45 +10:00
radeon_fixed.h drm/radeon/kms/avivo: fix some bugs in the display bandwidth setup 2009-12-10 15:09:05 +10:00
radeon_gart.c drm/radeon/kms: set gart pages to invalid on unbind and point to dummy page 2010-02-11 19:11:32 +10:00
radeon_gem.c Use drm_gem_object_[handle_]unreference_unlocked where possible 2010-02-11 14:22:34 +10:00
radeon_i2c.c drm/radeon/kms: add hw_i2c module option 2010-03-31 14:55:52 +10:00
radeon_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
radeon_irq.c gpu/drm/radeon/radeon_irq.c: move a dereference below a NULL test 2010-01-07 13:56:32 +10:00
radeon_irq_kms.c drm/radeon/kms: disable MSI on IGP chips 2010-03-31 14:55:02 +10:00
radeon_kms.c Merge branch 'gpu-switcher' of /ssd/git//linux-2.6 into drm-next-stage 2010-03-01 16:22:38 +10:00
radeon_legacy_crtc.c drm/radeon/kms/rs4xx: make sure crtcs are enabled when setting timing 2010-03-15 09:59:24 +10:00
radeon_legacy_encoders.c drm/radeon/kms: add dynamic engine reclocking (V9) 2010-02-09 09:32:26 +10:00
radeon_legacy_tv.c drm/radeon/kms: fix pal tv-out support on legacy IGP chips 2010-03-15 09:57:42 +10:00
radeon_mem.c drm: Remove memory debugging infrastructure. 2009-06-18 13:00:33 -07:00
radeon_mode.h drm/radeon/kms: use new pre/post_xfer i2c bit algo hooks 2010-03-31 14:55:50 +10:00
radeon_object.c drm/radeon/kms: Only restrict BO to visible VRAM size when pinning to VRAM. 2010-03-31 13:12:59 +10:00
radeon_object.h drm/radeon/kms: fix bo's fence association 2010-02-18 15:07:04 +10:00
radeon_pm.c drm/radeon/kms/pm: fix segfault in clock code 2010-03-31 09:53:46 +10:00
radeon_reg.h drm/radeon/kms: enable ACPI powermanagement mode on radeon gpus. 2010-04-01 12:50:46 +10:00
radeon_ring.c Merge remote branch 'korg/drm-radeon-testing' into drm-next-stage 2010-02-26 16:23:23 +10:00
radeon_state.c Merge branch 'for-next' into for-linus 2010-03-08 16:55:37 +01:00
radeon_test.c drm/radeon/kms: simplify memory controller setup V2 2010-02-18 14:49:35 +10:00
radeon_ttm.c Merge remote branch 'korg/drm-radeon-testing' into drm-next-stage 2010-02-26 16:23:23 +10:00
rs100d.h drm/radeon/kms: Convert R100 to new init path (V2) 2009-10-02 08:51:49 +10:00
rs400.c drm/radeon/kms: rs400/480 should set common registers. 2010-04-01 12:50:28 +10:00
rs400d.h drm/radeon/kms: Convert RS400/RS480 to new init path & fix legacy VGA (V3) 2009-10-02 08:51:46 +10:00
rs600.c drm/radeon/kms: display watermark updates (v2) 2010-03-31 14:54:47 +10:00
rs600d.h drm/radeon/kms: display watermark updates (v2) 2010-03-31 14:54:47 +10:00
rs690.c drm/radeon/kms: display watermark updates (v2) 2010-03-31 14:54:47 +10:00
rs690d.h drm/radeon/kms: display watermark updates (v2) 2010-03-31 14:54:47 +10:00
rv200d.h drm/radeon/kms: Convert R100 to new init path (V2) 2009-10-02 08:51:49 +10:00
rv250d.h drm/radeon/kms: Convert R100 to new init path (V2) 2009-10-02 08:51:49 +10:00
rv350d.h drm/radeon/kms: Convert RS400/RS480 to new init path & fix legacy VGA (V3) 2009-10-02 08:51:46 +10:00
rv515.c drm/radeon/kms: display watermark updates (v2) 2010-03-31 14:54:47 +10:00
rv515d.h drm/radeon/kms: Convert RV515 to new init path and associated cleanup 2009-09-29 11:15:54 +10:00
rv770.c drm/radeon/kms: fence cleanup + more reliable GPU lockup detection V4 2010-04-06 10:42:45 +10:00
rv770d.h drm/radeon/kms: add initial Evergreen support (Radeon HD 5xxx) 2010-02-09 09:44:02 +10:00