diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2017-05-11 02:53:42 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-05-25 09:44:36 -0400 |
commit | 16e10490d260493cec30c5e7adacf99ba304d8b9 (patch) | |
tree | 1e0abd4715bec97f1508b140db41860b7e1268c1 /drivers/gpu | |
parent | e8ee630591963610dd1b5ed9fdfb730c791bd52b (diff) |
drm/nouveau/tmr: ack interrupt before processing alarms
commit 3733bd8b407211739e72d051e5f30ad82a52c4bc upstream.
Fixes a race where we can miss an alarm that triggers while we're already
processing previous alarms.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv04.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv04.c b/drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv04.c index 7b9ce87f0617..7f48249f41de 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv04.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv04.c | |||
@@ -76,8 +76,8 @@ nv04_timer_intr(struct nvkm_timer *tmr) | |||
76 | u32 stat = nvkm_rd32(device, NV04_PTIMER_INTR_0); | 76 | u32 stat = nvkm_rd32(device, NV04_PTIMER_INTR_0); |
77 | 77 | ||
78 | if (stat & 0x00000001) { | 78 | if (stat & 0x00000001) { |
79 | nvkm_timer_alarm_trigger(tmr); | ||
80 | nvkm_wr32(device, NV04_PTIMER_INTR_0, 0x00000001); | 79 | nvkm_wr32(device, NV04_PTIMER_INTR_0, 0x00000001); |
80 | nvkm_timer_alarm_trigger(tmr); | ||
81 | stat &= ~0x00000001; | 81 | stat &= ~0x00000001; |
82 | } | 82 | } |
83 | 83 | ||