From 216d9cbd14ad6b2dfdbfcf98843ae6519b1d759f Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Fri, 26 Apr 2013 09:17:22 +1000 Subject: [PATCH] --- yaml --- r: 371605 b: refs/heads/master c: 6d1d1cc97b8b24e9f7842de13f4b00393392c990 h: refs/heads/master i: 371603: d6bae2a10e39031f3eb71d11c2a4d2090a42e70f v: v3 --- [refs] | 2 +- .../gpu/drm/nouveau/core/subdev/timer/nv04.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 1960b9384be7..74eba3d8311f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 10caad339c458df47e5a9e16e148087fcde98fec +refs/heads/master: 6d1d1cc97b8b24e9f7842de13f4b00393392c990 diff --git a/trunk/drivers/gpu/drm/nouveau/core/subdev/timer/nv04.c b/trunk/drivers/gpu/drm/nouveau/core/subdev/timer/nv04.c index 8e1bae4f12e8..9469b8275675 100644 --- a/trunk/drivers/gpu/drm/nouveau/core/subdev/timer/nv04.c +++ b/trunk/drivers/gpu/drm/nouveau/core/subdev/timer/nv04.c @@ -96,11 +96,16 @@ nv04_timer_alarm(struct nouveau_timer *ptimer, u64 time, /* append new alarm to list, in soonest-alarm-first order */ spin_lock_irqsave(&priv->lock, flags); - list_for_each_entry(list, &priv->alarms, head) { - if (list->timestamp > alarm->timestamp) - break; + if (!time) { + if (!list_empty(&alarm->head)) + list_del(&alarm->head); + } else { + list_for_each_entry(list, &priv->alarms, head) { + if (list->timestamp > alarm->timestamp) + break; + } + list_add_tail(&alarm->head, &list->head); } - list_add_tail(&alarm->head, &list->head); spin_unlock_irqrestore(&priv->lock, flags); /* process pending alarms */