5

What are the sources of interrupts on the Raspberry Pi. I currently have the model B, rev. 2.0.

Example itop output:

INT                NAME          RATE             MAX
  3 [      8 Timer Tick]    20 Ints/s     (max:    20)
 32 [g, dwc_otg_pcd, dw]   304 Ints/s     (max:   319)
 52 [8 GPIO catchall ha]     0 Ints/s     (max:     0)
 65 [         ilbox IRQ]     2 Ints/s     (max:     2)
 66 [          doorbell]     0 Ints/s     (max:     0)
 75 [          doorbell]     0 Ints/s     (max:     0)
 77 [     8_sdhci (dma)]     0 Ints/s     (max:     0)
 83 [              l011]     0 Ints/s     (max:     0)
 84 [              l011]     1 Ints/s     (max:     1)

cat /proc/interrupts

           CPU0       
  3:      24988   ARMCTRL  BCM2708 Timer Tick
 32:     365683   ARMCTRL  dwc_otg, dwc_otg_pcd, dwc_otg_hcd:usb1
 52:          0   ARMCTRL  BCM2708 GPIO catchall handler
 65:       2583   ARMCTRL  ARM Mailbox IRQ
 66:          1   ARMCTRL  VCHIQ doorbell
 75:          1   ARMCTRL
 77:       7076   ARMCTRL  bcm2708_sdhci (dma)
 83:         19   ARMCTRL  uart-pl011
 84:      11515   ARMCTRL  mmc0
FIQ:              usb_fiq
Err:          0

For now, I've figured out that dwc_otg, dwc_otg_pcd, dwc_otg_hcd:usb1 are hardware interrupts for both the ethernet and usb.

Where are the higher frequency timer interrupts?

  • 1
    VCHIQ is used by the sound card driver. – goldilocks Jul 29 '13 at 17:20
  • 1
    Note "iotop" should be "itop". I will edit the original question to reflect that. – Richm Jul 29 '13 at 20:00
2

The timer interrupts come in on interrupt 3. In your example this only shows them coming at a rate of 20 per second. This is due to processor power saving features that reduce the frequency of the timer interrupts when the processor is not busy. In my Pi I see 20 per second much of the time but a couple of times a minute it jumps to 1000/second when there are things to do.

The exact interrupts shown will differ depending on what devices are present and which drivers are loaded. The linux kernel source contains a table of the assignments that could appear in arch/arm/mach-bcm2708/include/mach/platform.h

To get the actual mappings between devices and interrupts you have to dig around in the various files in arch/arm/mach-bcm2708.

Note that itop seems to corrupt the device name output (it copies the previous interrupt name if an interrupt does not have one assigned) and seems to truncate at whitespace in places.

The /proc/interrupts output names give good clues to the device attached. I believe the following are correct.

           CPU0       
  3:      24988   ARMCTRL  BCM2708 Timer Tick

system timer - the timer that is used for process scheduling and kernel housekeeping

 32:     365683   ARMCTRL  dwc_otg, dwc_otg_pcd, dwc_otg_hcd:usb1

USB/ethernet

 52:          0   ARMCTRL  BCM2708 GPIO catchall handler

GPIO device driver

 65:       2583   ARMCTRL  ARM Mailbox IRQ
 66:          1   ARMCTRL  VCHIQ doorbell

GPU communications interrupts

 75:          1   ARMCTRL

Alternate USB interrupt for some configurations

 77:       7076   ARMCTRL  bcm2708_sdhci (dma)

SD card dma access?

 83:         19   ARMCTRL  uart-pl011

Serial port uart

 84:      11515   ARMCTRL  mmc0

SD card access

FIQ:              usb_fiq
Err:          0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.