[Intel-gfx] [PATCH 00/34] PPGTT prep part 2 (and unmerged part 1)

Ben Widawsky ben at bwidawsk.net
Sat May 25 21:26:34 CEST 2013


Hello.

I'm continuing to develop full PPGTT support for the i915 driver. This
series is a follow-up to the previously posted RFC [1]. This series
contains reworked versions of the unmerged patches (fingers crossed that
I didn't miss review comments). I've rebased this series to hell and
back, so I'm sure there are some lingering errors due to that. I've found
several, but my eyes are no longer capable of finding them. I've also added
some last minute fixups, which I always promise myself I'll never do because
they always have bugs.

To reiterate the steps I am planning to take which I did this in the
previous RFC [1], but it has changed a bit:

1. Make a link between contexts and PPGTT. Every context has  it's own
   address space implemented.
2. Create the VMA/VM, plumb through the driver.
3. Create a context per fd. This involves abstracting the notion of
   context to not just mean a HW context, but also an address space.
4. Switch address spaces on context switch.
5. Develop interfaces.

This patch series addresses steps 1 & 2. A lot of the future patches
should have much less room for debate on what color to paint the
bikeshed, so I feel this is a good point to submit for some review. I am
currently developing 3 & 4. I have some half baked patches which aren't
really ready, but do give me some notion that things will work.  Note
that The order of 3 and 4 really matter because if we start switching
page tables for applications not using contexts, everything will blow up
pretty badly.

To not scare off potential reviewers, even though the series is as long
as it is, many of the patches really could be squashed. To keep rebase +
easier review, I've split things out to multiple steps.

1-5: Random fixes.
6-15: Equivalent to reworked version of the PPGTT prep part 1
  6-9: Make PPGTT PDE allocation more generic
  10-15: Tie contexts to PPGTT.

16-34: create the VM and VMAs.
  16-20: Mostly cut and paste to set us up for future patches.
  21-25: Set up the address space abstraction.
  26-31: Reorganize code to prepare for VMAs
  31-34: are logically one patch. I split them out for my own debug
	after the enormous patch didn't work. I'm fine with squashing
	them in to 1 after review, or leaving a large bisect warning
	(as I've done).

I do have a work in progress branch on fd.o [2]. This may not reflect this
series 1:1 as it will have rebases, plus some future patches as I feel they are
ready. If someone wants a branch on fd.o for review, please let me know.

References:
[1] http://lists.freedesktop.org/archives/intel-gfx/2013-April/027144.html
[2] http://cgit.freedesktop.org/~bwidawsk/drm-intel/log/?h=ppgtt-prep-2

-- 
Ben Widawsky (33):
  drm/i915: pre-fixes for checkpatch
  drm/i915: use mappable size for fb kickout
  drm/i915: use drm_mm_takedown
  drm/i915: context debug messages
  drm/i915: Call context fini at cleanup
  drm/i915: make PDE|PTE platform specific
  drm/i915: Use drm_mm for PPGTT PDEs
  drm/i915: Use PDEs as the guard page
  drm/i915: cleanup context fini
  drm/i915: Do a fuller init after reset
  drm/i915: Split context enabling from init
  drm/i915: destroy i915_gem_init_global_gtt
  drm/i915: Embed PPGTT into the context
  drm/i915: Tie context to PPGTT
  drm/i915: Really share scratch page
  drm/i915: Combine scratch members into a struct
  drm/i915: Drop dev from pte_encode
  drm/i915: Use gtt shortform where possible
  drm/i915: Move fbc members out of line
  drm/i915: Move gtt and ppgtt under address space umbrella
  drm/i915: Move gtt_mtrr to i915_gtt
  drm/i915: Move stolen stuff to i915_gtt
  drm/i915: Move aliasing_ppgtt
  drm/i915: Put the mm in the parent address space
  drm/i915: Move object tracking lists to new mm
  drm/i915: Create a global list of vms
  drm/i915: Start using vm lists
  drm/i915: Remove object's gtt_offset
  drm: pre allocate node for create_block
  drm/i915: Getter/setter for object attributes
  drm/i915: Create VMAs (part 1)
  drm/i915: Create VMAs (part 2)
  drm/i915: Create VMAs (part 3)

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

 drivers/gpu/drm/drm_mm.c                   | 134 ++++----
 drivers/gpu/drm/i915/i915_debugfs.c        |  63 ++--
 drivers/gpu/drm/i915/i915_dma.c            |  33 +-
 drivers/gpu/drm/i915/i915_drv.c            |  29 +-
 drivers/gpu/drm/i915/i915_drv.h            | 275 +++++++++++------
 drivers/gpu/drm/i915/i915_gem.c            | 481 ++++++++++++++++++++---------
 drivers/gpu/drm/i915/i915_gem_context.c    |  67 ++--
 drivers/gpu/drm/i915/i915_gem_debug.c      |  11 +-
 drivers/gpu/drm/i915/i915_gem_evict.c      |  63 ++--
 drivers/gpu/drm/i915/i915_gem_execbuffer.c |  83 +++--
 drivers/gpu/drm/i915/i915_gem_gtt.c        | 373 +++++++++++-----------
 drivers/gpu/drm/i915/i915_gem_stolen.c     |  88 +++---
 drivers/gpu/drm/i915/i915_gem_tiling.c     |  18 +-
 drivers/gpu/drm/i915/i915_irq.c            |  37 ++-
 drivers/gpu/drm/i915/i915_trace.h          |  20 +-
 drivers/gpu/drm/i915/intel_display.c       |  40 ++-
 drivers/gpu/drm/i915/intel_drv.h           |   7 -
 drivers/gpu/drm/i915/intel_fb.c            |   8 +-
 drivers/gpu/drm/i915/intel_overlay.c       |  26 +-
 drivers/gpu/drm/i915/intel_pm.c            |  58 ++--
 drivers/gpu/drm/i915/intel_ringbuffer.c    |  28 +-
 drivers/gpu/drm/i915/intel_sprite.c        |   8 +-
 include/drm/drm_mm.h                       | 147 +++++----
 23 files changed, 1244 insertions(+), 853 deletions(-)

-- 
1.8.2.3




More information about the Intel-gfx mailing list