drm/nouveau: protect evo_wait/evo_kick sections with a channel mutex
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 2 Dec 2012 13:49:44 +0000 (14:49 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 20 Jan 2013 14:57:55 +0000 (15:57 +0100)
commit59ad1465423d968f06f243bc52cc3b1a320a27cf
treee565409bc6d08385bda2e6208f9781396bdf509b
parent7147573a5ce499dec3979e6b524691d47e1288d5
drm/nouveau: protect evo_wait/evo_kick sections with a channel mutex

With per-crtc locks modeset operations can run in parallel, and the
cursor code uses the device-global evo master channel for hw frobbing.
But the pageflip code can also sync with the master under some
circumstances. Hence just wrap things up in a mutex to ensure that
pushbuf access doesn't intermingle.

The approach here is a bit overkill since the per-crtc channels used
to schedule the pageflips could probably be used without this pushbuf
locking, but I'm not familiar enough with the nouveau codebase to be
sure of that.

v2: Add missing mutex_init to avoid angering lockdep.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/nouveau/nv50_display.c