Page 1 of 1

Multiple MSI support on virtual box

Posted: 19. Sep 2018, 21:39
by anaconda
Hello all,

I have a custom PCIe endpoint (generic endpoint supporting basic capabilities) and that sets Multiple MSI capability IRQ vectors to 16. But as I run the x86_64 bit ubuntu desktop OS which has the host controller that configures MSI Enable vectors[bits 6:4 in MSI control register], it always returns 1 MSI as configured.

Hence, multiple MSI is not being supported.

My kernel code path shows that PCI-MSI controller is being used which is not supporting MULTI MSI capability. I have turned on all the required IRQ_REMAP, PCI_MSI, PCI_DOMAINS*, etc.. that I seem are required to turn on the multiple MSI support by making use of the IR-PCI-MSI controller domain. But everything went in vain.

Require some help from virtual box experts regarding below queries:

- Does generic ACPI table supplied to ubuntu 18.04 64 bit OS has any effect on deciding the MSI controller being used during pci scanning?
If so, what steps do I need to consider to turn on multiple msi support.

- I could see the TI's endpoint test driver functionality works properly on ARM architecture. But on x86 it fails.

Any suggestions regarding the same are appreciated.

THanks in advance.

Re: Multiple MSI support on virtual box

Posted: 27. Sep 2018, 21:40
by klaus
Multiple MSI support in Linux is bolted to the presence of an IOMMU. No idea why, but it's a fact. VirtualBox doesn't expose an IOMMU to its VMs. Guess you can figure it out from there.

Adding IOMMU support to VirtualBox is a non-trivial amount of work and so far the impact is pretty much non-existing: none of the devices emulated by VirtualBox need multiple MSI support.

On the other hand: MSI-X is not affected by this Linux peculiarity, so that might be an easy way for dealing with this sort of need.