linux/drivers/gpu/drm
Daniel Vetter e5eb3d63c6 drm/i915: add interface to simulate gpu hangs
gpu reset is a very important piece of our infrastructure.
Unfortunately we only really it test by actually hanging the gpu,
which often has bad side-effects for the entire system. And the gpu
hang handling code is one of the rather complicated pieces of code we
have, consisting of
- hang detection
- error capture
- actual gpu reset
- reset of all the gem bookkeeping
- reinitialition of the entire gpu

This patch adds a debugfs to selectively stopping rings by ceasing to
update the hw tail pointer, which will result in the gpu no longer
updating it's head pointer and eventually to the hangcheck firing.
This way we can exercise the gpu hang code under controlled conditions
without a dying gpu taking down the entire systems.

Patch motivated by me forgetting to properly reinitialize ppgtt after
a gpu reset.

Usage:

echo $((1 << $ringnum)) > i915_ring_stop # stops one ring

echo 0xffffffff > i915_ring_stop # stops all, future-proof version

then run whatever testload is desired. i915_ring_stop automatically
resets after a gpu hang is detected to avoid hanging the gpu to fast
and declaring it wedged.

v2: Incorporate feedback from Chris Wilson.

v3: Add the missing cleanup.

v4: Fix up inconsistent size of ring_stop_read vs _write, noticed by
Eugeni Dodonov.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-05-05 19:45:00 +02:00
..
exynos drm/exynos: fix to pointer manager member of struct exynos_drm_subdrv 2012-04-12 14:51:27 +09:00
gma500 gma500: Set the mapping mask 2012-04-27 09:24:36 +01:00
i2c
i810 drm: drop setting vm_file to filp 2012-03-05 11:19:08 +00:00
i915 drm/i915: add interface to simulate gpu hangs 2012-05-05 19:45:00 +02:00
mga drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
nouveau Revert "nouveau/bios: Fix tracking of BIOS image data" 2012-04-04 08:16:25 -07:00
r128 drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
radeon Merge tag 'drm-intel-next-2012-04-23' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-05-02 09:22:29 +01:00
savage drm/savage: fix integer overflows in savage_bci_cmdbuf() 2012-04-10 10:22:51 +01:00
sis drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
tdfx
ttm Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-03-22 13:08:22 -07:00
udl mm, drm/udl: fixup vma flags on mmap 2012-04-02 11:08:17 +01:00
via drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
vmwgfx Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-03-22 13:08:22 -07:00
ati_pcigart.c
drm_agpsupport.c
drm_auth.c
drm_buffer.c
drm_bufs.c
drm_cache.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-core-next 2012-04-12 10:27:01 +01:00
drm_context.c drm: Unify and fix idr error handling 2012-04-24 09:50:20 +01:00
drm_crtc.c drm: Unify and fix idr error handling 2012-04-24 09:50:20 +01:00
drm_crtc_helper.c drm: Move drm_format_num_planes() to drm_crtc.c 2012-04-20 12:37:11 +01:00
drm_debugfs.c
drm_dma.c
drm_dp_i2c_helper.c
drm_drv.c drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +01:00
drm_edid.c drm: Store vendor IDs directly in the EDID quirk structure 2012-04-27 08:25:13 +01:00
drm_edid_load.c drm/edid: fix collision between two patches breaking build 2012-04-30 07:26:16 +01:00
drm_edid_modes.h drm: replace open-coded ARRAY_SIZE with macro 2012-04-20 13:12:16 +01:00
drm_encoder_slave.c
drm_fb_helper.c drm/edid: Allow drm_mode_find_dmt to hunt for reduced-blanking modes 2012-04-20 12:57:03 +01:00
drm_fops.c drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +01:00
drm_gem.c drm: Unify and fix idr error handling 2012-04-24 09:50:20 +01:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_ioc32.c
drm_ioctl.c drm: add some caps for userspace to discover more info for dumb KMS driver (v2) 2012-02-16 18:35:11 +00:00
drm_irq.c drm: remove unused code 2012-02-29 10:18:29 +00:00
drm_lock.c
drm_memory.c drm: remove unused code 2012-02-29 10:18:29 +00:00
drm_mm.c
drm_modes.c drm: Add drm_mode_copy() 2012-03-15 09:52:51 +00:00
drm_pci.c drm: move pci bus master enable into driver. 2012-02-16 18:31:07 +00:00
drm_platform.c drm: cope with platformdev->id == -1 2012-03-07 14:03:40 +00:00
drm_prime.c drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +01:00
drm_proc.c
drm_scatter.c
drm_stub.c drm: Unify and fix idr error handling 2012-04-24 09:50:20 +01:00
drm_sysfs.c drm/sysfs: protect sysfs removal code against being run twice. 2012-03-15 13:35:31 +00:00
drm_trace.h
drm_trace_points.c
drm_usb.c drm: fix build with UDL if USB is a module 2012-03-16 09:28:03 +00:00
drm_vm.c drm: add core support for unplugging a device (v2) 2012-03-15 13:35:33 +00:00
Kconfig drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +01:00
Makefile drm: base prime/dma-buf support (v5) 2012-03-30 11:52:44 +01:00
README.drm

************************************************************
* For the very latest on DRI development, please see:      *
*     http://dri.freedesktop.org/                          *
************************************************************

The Direct Rendering Manager (drm) is a device-independent kernel-level
device driver that provides support for the XFree86 Direct Rendering
Infrastructure (DRI).

The DRM supports the Direct Rendering Infrastructure (DRI) in four major
ways:

    1. The DRM provides synchronized access to the graphics hardware via
       the use of an optimized two-tiered lock.

    2. The DRM enforces the DRI security policy for access to the graphics
       hardware by only allowing authenticated X11 clients access to
       restricted regions of memory.

    3. The DRM provides a generic DMA engine, complete with multiple
       queues and the ability to detect the need for an OpenGL context
       switch.

    4. The DRM is extensible via the use of small device-specific modules
       that rely extensively on the API exported by the DRM module.


Documentation on the DRI is available from:
    http://dri.freedesktop.org/wiki/Documentation
    http://sourceforge.net/project/showfiles.php?group_id=387
    http://dri.sourceforge.net/doc/

For specific information about kernel-level support, see:

    The Direct Rendering Manager, Kernel Support for the Direct Rendering
    Infrastructure
    http://dri.sourceforge.net/doc/drm_low_level.html

    Hardware Locking for the Direct Rendering Infrastructure
    http://dri.sourceforge.net/doc/hardware_locking_low_level.html

    A Security Analysis of the Direct Rendering Infrastructure
    http://dri.sourceforge.net/doc/security_low_level.html