How to find out PCI version information in linux

How can I find out which PCI version (2.0 , 2.3) are supported by the motherboard - even for slots which do not have any cards connected to them.

lspci -vvv does not seem to show information for PCI slots without cards.


Solution 1:

You can try dmidecode. I don't have many servers with standard PCI slots anymore, but the output looks like the following. Information for unpopulated ports is provided:

Handle 0x0901, DMI type 9, 13 bytes
System Slot Information
        Designation: PCI   Slot 1
        Type: 64-bit PCI-X
        Current Usage: Available
        Length: Long
        ID: 1
        Characteristics:
                3.3 V is provided

Handle 0x0902, DMI type 9, 13 bytes
System Slot Information
        Designation: PCI   Slot 2
        Type: 64-bit PCI-X
        Current Usage: In Use
        Length: Long
        ID: 2
        Characteristics:
                3.3 V is provided

Handle 0x0903, DMI type 9, 13 bytes
System Slot Information
        Designation: PCI-E Slot 3
        Type: x4 PCI Express
        Current Usage: Available
        Length: Other
        ID: 3
        Characteristics:
                3.3 V is provided

Handle 0x0904, DMI type 9, 13 bytes
System Slot Information
        Designation: PCI-E Slot 4
        Type: x4 PCI Express
        Current Usage: In Use
        Length: Other
        ID: 4
        Characteristics:
                3.3 V is provided

Solution 2:

Actually lspci is capable of showing you information about your PCI-bus, which you can use to determine the supported version. But it requires additional steps.
Run lspci and look for entries that contain something like PCI bridge:. In those line(s) look for a number after a vendor name. That number is most likely the descriptor of your PCI bridge chipset, which you can look up with the searchengine of your choice with the added keyword "datasheet" to find - for example - a pdf from the manufacturer that lists its capabilities. This includes the supported pci version.

An example:

When I run

% lspci | grep "PCI bridge"

on my machine, that gives me two lines:

00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)

the second one there looks like our chip because the description does not contain AGP ;-)

Now I search for the number after the vendorname: 82801 and datasheet. That gives me a .pdf download from the intel website. In that PDF I search for specification and find Supports PCI Rev 2.2 Specification Tadaa thats the supported version for all ports that depend on that buscontroller

dmidecode is useful whenever you need information about such things as voltages or additional non-standard capabilities like SMBus support.