[PULL] PPGTT

Ben Widawsky
2013-12-06T21:55:32Z

The following changes since commit 1ce477c917c75ce398e0def49f480327c9d0bab0:

drm-intel-nightly: 2013y-12m-06d-13h-13m-07s integration manifest (2013-12-06 13:13:33 +0100)

are available in the git repository at:

git://people.freedesktop.org/~bwidawsk/drm-intel ppgtt

for you to fetch changes up to 7eae4c845ee80ad2ade3461f0291b83edd1207d9:

page allocator: Tmp OOM deadlock w/a from Chris (2013-12-06 11:00:25 -0800)

This branch implemented full PPGTT support as has been discussed several times,
but most thoroughly:
http://lists.freedesktop.org/archives/intel-gfx/2013-June/029249.html

Quick recap: These patches enable GPU process isolation through the use of the
Per Process Graphics Translation Tables (PPGTT). These patches support the
feature on IVB, and HSW, with support coming next for BDW. Our existing
aliasing PPGTT support remains on SNB, and can be configured via modparam for
IVB and HSW. I have noted one TODO on the shared per fd default context, which
does inherit whatever ran last, and this potentially lets a bit of information
slip out from the last run context. Unlike the status listed in the
aforementioned mail, I think the patches are now quite stable.

Some tests need to be modified, and additionally there is one test from Oscar
Mateo Lozano. By the way, Oscar has done an outstanding job in helping me with
tests, and debug during my recent development.
I have those stored here:
http://cgit.freedesktop.org/~bwidawsk/intel-gpu-tools/log/?h=ppgtt

My overall feel on the patches is pretty good. Through the course of
development, I have had to work with a lot of OOM killer problems, many of
which were not introduced by my patches - simply exacerbated by. My gut tells
me (as well as intermittent dmesg spew) that problems still exist. Since other
OOM fixes are going in quite rapidly at the moment, I'm hopeful a merge now
will help to both capture the benefit of those other fixes, as well as perhaps
bring more problems to the surface while people are hunting in that area.

NOTES:
The drm patch needs to be sent to dri-devel.
The page allocator patch simply makes OOM inevitably angrier, but did help
unblock things enough to find a couple of bugs.
One immediate TODO is a flag on context creation to allow users to opt-in to
page faulting.

----------------------------------------------------------------
Ben Widawsky (47):
drm/i915: Fix bad refcounting on execbuf failures
drm/i915: Provide PDP updates via MMIO
drm/i915: Don't unconditionally try to deref aliasing ppgtt
drm/i915: Allow ggtt lookups to not WARN
drm/i915: Takedown drm_mm on failed gtt setup
drm/i915: Handle inactivating objects for all VMAs
drm/i915: Add vm to error BO capture
drm/i915: Don't use gtt mapping for !gtt error objects
drm/i915: Identify active VM for batchbuffer capture
drm/i915: Make pin count per VMA
drm/i915: Create bind/unbind abstraction for VMAs
drm/i915: Remove vm arg from relocate entry
drm/i915: Add a context open function
drm/i915: relax context alignment
drm/i915: Simplify ring handling in execbuf
drm/i915: Permit contexts on all rings
drm/i915: Track which ring a context ran on
drm/i915: Better reset handling for contexts
drm/i915: Split context enabling from init
drm/i915: Generalize default context setup
drm/i915: PPGTT vfuncs should take a ppgtt argument
drm/i915: Use drm_mm for PPGTT PDEs
drm/i915: One hopeful eviction on PPGTT alloc
drm/i915: Use platform specific ppgtt enable
drm/i915: Extract mm switching to function
drm/i915: Use LRI for switching PP_DIR_BASE
drm/i915: Flush TLBs after !RCS PP_DIR_BASE
drm/i915: Generalize PPGTT init
drm/i915: Reorganize intel_enable_ppgtt
drm/i915: Add VM to context
drm/i915: Write PDEs at init instead of enable
drm/i915: Restore PDEs for all VMs
drm/i915: Do aliasing PPGTT init with contexts
drm/i915: Create a per file_priv default context
drm/i915: Piggy back hangstats off of contexts
drm/i915: Get context early in execbuf
drm/i915: Defer request freeing
drm/i915: Clean up VMAs before freeing
drm/i915: Do not allow buffers at offset 0
drm/i915: Add a tracepoint for new VMs
drm/i915: Use multiple VMs -- the point of no return
drm/i915: Remove extraneous mm_switch in ppgtt enable
drm/i915: Warn on gem_pin usage
drm/i915: Add PPGTT dumper
drm/i915: Dump all ppgtt
drm/i915: Use topdown allocation for PPGTT
page allocator: Tmp OOM deadlock w/a from Chris

Chris Wilson (1):
drm: Optionally create mm blocks from top-to-bottom

drivers/gpu/drm/drm_mm.c | 56 ++-
drivers/gpu/drm/i915/i915_debugfs.c | 40 +-
drivers/gpu/drm/i915/i915_dma.c | 7 +-
drivers/gpu/drm/i915/i915_drv.c | 3 +-
drivers/gpu/drm/i915/i915_drv.h | 221 ++++++----
drivers/gpu/drm/i915/i915_gem.c | 220 +++++-----
drivers/gpu/drm/i915/i915_gem_context.c | 408 +++++++++++++-----
drivers/gpu/drm/i915/i915_gem_evict.c | 5 +-
drivers/gpu/drm/i915/i915_gem_execbuffer.c | 159 +++----
drivers/gpu/drm/i915/i915_gem_gtt.c | 672 ++++++++++++++++++++++-------
drivers/gpu/drm/i915/i915_gem_tiling.c | 2 +-
drivers/gpu/drm/i915/i915_gpu_error.c | 67 ++-
drivers/gpu/drm/i915/i915_trace.h | 18 +
drivers/gpu/drm/i915/intel_fbdev.c | 4 +-
drivers/gpu/drm/i915/intel_overlay.c | 8 +-
drivers/gpu/drm/i915/intel_pm.c | 6 +-
drivers/gpu/drm/i915/intel_ringbuffer.c | 12 +-
drivers/gpu/drm/i915/intel_uncore.c | 8 +-
include/drm/drm_mm.h | 29 +-
include/uapi/drm/i915_drm.h | 1 +
mm/page_alloc.c | 4 +
21 files changed, 1347 insertions(+), 603 deletions(-)
--
Ben Widawsky, Intel Open Source Technology Center