drm/nouveau/tmr: fully separate alarm execution/pending lists
authorBen Skeggs <bskeggs@redhat.com>
Mon, 5 Jun 2017 07:23:32 +0000 (17:23 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Tue, 6 Jun 2017 04:04:07 +0000 (14:04 +1000)
commitb4e382ca7586a63b6c1e5221ce0863ff867c2df6
treee2410363af583b24d212c6f116a868ae6f718fea
parent8fa4338acca96cbc231e4125229632e879476464
drm/nouveau/tmr: fully separate alarm execution/pending lists

Reusing the list_head for both is a bad idea.  Callback execution is done
with the lock dropped so that alarms can be rescheduled from the callback,
which means that with some unfortunate timing, lists can get corrupted.

The execution list should not require its own locking, the single function
that uses it can only be called from a single context.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Cc: stable@vger.kernel.org
drivers/gpu/drm/nouveau/include/nvkm/subdev/timer.h
drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.c