diff options
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_irq.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_irq.c b/drivers/gpu/drm/nouveau/nouveau_irq.c index 3b9bad66162a..baa9b3e0b66b 100644 --- a/drivers/gpu/drm/nouveau/nouveau_irq.c +++ b/drivers/gpu/drm/nouveau/nouveau_irq.c | |||
| @@ -211,6 +211,20 @@ nouveau_fifo_irq_handler(struct drm_device *dev) | |||
| 211 | get + 4); | 211 | get + 4); |
| 212 | } | 212 | } |
| 213 | 213 | ||
| 214 | if (status & NV_PFIFO_INTR_SEMAPHORE) { | ||
| 215 | uint32_t sem; | ||
| 216 | |||
| 217 | status &= ~NV_PFIFO_INTR_SEMAPHORE; | ||
| 218 | nv_wr32(dev, NV03_PFIFO_INTR_0, | ||
| 219 | NV_PFIFO_INTR_SEMAPHORE); | ||
| 220 | |||
| 221 | sem = nv_rd32(dev, NV10_PFIFO_CACHE1_SEMAPHORE); | ||
| 222 | nv_wr32(dev, NV10_PFIFO_CACHE1_SEMAPHORE, sem | 0x1); | ||
| 223 | |||
| 224 | nv_wr32(dev, NV03_PFIFO_CACHE1_GET, get + 4); | ||
| 225 | nv_wr32(dev, NV04_PFIFO_CACHE1_PULL0, 1); | ||
| 226 | } | ||
| 227 | |||
| 214 | if (status) { | 228 | if (status) { |
| 215 | NV_INFO(dev, "PFIFO_INTR 0x%08x - Ch %d\n", | 229 | NV_INFO(dev, "PFIFO_INTR 0x%08x - Ch %d\n", |
| 216 | status, chid); | 230 | status, chid); |
