linux/drivers/gpu/drm
Ben Widawsky 8436473a4b drm/i915: drm/i915: Fix recursive calls to unmap
After the ILK vt-d workaround patches it became clear that we had
introduced a bug.  Chris Wilson tracked down the issue to recursive
calls to unmap. This happens because we try to optimize waiting on
requests by calling retire requests after the wait, which may drop the
last reference on an object and end up freeing the object (and then
unmap the object from the gtt).

After the last patch we can now choose to defer processing the retire
list.

Kudos to Chris Wilson for tracking this one down.

This patch fixes gem_unref_active_buffers from i-g-t. It was tested by
forcing do_idle_maps to true.

This also fixes tests/gem_linear_blits in intel-gpu-tools.

Reported-by: guang.a.yang@intel.com
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42180
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-01-26 11:25:51 +01:00
..
exynos drm: add support for private planes 2012-01-05 10:00:16 +00:00
gma500 gma500: silence gcc warnings in mid_get_vbt_data() 2012-01-10 10:01:22 +00:00
i2c gpu: add module.h to drivers/gpu files as required. 2011-10-31 19:32:03 -04:00
i810 drm/i810: don't acces hw regs in lastclose 2011-12-22 19:54:58 +01:00
i915 drm/i915: drm/i915: Fix recursive calls to unmap 2012-01-26 11:25:51 +01:00
mga drm: Make the per-driver file_operations struct const 2011-11-11 11:14:47 +00:00
nouveau drm/nouveau/pm: fix build with HWMON off 2012-01-10 10:13:16 +00:00
r128 drm: Make the per-driver file_operations struct const 2011-11-11 11:14:47 +00:00
radeon drm/radeon: double lock typo in radeon_vm_bo_rmv() 2012-01-09 12:49:48 +00:00
savage drm: Make the per-driver file_operations struct const 2011-11-11 11:14:47 +00:00
sis drm/sis|via: don't return stack garbage from free_mem ioctl 2012-01-09 12:11:39 +00:00
tdfx drm: Make the per-driver file_operations struct const 2011-11-11 11:14:47 +00:00
ttm drm/ttm: fix condition (and vs or) 2012-01-10 10:00:42 +00:00
via drm/sis|via: don't return stack garbage from free_mem ioctl 2012-01-09 12:11:39 +00:00
vmwgfx Merge remote-tracking branch 'pfdo/drm-fixes' into drm-core-next 2011-12-21 09:50:56 +00:00
ati_pcigart.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_agpsupport.c drm: kill drm_agp_chipset_flush 2010-11-23 20:14:44 +00:00
drm_auth.c drivers/gpu/drm: Use kzalloc 2010-05-18 15:57:05 +10:00
drm_buffer.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_bufs.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_cache.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_context.c drm: make DRM_UNLOCKED ioctls with their own mutex 2012-01-05 14:43:02 +00:00
drm_crtc.c drm: add support for private planes 2012-01-05 10:00:16 +00:00
drm_crtc_helper.c drm: Add drm_format_num_planes() utility function 2011-12-20 20:34:32 +00:00
drm_debugfs.c drm: serialize access to list of debugfs files 2011-11-11 11:05:19 +00:00
drm_dma.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_dp_i2c_helper.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
drm_drv.c drm: make DRM_UNLOCKED ioctls with their own mutex 2012-01-05 14:43:02 +00:00
drm_edid.c Fix wrong assumptions in cea_for_each_detailed_block v2 2011-12-20 09:51:10 +00:00
drm_edid_modes.h drm/edid: support CEA video modes. 2011-12-19 14:53:16 +00:00
drm_encoder_slave.c gpu: add module.h to drivers/gpu files as required. 2011-10-31 19:32:03 -04:00
drm_fb_helper.c drm: avoid switching to text console if there is no panic timeout 2011-11-10 21:27:34 +00:00
drm_fops.c drm: Make the per-driver file_operations struct const 2011-11-11 11:14:47 +00:00
drm_gem.c drm/gem: add functions for mmap offset creation 2011-08-30 11:06:06 +01:00
drm_global.c drm: move ttm global code to core drm 2010-08-04 09:46:06 +10:00
drm_hashtab.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_info.c Merge remote branch 'intel/drm-intel-next' of ../drm-next into drm-core-next 2011-03-14 14:15:13 +10:00
drm_ioc32.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_ioctl.c drm/i915: kill i915_mem.c 2012-01-17 20:01:01 +01:00
drm_irq.c drm: Remove utterly bogus preempt_disable() sections 2011-11-14 09:28:50 +00:00
drm_lock.c drm: add missing exports for i810 driver. 2011-12-22 19:09:01 +00:00
drm_memory.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_mm.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_modes.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_pci.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_platform.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_proc.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_scatter.c drivers: use kzalloc/kcalloc instead of 'kmalloc+memset', where possible 2011-07-25 20:57:13 -07:00
drm_stub.c drm: Create and use drm_err 2011-04-28 14:53:02 +10:00
drm_sysfs.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_trace.h drm: add per-event vblank event trace points 2010-07-02 14:03:24 +10:00
drm_trace_points.c
drm_usb.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
drm_vm.c gpu: Add export.h as required to drivers/gpu files. 2011-10-31 19:32:03 -04:00
Kconfig Merge tag 'v3.2-rc6' of /home/airlied/devel/kernel/linux-2.6 into drm-core-next 2011-12-20 14:43:53 +00:00
Makefile drm: kill drm_sman 2011-12-22 00:33:23 +01:00
README.drm drm: reorganise drm tree to be more future proof. 2008-07-14 10:45:01 +10:00

************************************************************
* 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