High number of USB interrupts/s on an idle system

Martin Sperl kernel at martin.sperl.org
Sun Dec 1 13:43:35 PST 2013

Thanks - that explains it for the most parts.

I just thought it looked strange comparing it to an idle system with the 
foundation kernels/drivers and thus wanted to give a head-up about this 
"strange" observation on a totally idle system.


On 01.12.2013, at 21:21, Gordon Hollingworth wrote:

> There is a start of frame interrupt that is normally enabled 100% of the
> time giving you 8000 interrupts per second even when idle.  The reason it
> is enabled is that at each interrupt the driver checks the schedule to see
> if there are any transactions that need scheduling in the next uframe.
> The FIQ code on the downstream driver was originally inserted (by yours
> truly!) to reduce this interrupt overhead by only tripping a FIQ (which
> can be processed much quicker and with far less code than the interrupt
> handler) which will check to see if any scheduling needs to take place.
> If it does then the FIQ triggers an IRQ to actually process the start of
> frame interrupt and send the transaction.
> In terms of the MMC controller, in the linux kernel the mmc driver sends a
> SEND_STATUS command around twice a secondŠ  I don't think you should see
> more than a couple of interrupts to process that
> Gordon
> On 01/12/2013 18:47, "Stephen Warren" <swarren at wwwdotorg.org> wrote:
>> On 11/29/2013 04:09 AM, martin sperl wrote:
>>> Hi!
>>> I have done the setup of the RPI using Stephens "vanilla" tree (commit:
>>> d5d9894) and the steps from his blog with regards to uboot, the usb
>>> power-on hack in uboot, ...
>>> The thing is that I see high interrupt rates on the board even when the
>>> system is totally idle.
>> The USB HW block requires SW to service an interrupt for every USB
>> frame(?). Whether that should be needed when the HW is idle, I have no
>> idea. I guess it's quite possible the interrupt needs to stay enabled in
>> order to e.g. interrupts to be delivered back up the chain.
>> ...
>>> I also wonder why I would have 1 MMC interrupt/s, when there is nothing
>>> happening really on the SD-card...
>> There are probably many possible reasons; swap, flushing disk buffers,
>> polling the card to make sure it's still present(?), ... I imagine you'd
>> need to explicitly instrument the driver to dump commands to tell if you
>> really want to know.
>> _______________________________________________
>> linux-rpi-kernel mailing list
>> linux-rpi-kernel at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-rpi-kernel

More information about the linux-rpi-kernel mailing list