drm/nouveau/timer: allow alarms to be cancelled
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
10caad339c
commit
6d1d1cc97b
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue