Subject: Re: [PATCH] can: flexcan: fix irq flooding by clearing all interrupt sources

From: Wolfgang Grandegger <[email-masked]>
Date: Tue, 13 Dec 2011 13:13:34 +0100

On 12/12/2011 04:44 PM, Wolfgang Grandegger wrote:
> On 12/12/2011 04:31 PM, Marc Kleine-Budde wrote:
>> On 12/12/2011 04:09 PM, Wolfgang Grandegger wrote:
>>> As pointed out by Reuben Dowle and Lothar Waßmann, the TWRN_INT,
>>> RWRN_INT, BOFF_INT interrupt sources need to be cleared as well
>>> to avoid interrupt flooding, at least for the Flexcan on i.MX28
>>> SOCs. Furthermore, the interrupts are only cleared, if really one
>>> of those interrupt sources are pending (which is not the case for
>>> rx and tx done).
>>>
>>> CC: Reuben Dowle <[email-masked]>
>>> CC: Lothar Waßmann <[email-masked]>
>>> Signed-off-by: Wolfgang Grandegger <[email-masked]>
>>
>> Have you tested on mx25/mx35, does it have any negative side effects?
>> My schedule is full until Friday, sorry cannot test here.
> 
> Not yet. But it's not critical. Only the pending interrupt flags are
> cleared. Maybe somebody else out there could do some testing... before I
> get hold of a MX35PDK board.

I got my MX35PDK board working and can confirm, that the patch works on
a i.mx35 as well. My testing also confirms, that the ESR TWRN_INT,
RWRN_INT, FLEXCAN_ESR_BOFF_INT do not function as documented. These
flags do show up once, together with ERR_INT, and then, after clearing,
never again. Obviously a bug in the Flexcan logic. From the feedback we
can say, that only the i.MX28 does behave differently (==correctly). All
other seem to work with the current code:

 Flexcan on
 - i.mx25
 - i.mx35
 - i.mx53
 - P1010/P1020

Wolfgang.