twx-linux/drivers/gpu/drm
Chris Wilson d0a57789d5 drm/i915: Only insert the mb() before updating the fence parameter
With a fence, we only need to insert a memory barrier around the actual
fence alteration for CPU accesses through the GTT. Performing the
barrier in flush-fence was inserting unnecessary and expensive barriers
for never fenced objects.

Note removing the barriers from flush-fence, which was effectively a
barrier before every direct access through the GTT, revealed that we
where missing a barrier before the first access through the GTT. Lack of
that barrier was sufficient to cause GPU hangs.

v2: Add a couple more comments to explain the new barriers

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-01-20 13:11:16 +01:00
..
ast Drivers: gpu: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
cirrus Drivers: gpu: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
exynos Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux 2013-01-08 16:08:10 -08:00
gma500 Drivers: gpu: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
i2c drm/i2c: drm_connector_property -> drm_object_property 2012-11-30 10:20:12 -06:00
i810
i915 drm/i915: Only insert the mb() before updating the fence parameter 2013-01-20 13:11:16 +01:00
mga
mgag200 Drivers: gpu: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
nouveau Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux 2013-01-08 16:08:10 -08:00
r128
radeon Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux 2013-01-08 16:08:10 -08:00
savage
shmobile Drivers: gpu: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
sis
tdfx
tegra Revert "drm: tegra: protect DC register access with mutex" 2012-12-30 21:58:20 +10:00
ttm drm/ttm: fix fence locking in ttm_buffer_object_transfer 2013-01-08 18:35:31 +10:00
udl drm/udl: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
via
vmwgfx drm/ttm: remove no_wait_reserve, v3 2012-12-10 20:21:30 +10:00
ati_pcigart.c
drm_agpsupport.c
drm_auth.c
drm_buffer.c
drm_bufs.c
drm_cache.c
drm_context.c
drm_crtc_helper.c drm/doc: integrate crtc helper api into docbook 2012-11-28 20:19:58 +10:00
drm_crtc.c drm: remove legacy drm_connector_property fxns 2012-11-30 10:30:48 -06:00
drm_debugfs.c
drm_dma.c
drm_dp_helper.c drm/doc: add new dp helpers into drm DocBook 2012-11-28 20:26:53 +10:00
drm_drv.c
drm_edid_load.c
drm_edid_modes.h
drm_edid.c drm/edid: Add drm_rgb_quant_range_selectable() 2013-01-20 13:09:44 +01:00
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c drm: remove legacy drm_connector_property fxns 2012-11-30 10:30:48 -06:00
drm_fops.c
drm_gem_cma_helper.c
drm_gem.c
drm_global.c
drm_hashtab.c drm: Add a hash-tab rcu-safe API 2012-11-28 18:36:05 +10:00
drm_info.c
drm_ioc32.c
drm_ioctl.c drm: add support for monotonic vblank timestamps 2012-11-20 16:06:16 +10:00
drm_irq.c drm: hold event_lock while accessing vblank_event_list 2012-11-29 03:30:34 -08:00
drm_lock.c
drm_memory.c
drm_mm.c Merge tag 'drm-intel-next-2012-12-21' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2013-01-17 20:34:08 +10:00
drm_modes.c
drm_pci.c drm/pci: add missing variable initialization 2012-11-29 18:20:31 +10:00
drm_platform.c
drm_prime.c
drm_proc.c
drm_scatter.c
drm_stub.c drm: add support for monotonic vblank timestamps 2012-11-20 16:06:16 +10:00
drm_sysfs.c drm: remove legacy drm_connector_property fxns 2012-11-30 10:30:48 -06:00
drm_trace_points.c
drm_trace.h
drm_usb.c
drm_vm.c
Kconfig drm: Add NVIDIA Tegra20 support 2012-11-20 15:43:41 +10:00
Makefile drm: only build ati_pcigart if PCI enabled 2012-11-28 20:12:29 +10: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