View Single Post
Old 10-20-08, 10:54 PM   #15
etherfish
Registered User
 
Join Date: Nov 2007
Posts: 18
Default Re: What better, PCI-X MSI or Wired IRQ? [177.80]

Message Signaled Interrupts offer more than just a unique interrupt vector per device. As you said earlier, almost all device drivers handling interrupts will interrogate the device upon receipt of an interrupt to identify why the hardware sent the interrupt. Some situations, for example, an ethernet card indicating successful transmission of a pending packet, require little or no further effort nor deserve very high priority whereas other events, like the real-time clock require immediate attention. A device can use multiple message signaled interrupts simultaneously, for example the nforce ethernet in my sun ultra 40, show the following:
Code:
1263:         10       4434      11219  146033543   PCI-MSI-edge      eth0
1264:         35       4328     112565    3247738   PCI-MSI-edge      eth0
1265:         40       7271     164638    4115946   PCI-MSI-edge      eth0
I assume that the different interrupts correspond to different types of events and have different priorities.

Also, to the best of my understanding, one important feature is that the hardware can transmit, with the interrupt signal message, a device specific piece of information. The successful packet transmission situation I described above, for example, is a situation where all the driver must do is query the card for the interrupt condition and the descriptor corresponding to the transmitted packet. It must then inform the upper layers of the operating system that it can recover the memory used to store the pending packet, but otherwise requires no other interaction with the card. Using messages in this approach would allow the interrupt service routine to handle this accounting on a lower priority queue without any need for device interaction.

Also, here are my, "it works for me and works great!" chime-ins:
Code:
1261:          0         35        917    1451386   PCI-MSI-edge      nvidia
1262:          0         39        811    1451626   PCI-MSI-edge      nvidia
This is from a Sun Ultra 40 M2, dual Opteron 2222HE's, dual GeForce 8400 GS's on seperate x16 channels.

Next is from a Dell T7400, with dual Xeon X5472's and two Quadro 570's:
Code:
498:      16732      16785      16788      16880      16923      17094      16853      16876   PCI-MSI-edge      nvidia
499:      32678      32508      32837      32461      32768      32751      32418      32702   PCI-MSI-edge      nvidia
Next is from a dual, dual-core MacPro (one of the early xeon ones.) with a Quadro FX 3500:
Code:
499:      94766      94862      94826      94849   PCI-MSI-edge      nvidia
We have a strange assortment of gear here. Keeps life interesting.
etherfish is offline   Reply With Quote