0
\$\begingroup\$

The PCIe spec says that only one of MSI or MSI-X can be enabled. Else system behavior is undefined. What is the reason behind this? What is the problem if both are enabled for a PCIe function? Thanks.

\$\endgroup\$
0
\$\begingroup\$

MSI-X is a superset of MSI, if I'm not mistaken. Thus, enabling MSI-X means you've got MSI. No sense in trying to do both.

\$\endgroup\$
  • \$\begingroup\$ I understand there is no need to do MSI when the superset MSIX is available. What I am curious is, is there any problem if both get enabled? \$\endgroup\$ – user7656686 Mar 17 '17 at 15:54
  • 1
    \$\begingroup\$ MSI-X is a very different capability from MSI, although it may utilise much of the same logic. pcisig.com/sites/default/files/specification_documents/… \$\endgroup\$ – Peter Smith Mar 17 '17 at 16:20
  • \$\begingroup\$ Hm, as far as I understood it, and kind of read the first page of that document, MSI and MSI-X have basically the same first 32 bit of the interrupt message, after which the MSI-X table comes in MSI-X; but, that document explicitly says "A function is permitted to implement both MSI and MSI-X", so my guess is that OP's simply encountering an arbitrary device restriction (without actual reason other than "we didn't implement it". \$\endgroup\$ – Marcus Müller Mar 17 '17 at 16:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.