It is not possible to set up MSI interrupts on devices which appear before a PCI Express root complex on Intel series 7/series 8 chipsets because the pci_msi_blacklisted() test fails (in dev/pci.c) The reason is that the method for setting the pcie_chipset variable is no longer valid. Most devices in a PCI Express system no longer have the PCI Express capability registers, unless they are PCI Express root complexes or PCI Express plug-in cards. An example is the XHCI controller in the 7-series chipset, which occurs at pci0:0:20:0 and has no PCI Express capability register, but is MSI-capable. Because none of the preceding devices have the PCI Express capability either, the MSI test fails. Fix: Need a different method to determine system PCI Express property How-To-Repeat: Boot FreeBSD on such a system and use pciconf to demonstrate that the XHCI has been set up with an IRQ and not MSI.
Adding john for commentary.
No, most devices in PCI-e systems do have these registers as they are required by the PCI-e standard. All of the PCI-e systems I have seen to date have PCI-e capabilities on 0:0:0:0 which is the very first PCI device enumerated. Please include a pciconf -lc from your system.
batch change: For bugs that match the following - Status Is In progress AND - Untouched since 2018-01-01. AND - Affects Base System OR Documentation DO: Reset to open status. Note: I did a quick pass but if you are getting this email it might be worthwhile to double check to see if this bug ought to be closed.