Update on interrupts.
Sorry for my "wall of text" posts.
But it's a lot of information to prosess on this topic.
After some googling I found some information, but why is it that I always end up with google translate from a chinese site?
This is, I would think, vital information to know when we're building systems based on vmware and multiple PCIe cards to provide functionality of some sort and need to use hardware passthrough to the VM's.
I was trying to figure out how to check how many interrupts a PCIe card has/needs. And how many a motherboard provides.
Anyway, one site state that the LSISAS9211-8i has 15 interrupts and support both MSI and MSI-X.
Seems that the PCIe 3.0 exclusive for the MSI-X might not be accurate since this is a PCIe 2.0 card.
From the wiki we know that the max for PCIe 2.0 is 32 interrupts.
So if I've had Windows as a VM and not adjusted the driver it would have used 32 interrupts instead of 15.
As I'm using FreeBSD with it, the VM only allocates the 15 that it needs.
But as we know, my motherboard can only handle 20, so... this is using 15 of them.
It's not hard to see that adding more PCIe cards will prevent me from using passthrough withouth complications.
Some info on how to acquire this information from vmware ESXi 5.1
First, we'll want to know how many vectors the motherboard provides.
SSH to the ESXi and run vmkvsitools to get some system info.
~ #vmkvsitools irqinfo
This will reveal the irq vectors, also, if you use "esxtop" and press "i" it will show you live info on the same vectors.
And, as shown in the previous post, "vsish -e ls /hardware/interrupts/vectorList/ |wc -l" also shows this information.
BTW: any of the three ways shows that my motherboard has 20 IRQ Vectors. Many of them shared (the LSI is in my case shared with ehci_hcd:usb1 when in PCIe slot 5)
Just to confirm that MSI/MSI-X is enabled on the system:
~ # vsish
/> cd hardware
/hardware/> cat msi
MSI state: 1 -> MSI/MSI-X is enabled.
(remember to type "exit" to quit vsish)
BTW: MSI/MSI-X can be disabled on a per VM basis to enable IOAPIC mode instead of MSI/MSI-X.
This is as far as I know vital to get the DVB-S2 card working without hickups.
Then I found that my LSI card is not using MSI/MSI-X, take a look at the vmkernel.log
cat /var/log/vmkernel.log | grep MSIX | more
It reveals that MSIX is loaded for two units only, the two ports of the onboard broadcom NIC.
Not a word on MSIX for the LSI card, strange.
And I can't find info om how to enable it either but I think it's enabled by default as MSI/MSI-X is the ESXi 5.1 default settings.
Anyway, my quest was to figure out how many interrupts my PCIe cards needs.
One way to do it seems to be to check in /proc, but that's not available in ESXi 5.1
That's not good, since I know that a view in /proc would have shown me "Total number of interrupts" and many other things.
Take a look at the output here:
http://www.vmadmin.co.uk/vmware/35-esxserver/216-esxqlogicqueuedepth
I'm supposed to use vmkvsitools instead but non of the functions gives me the number of interrupts.
vmkvsitools lspci is equal to the regular lspci.
vmkvsitools irqinfo is the same as esxtop with "i" passed to it.
vmkvsitools pci-info gives me the same value as lspci -p (the number 11, which is not the number of interrupts but the "old irq" equivalent if I understand it correctly (and I'm looking for the number 15 if the chinese site is to trust.
No help in one of the many esxcfg either.
And nothing I can find with the esxcli.
vsish under hardware gives me nothing either.
The TBS6981 uses IOAPIC instead of MSI/MSI-X so that's not important to know as I'll have to disable MSI for that one.
And the Intel NIC supports interrupt Levels: INTA, MSI, MSI-X. But I've not yet found out how many interrupts it has, but know that they can be moderatet through the driver.
So, does anyone know how to find a PCIe cards number of interrupts in ESXi 5.1?
And does anyone know how many the Supermicro X9SAE motherboard can provide? (and how many of them are not shared!)