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:
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:
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:
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:
499: 94766 94862 94826 94849 PCI-MSI-edge nvidia
We have a strange assortment of gear here. Keeps life interesting.