linux_dsm_epyc7002/drivers/gpu/drm
Chris Wilson 9d7730914f drm/i915: Preallocate next seqno before touching the ring
Based on the work by Mika Kuoppala, we realised that we need to handle
seqno wraparound prior to committing our changes to the ring. The most
obvious point then is to grab the seqno inside intel_ring_begin(), and
then to reuse that seqno for all ring operations until the next request.
As intel_ring_begin() can fail, the callers must already be prepared to
handle such failure and so we can safely add further checks.

This patch looks like it should be split up into the interface
changes and the tweaks to move seqno wrapping from the execbuffer into
the core seqno increment. However, I found no easy way to break it into
incremental steps without introducing further broken behaviour.

v2: Mika found a silly mistake and a subtle error in the existing code;
inside i915_gem_retire_requests() we were resetting the sync_seqno of
the target ring based on the seqno from this ring - which are only
related by the order of their allocation, not retirement. Hence we were
applying the optimisation that the rings were synchronised too early,
fortunately the only real casualty there is the handling of seqno
wrapping.

v3: Do not forget to reset the sync_seqno upon module reinitialisation,
ala resume.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=863861
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com> [v2]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2012-11-29 11:43:52 +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 drm: exynos: removed warning due to missing typecast for mixer driver data 2012-10-31 06:11:40 -07:00
gma500 gma500: medfield: drop bogus NULL check in mdfld_dsi_output_init() 2012-11-07 11:35:32 +10:00
i2c
i810
i915 drm/i915: Preallocate next seqno before touching the ring 2012-11-29 11:43:52 +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 drm: platform: Don't initialize driver-private data 2012-10-23 10:15:11 +10:00
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: extract dp link bw helpers 2012-10-22 22:34:47 +02:00
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: cma: Fail gracefully on allocation failure 2012-10-23 10:14:58 +10:00
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/debugfs: remove redundant info from gem_names 2012-10-23 10:15:04 +10:00
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: Constify some function arguments 2012-11-07 10:09:16 +10:00
drm_pci.c
drm_platform.c drm: platform: Don't initialize driver-private data 2012-10-23 10:15:11 +10:00
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