Linux – How many hardware (PCI-MSI) interrupts can a PC have

ethernethardwarelinuxnetworking

On my workstation I got only two PCI-MSI interrupts in /proc/interrupts:

  0:   11726919          0    IO-APIC-edge  timer
  1:          3          0    IO-APIC-edge  i8042
  7:          0          0    IO-APIC-edge  parport0
  8:          1          0    IO-APIC-edge  rtc
  9:          0          0   IO-APIC-level  acpi
 12:          4          0    IO-APIC-edge  i8042
 58:         13      94016         PCI-MSI  eth0
169:     843271   71766622   IO-APIC-level  uhci_hcd:usb3, eth1, HDA Intel
201:          1          0   IO-APIC-level  uhci_hcd:usb4, uhci_hcd:usb6
209:          0          0   IO-APIC-level  ehci_hcd:usb1
217:          2          0   IO-APIC-level  ehci_hcd:usb2, uhci_hcd:usb5
225:         27   72309141   IO-APIC-level  uhci_hcd:usb7, eth2
233:       6683     103839         PCI-MSI  ahci
NMI:       2236       4056
LOC:   11696665   11696593
ERR:          0
MIS:          0

On other, much stronger RACK Dell machine (8 cores), there are seven such interrupts.

Does this depend on number of processors? Is IO-APIC-level a software interrupt?

I want to assign PCI-MSI interrupts to my network cards to improve performance.

Best Answer

IIRC PC can have any number of MSI interrupts. But each device is limited to 32 (for PCI 2.2) or 2048 (for PCI 3.0) MSI interrupts.

See also wiki about Message Signaled Interrupts