From 5c4c778c0d7d3f4749efade3b1023b8b22c029a9 Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Fri, 2 May 2008 00:52:21 +1000 Subject: nouveau: restore original NV_PFIFO_CACHES_REASSIGN value in fifo handler Doesn't fix any issue I've seen, but is a potential issue if a FIFO IRQ occurs during channel creation/takedown. --- shared-core/nouveau_irq.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'shared-core') diff --git a/shared-core/nouveau_irq.c b/shared-core/nouveau_irq.c index 85a70b55..ccbc7420 100644 --- a/shared-core/nouveau_irq.c +++ b/shared-core/nouveau_irq.c @@ -71,8 +71,9 @@ nouveau_fifo_irq_handler(struct drm_device *dev) { struct drm_nouveau_private *dev_priv = dev->dev_private; struct nouveau_engine *engine = &dev_priv->Engine; - uint32_t status; + uint32_t status, reassign; + reassign = NV_READ(NV03_PFIFO_CACHES) & 1; while ((status = NV_READ(NV03_PFIFO_INTR_0))) { uint32_t chid, get; @@ -121,7 +122,7 @@ nouveau_fifo_irq_handler(struct drm_device *dev) NV_WRITE(NV03_PFIFO_INTR_0, status); } - NV_WRITE(NV03_PFIFO_CACHES, 1); + NV_WRITE(NV03_PFIFO_CACHES, reassign); } NV_WRITE(NV03_PMC_INTR_0, NV_PMC_INTR_0_PFIFO_PENDING); -- cgit v1.2.3