From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> I've talked about making blocking commits lockless a few times in the past, so here's finally an attempt at it. The main benefit I see from this is that TEST_ONLY commits no longer getting blocked on the mutexes by parallel blocking commits. I have a small test here that spools up two threads, one does just TEST_ONLY commits in a loop, the other does either blocking or non-blocking page flips. Results came out as follows on a snb machine here: test-only-vs-non-blocking: -85319 TEST_ONLY commits in 2000000 usecs, 23 usecs / commit +87144 TEST_ONLY commits in 2000006 usecs, 22 usecs / commit test-only-vs-blocking: -219 TEST_ONLY commits in 2001768 usecs, 9140 usecs / commit +82442 TEST_ONLY commits in 2000011 usecs, 24 usecs / commit Now, I have no idea if anyone actually cares about lack of parallelism due to locked blocking commits or not. Hence Cc'd some compositor folks as well. I guess this is more of an RFC at this point. Also curious to see if CI goes up in smoke or not... Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> Cc: Rob Clark <robdclark@xxxxxxxxx> Cc: Simon Ser <contact@xxxxxxxxxxx> Cc: Pekka Paalanen <pekka.paalanen@xxxxxxxxxxxxx> Cc: Jonas Ådahl <jadahl@xxxxxxxxx> Ville Syrjälä (4): drm/atomic: Treat a nonblocking commit following a blocking commit as blocking commit drm/i915: Don't reuse commit_work for the cleanup drm/atomic: Allow lockless blocking commits drm/i915: Make blocking commits lockless drivers/gpu/drm/drm_atomic.c | 32 +++++++++++++++++-- drivers/gpu/drm/drm_atomic_helper.c | 19 +++++++---- drivers/gpu/drm/drm_atomic_uapi.c | 11 +++++-- drivers/gpu/drm/i915/display/intel_display.c | 15 +++------ .../drm/i915/display/intel_display_types.h | 1 + include/drm/drm_atomic.h | 8 +++++ 6 files changed, 64 insertions(+), 22 deletions(-) -- 2.35.1