linux/drivers/gpu/drm
Chris Wilson 74e21ac2cc drm/i915: Repeat evictions whilst pageflip completions are outstanding
Since an old pageflip will keep its scanout buffer object pinned until
it has executed its unpin task on the common workqueue, we can clog up
our GGTT with stale pinned objects. As we cannot flush those workqueues
without dropping our locks, we have to resort to falling back to
userspace and telling them to repeat the operation in order to have a
chance to run our workqueues and free up the required memory. If we
fail, then we are forced to report ENOSPC back to userspace causing the
operation to fail and best-case scenario is that it introduces temporary
corruption.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Jon Bloomfield <jon.bloomfield@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-01-22 10:34:41 +01:00
..
armada Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2014-01-20 10:21:54 +10:00
ast drivers: gpu: Mark functions as static in ast_ttm.c 2014-01-14 12:59:16 +10:00
bochs drm/bochs: new driver 2013-12-23 11:02:39 +10:00
cirrus drivers: gpu: Mark functions as static and remove unused function in cirrus_ttm.c 2014-01-14 12:59:19 +10:00
exynos drm/exynos: fix build error caused by removed drm core macros 2014-01-07 16:53:25 +09:00
gma500 drm/gma500: Remove unused function declaration 2014-01-14 12:38:40 +10:00
i2c
i810
i915 drm/i915: Repeat evictions whilst pageflip completions are outstanding 2014-01-22 10:34:41 +01:00
mga drivers: gpu: Include appropriate header file in mga_ioc32.c 2014-01-14 12:59:24 +10:00
mgag200 drm/mgag200: fix oops in cursor code. 2014-01-16 14:43:04 +10:00
msm drm: store the gem vma offset manager in a typed pointer 2014-01-14 12:38:32 +10:00
nouveau Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2014-01-20 10:21:54 +10:00
omapdrm drm: store the gem vma offset manager in a typed pointer 2014-01-14 12:38:32 +10:00
panel
qxl gpu: fix qxl missing crc32_le 2014-01-14 13:08:37 +10:00
r128 drivers: gpu: Include appropriate header file in r128_ioc32.c 2014-01-14 13:05:37 +10:00
radeon Merge branch 'drm-vbl-timestamp' of git://gitorious.org/vsyrjala/linux into drm-next 2014-01-22 09:13:13 +10:00
rcar-du Merge branch 'drm/next/du' of git://linuxtv.org/pinchartl/fbdev into drm-next 2013-12-23 10:42:36 +10:00
savage
shmobile
sis drivers: gpu: Mark function as static in sis_drv.c 2014-01-14 13:04:33 +10:00
tdfx
tegra drm/tegra: Changes for v3.14-rc1 2013-12-23 10:43:42 +10:00
tilcdc drm: store the gem vma offset manager in a typed pointer 2014-01-14 12:38:32 +10:00
ttm Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2014-01-20 10:21:54 +10:00
udl
via drivers: gpu: Mark function as static in via_drv.c 2014-01-14 13:05:00 +10:00
vmwgfx drm/vmwgfx: Fix recently introduced sparse / smatch warnings and errors 2014-01-21 13:22:18 +01: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: Pass the display mode to drm_calc_timestamping_constants() 2014-01-20 11:04:46 +02:00
drm_crtc.c
drm_debugfs.c
drm_dma.c
drm_dp_helper.c
drm_drv.c
drm_edid_load.c
drm_edid.c drm/edid: Populate picture aspect ratio for CEA modes 2014-01-20 18:32:21 +01:00
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c
drm_flip_work.c
drm_fops.c
drm_gem_cma_helper.c
drm_gem.c drm/gem: Always initialize the gem object in object_init 2014-01-21 10:19:58 +01:00
drm_global.c
drm_hashtab.c
drm_info.c
drm_ioc32.c
drm_ioctl.c
drm_irq.c drm/radeon: Move the early vblank IRQ fixup to radeon_get_crtc_scanoutpos() 2014-01-20 12:21:35 +02:00
drm_lock.c
drm_memory.c
drm_mipi_dsi.c
drm_mm.c
drm_modes.c Revert "drm: copy mode type in drm_mode_connector_list_update()" 2014-01-14 12:50:49 +10:00
drm_panel.c
drm_pci.c
drm_platform.c
drm_prime.c
drm_rect.c
drm_scatter.c
drm_stub.c Merge branch 'drm-intel-next' of git://people.freedesktop.org/~danvet/drm-intel into drm-next 2014-01-20 10:21:54 +10:00
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_usb.c drivers: gpu: Include appropriate header file in drm_usb.c 2014-01-14 12:53:41 +10:00
drm_vm.c
drm_vma_manager.c
Kconfig drm/bochs: new driver 2013-12-23 11:02:39 +10:00
Makefile drm/bochs: new driver 2013-12-23 11:02:39 +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