[Intel-gfx] [PULL] PPGTT

Ben Widawsky ben at bwidawsk.net
Fri Dec 6 22:55:21 CET 2013


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



More information about the Intel-gfx mailing list