From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: [PULL] PPGTT Date: Fri, 6 Dec 2013 13:55:21 -0800 Message-ID: <20131206215521.GA6922@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail.bwidawsk.net (bwidawsk.net [166.78.191.112]) by gabe.freedesktop.org (Postfix) with ESMTP id 41198FA458 for ; Fri, 6 Dec 2013 13:55:32 -0800 (PST) Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Daniel Vetter Cc: Intel GFX , Paul Parenteau List-Id: intel-gfx@lists.freedesktop.org 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