If you run 'pci -v' you will see all of the capabilities for all of the devices. The MSI or MSIX interrupt is only assigned once a pci_attach_device() has been performed, so if there is no driver running against a MSI or MSIX capable device, you will see the standard IRQ interrupt. See the attached pci.txt file where the gigabit Ethernet device has been assigned MSIX interrupts.

-- 
Hugh Brown
QNX Software Systems Limited
1001 Farrar Rd.,
Ottawa. ON. K2K 0B3.
Telephone: 613-591-0931



From: Armin Steinhoff <community-noreply@qnx.com>
Reply-To: "general-community@community.qnx.com" <general-community@community.qnx.com>
Date: Wednesday, 4 July, 2012 2:33 PM
To: "general-community@community.qnx.com" <general-community@community.qnx.com>
Cc: Info System - IS Notifications <is-notifications@qnx.com>, Info System - IS Notifications <is-notifications@qnx.com>, Info System - IS Notifications <is-notifications@qnx.com>, Info System - IS Notifications <is-notifications@qnx.com>
Subject: Re: PCI Express

Hugh Brown wrote:
The PCI server enables either the MSI or MSIX capability depending on
which is selected and also assigns MSI/X IRQ numbers to the device. Is
this what you are talking about?

Yes and No.
From the example provided by the pci_attach_device documentation:

if (pci_read_config8 (bus, devfn, cap_ptr, 1, &cap))  <<<--- that means the OS must set the capabilities before
                                                                                 <<<--- but in the dumps of pci or lspci  I saw
                                                                                 <<<--- never entries of the MSI capabilities of PCIe devices
    return (-1);
if (cap == PCI_CAP_MSI)

The assigned IRQ seems alway connected to an INTx line ... which is the default non MSI mapping.

Regards

--Armin