aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nouveau_state.c
diff options
context:
space:
mode:
authorMarcin Koƛcielnicki <koriakin@0x04.net>2010-02-28 19:18:39 -0500
committerBen Skeggs <bskeggs@redhat.com>2010-03-10 01:07:02 -0500
commit304424e17dd904cef048ef8966d9f54618a915cc (patch)
tree43bc2c01d700eb8225380eaa0ba2cab637d6c3c1 /drivers/gpu/drm/nouveau/nouveau_state.c
parent3bf777bf0ab112527cea103c3681934a9f41c03d (diff)
drm/nv50: Improve PGRAPH interrupt handling.
This makes nouveau recognise and report more kinds of PGRAPH errors, as well as prevent GPU lockups resulting from some of them. Lots of guesswork was involved and some part of this is probably incorrect. Some potential-lockuop situations are handled by just resetting a whole PGRAPH subunit, which doesn't sound like a "proper" solution, but seems to work just fine... for now. Signed-off-by: Marcin Koƛcielnicki <koriakin@0x04.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_state.c')
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_state.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
index 516a8d36cb10..f4ea3e61c094 100644
--- a/drivers/gpu/drm/nouveau/nouveau_state.c
+++ b/drivers/gpu/drm/nouveau/nouveau_state.c
@@ -34,7 +34,6 @@
34#include "nouveau_drm.h" 34#include "nouveau_drm.h"
35#include "nv50_display.h" 35#include "nv50_display.h"
36 36
37static int nouveau_stub_init(struct drm_device *dev) { return 0; }
38static void nouveau_stub_takedown(struct drm_device *dev) {} 37static void nouveau_stub_takedown(struct drm_device *dev) {}
39 38
40static int nouveau_init_engine_ptrs(struct drm_device *dev) 39static int nouveau_init_engine_ptrs(struct drm_device *dev)
@@ -276,8 +275,8 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
276 engine->timer.init = nv04_timer_init; 275 engine->timer.init = nv04_timer_init;
277 engine->timer.read = nv04_timer_read; 276 engine->timer.read = nv04_timer_read;
278 engine->timer.takedown = nv04_timer_takedown; 277 engine->timer.takedown = nv04_timer_takedown;
279 engine->fb.init = nouveau_stub_init; 278 engine->fb.init = nv50_fb_init;
280 engine->fb.takedown = nouveau_stub_takedown; 279 engine->fb.takedown = nv50_fb_takedown;
281 engine->graph.grclass = nv50_graph_grclass; 280 engine->graph.grclass = nv50_graph_grclass;
282 engine->graph.init = nv50_graph_init; 281 engine->graph.init = nv50_graph_init;
283 engine->graph.takedown = nv50_graph_takedown; 282 engine->graph.takedown = nv50_graph_takedown;