On Tue, Mar 26, 2013 at 07:29:24AM +0100, Maarten Lankhorst wrote: > Op 25-03-13 19:14, Marcin Slusarz schreef: > > On Mon, Mar 25, 2013 at 10:22:37AM +0100, Maarten Lankhorst wrote: > >> Fixes 100% cpu usage when the exit interrupt never got acked. > >> > >> Signed-off-by: Maarten Lankhorst <m.b.lankhorst@xxxxxxxxx> > >> --- > >> diff --git a/drivers/gpu/drm/nouveau/core/core/falcon.c b/drivers/gpu/drm/nouveau/core/core/falcon.c > >> index e05c157..b11c5f3 100644 > >> --- a/drivers/gpu/drm/nouveau/core/core/falcon.c > >> +++ b/drivers/gpu/drm/nouveau/core/core/falcon.c > >> @@ -229,6 +229,24 @@ _nouveau_falcon_fini(struct nouveau_object *object, bool suspend) > >> return nouveau_engine_fini(&falcon->base, suspend); > >> } > >> > >> +void > >> +nouveau_falcon_intr(struct nouveau_subdev *subdev) > >> +{ > >> + struct nouveau_falcon *falcon = (void*)subdev; > >> + u32 intr = nv_ro32(falcon, 0x008); > >> + > >> + nv_wo32(falcon, 0x004, intr); > >> + > >> + if (intr & 0x10) { > >> + intr &= ~0x10; > >> + > >> + nv_info(falcon, "Exit interrupt called\n"); > > Do you really want to print it at "info" level? How frequent it is? > It shouldn't be often, I want it to run at the error level since that usually > means the firmware exited prematurely/crashed and things go bad, but it > happens with the secret scrubber finishing on initialization too. That one > is harmless though. Maybe it should say: nv_error(falcon, "firmware exited prematurely\n"); ? > >> + } > >> + > >> + if (intr) > >> + nv_error(falcon, "Unhandled interrupt %08x\n", intr); > >> +} > >> + > >> int > >> nouveau_falcon_create_(struct nouveau_object *parent, > >> struct nouveau_object *engine, > > _______________________________________________ > > dri-devel mailing list > > dri-devel@xxxxxxxxxxxxxxxxxxxxx > > http://lists.freedesktop.org/mailman/listinfo/dri-devel > > > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel