Multiple MSI support on virtual box

Discussions related to using VirtualBox on Linux hosts.
Post Reply
anaconda
Posts: 1
Joined: 19. Sep 2018, 21:32

Multiple MSI support on virtual box

Post 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.
klaus
Oracle Corporation
Posts: 1133
Joined: 10. May 2007, 14:57

Re: Multiple MSI support on virtual box

Post 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.
Post Reply