From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> The plane updates are still taking far too long, at least with heavy kernel debug knobs turned on. Using kms_atomic_transitions I'm currently seeing numbers as high as 170 usec on my VLV. To combat lockdep the most beneficial thing is taking the uncore.lock around the entire pipe update. Combined with all the other optimizations here I was able to push the max duration below 60 usec with my debug kernel. The pre-compute stuff isn't supremely important with lockdep/etc. turned on, but once those are turned off the few usec saved by the other optimizations start to matter. With all the optimization and a less debug heavy kernel I was able to get the max duration to around 15 usec. It was around 25 usec with the current code. Mika was saying that he's still seeing huge numbers (as high as 400 usec) with the current drm-tip, and that wasn't even with a particularly debug heavy kernel. One theory is that there's contention on the uncore.lock. So I'm thinking we may want to split the lock into two; one for gt, the other for display. Not starving the GPU by hogging the shared lock for display stuff might also be a good thing. I've not tried playing with more GPU heavy scenarios yet Anyways, running out of time to play with this more today so I figured I'd post what I have now. Series available here: git://github.com/vsyrjala/linux.git plane_update_optimization Ville Syrjälä (14): drm/i915: Extract skl_plane_ctl() drm/i915: Use skl_plane_ctl() for the SKL "sprite" planes drm/i915: Extract i9xx_plane_ctl() drm/i915: Extract vlv_sprite_ctl() drm/i915: Extract ivb_sprite_ctl() drm/i915: Extract ilk_sprite_ctl() drm/i915: Extract i845_cursor_ctl() and i9xx_cursor_ctl() drm/i915: Pre-compute plane control register value drm/i915: Introduce i9xx_check_plane_surface() drm/i915: Eliminate ironlake_update_primary_plane() drm/i915: Use i9xx_check_plane_surface() for sprite planes as well drm/i915: Keep vblanks enabled during the entire pipe update WIP/drm/i915: Protect the entire pipe update with uncore.lock WIP/drm/i915: Nuke posting reads from plane updates drivers/gpu/drm/i915/i915_irq.c | 66 ++++-- drivers/gpu/drm/i915/i915_trace.h | 28 +-- drivers/gpu/drm/i915/intel_display.c | 436 +++++++++++++++++------------------ drivers/gpu/drm/i915/intel_drv.h | 16 +- drivers/gpu/drm/i915/intel_pm.c | 11 +- drivers/gpu/drm/i915/intel_sprite.c | 355 ++++++++++++---------------- 6 files changed, 440 insertions(+), 472 deletions(-) -- 2.10.2 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx