The patches have changed quite a bit since the RFC, and therefore I didn't feel comfortable trying to do v2 information. I didn't feel comfortable taking the few r-bs that I had from the RFC except for the one patch that I applied wholesale. Summary: - Completely redid the patch splitting. The number of patches increased, but LOC is about the same, and a handful of the new patches are either because of more splitting, or completely new bits. - Reference counted context allows freeing the data structure and freeing the BO independently. This is probably the most significant change. - Convert ILK RC6 code to use context code. I'm hopefuly this will make things more stable, but have no proof. - Added trace events for context create/destroy/switch. - Only support render ring context switch (previous code supported any ring, though media ring is the only other ring which *should* work). Testing summary. ILK RC6, just booted to desktop SNB module load/unload testing 20 consecutive suspend resume cycles nexuiz with experimental mesa piglit quick.tests with experimental mesa I've seen time-elapsed, and polygonOffset intermittently fail, I believe this is caused by the following... Missed IRQs now seem to occur once every other piglit run. I have some new code to try to fix this... coming soon, I hope. IVB No testing done since RFC I'll respond to this email with links to what I used to test (code is currently not in pushable form). kernel libdrm mesa intel-gpu-tools Thanks to Chris Wilson, Daniel Vetter, and Eric Anholt for providing useful feedback in the RFC. Ben Widawsky (18): drm/i915: CXT_SIZE register offsets added drm/i915: preliminary context support drm/i915: context basic create & destroy drm/i915: add context information to objects drm/i915: context switch implementation drm/i915: trace events for contexts drm/i915: Ivybridge MI_ARB_ON_OFF context w/a drm/i915: PIPE_CONTROL_TLB_INVALIDATE drm/i915: possibly invalidate TLB before context switch drm/i915: use the default context drm/i915: switch to default context on idle drm/i915: try to reset the gpu before unload drm/i915/context: create & destroy ioctls drm/i915/context: switch contexts with execbuf2 drm/i915/context: add params drm/i915/context: anonymous context interfaces drm/i915: Ironlake rc6 can use context interfaces drm/i915: try to enable rc6 on Ironlake... again drivers/gpu/drm/i915/Makefile | 1 + drivers/gpu/drm/i915/i915_debugfs.c | 8 +- drivers/gpu/drm/i915/i915_dma.c | 9 + drivers/gpu/drm/i915/i915_drv.c | 1 + drivers/gpu/drm/i915/i915_drv.h | 43 ++- drivers/gpu/drm/i915/i915_gem.c | 11 + drivers/gpu/drm/i915/i915_gem_context.c | 513 ++++++++++++++++++++++++++++ drivers/gpu/drm/i915/i915_gem_execbuffer.c | 6 + drivers/gpu/drm/i915/i915_reg.h | 26 ++ drivers/gpu/drm/i915/i915_trace.h | 59 ++++ drivers/gpu/drm/i915/intel_display.c | 95 +----- drivers/gpu/drm/i915/intel_ringbuffer.c | 49 +++ drivers/gpu/drm/i915/intel_ringbuffer.h | 11 + include/drm/i915_drm.h | 21 +- 14 files changed, 755 insertions(+), 98 deletions(-) create mode 100644 drivers/gpu/drm/i915/i915_gem_context.c -- 1.7.9.4