This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3359 CPU frequency changes while running

Hi,

I have an application that runs under Arago with kernel 3.12.10.  One part of the application makes heavy use of the DCAN peripheral.  I have found that under relatively heavy load on the CAN bus my application will run well for an indeterminate length of time (1 minute up to several hours).  By heavy load I mean it has to process as many as 1500 messages per second.  I have found that under such (heavy but shouldn't be) load the CPU frequency will randomly get scaled back from 600 Mhz to around 45-60 Mhz.  I have no idea what is causing this to happen.

I have never seen this happen when CAN data is not being handled, or when the frequency of incoming CAN message is low (eg 10 Hz).  I have seen it happen when the only user space application is candump.  Therefore it isn't a problem with the application that we have written.

The kernel was built with CPU frequency scaling enabled.  But the only permitted frequencies are 300,000 and 600,000.  But the apparent reduction in speed was down to 60,000 or even lower.  I am not sure how that is possible.  When seen it was possible to recover by setting the CPU frequency to 300,000 and then to 600,000.  Setting directly to 600,000 had no effect, presumably because the driver thought that the frequency was already at 600,000.

The problem appears to have been solved by rebuilding the kernel without any of the CPU frequency scaling functionality.  Now whatever was causing the problem is being stymied.

I really want to understand what has happened here.  Has anyone else seen this problem?  Has anyone managed to find the root cause?