[Nouveau] [PATCH] drm/nouveau: Ack interrupts for some fuc engines

Maarten Lankhorst maarten.lankhorst at canonical.com
Tue Mar 26 23:21:52 PDT 2013


Op 26-03-13 21:29, Marcin Slusarz schreef:
> 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 at gmail.com>
>>>> ---
>>>> 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");
> ?
>
That is only 1 of the 2 causes, the other is when it's a secret engine (CRYPT/BSP/VP for <nvd0) and the scrubber finished running. In that case it's not an error.

~Maarten


More information about the Nouveau mailing list