[Intel-gfx] [PATCH 00/34] PPGTT prep part 2 (and unmerged part 1)
ben at bwidawsk.net
Sat May 25 21:26:34 CEST 2013
I'm continuing to develop full PPGTT support for the i915 driver. This
series is a follow-up to the previously posted RFC . 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 , 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
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 . 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.
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(-)
More information about the Intel-gfx