linux_dsm_epyc7002/drivers/gpu/drm
Daniel Vetter a39a68054f drm/i915: simplify shmem pwrite/pread slowpath handling
The shmem paths for pwrite/pread used a clever trick to hold onto a
single page when dropping the big dev->struct_mutex for the slowpath.
But this ran the risk of reinstating (or not completely purging) the
backing storage when dropping purgeable objects.

Hence the code needed to keep track of whether it ever dropped the
lock, and if it did, manually check whether it needs to re-purge the
backing storage. But thanks to the pages pin count introduced in

commit a5570178c0
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Sep 4 21:02:54 2012 +0100

    drm/i915: Pin backing pages whilst exporting through a dmabuf vmap

which allowed us to pin the backing storage and remove that page
reference trick from shmem_pwrite/read in

commit f60d7f0c1d
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Sep 4 21:02:56 2012 +0100

    drm/i915: Pin backing pages for pread

and

commit 755d22184f
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Sep 4 21:02:55 2012 +0100

    drm/i915: Pin backing pages for pwrite

we can now abolish this check. The slowpath cleanup completely
disappears from pread, and for pwrite we're only left with the domain
fixup in case someone moved the object out of the cpu domain from
under us. A follow-on patch will optimize that a notch more.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-11-29 13:48:34 +01:00
..
ast drm/ttm: remove ttm_buffer_object->buffer_start 2012-11-20 16:06:19 +10:00
cirrus drm/cirrus: check alloc_apertures() success in cirrus_kick_out_firmware_fb() 2012-11-20 16:06:23 +10:00
exynos
gma500
i2c
i810
i915 drm/i915: simplify shmem pwrite/pread slowpath handling 2012-11-29 13:48:34 +01:00
mga
mgag200 drm/mgag200: remove unneeded aper->count assignment after alloc_apertures() 2012-11-20 16:06:26 +10:00
nouveau drm/ttm: remove sync_arg from driver functions 2012-11-20 16:10:10 +10:00
r128
radeon drm/ttm: remove sync_arg from driver functions 2012-11-20 16:10:10 +10:00
savage
shmobile
sis
tdfx
tegra drm: tegra: Add HDMI support 2012-11-20 15:43:53 +10:00
ttm drm/ttm: alter cpu_writers to return -EBUSY in ttm_execbuf_util reservations 2012-11-20 16:17:35 +10:00
udl drm/udl: Add missing static storage class specifiers in udl_connector.c 2012-11-20 15:41:49 +10:00
via
vmwgfx drm/vmwgfx: Make vmw_dmabuf_unreference handle NULL objects 2012-11-20 16:19:59 +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: don't unnecessarily enable the polling work 2012-11-20 16:06:42 +10:00
drm_crtc.c drm: properly init/reset connector status 2012-11-20 15:51:06 +10:00
drm_debugfs.c
drm_dma.c
drm_dp_helper.c
drm_drv.c
drm_edid_load.c
drm_edid_modes.h
drm_edid.c drm: add drm_mode_cea_vic 2012-11-29 11:42:37 +01:00
drm_encoder_slave.c
drm_fb_cma_helper.c
drm_fb_helper.c drm/fb_helper: Fix potential NULL pointer dereference 2012-11-20 15:40:56 +10:00
drm_fops.c
drm_gem_cma_helper.c
drm_gem.c
drm_global.c
drm_hashtab.c drm: Make hashtab rcu-safe 2012-11-20 16:14:58 +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/KMS: Add Bail-Out Conditions for Loop. 2012-11-20 16:07:49 +10:00
drm_lock.c
drm_memory.c
drm_mm.c
drm_modes.c
drm_pci.c
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_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: Add NVIDIA Tegra20 support 2012-11-20 15:43:41 +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