lspci show non existing bus address for nic

Posted on

Problem :

I’m trying to determine which PCI express slot my nic is using (I need to check correct configuration). I’m using lspci and dmidecode for this but I can’t find the bus address from lspci in dmidecode

output of lspci is:

01:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)                                                       
01:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01)

the bus address is 01:00 it have 2 port 0 and 1

but the dmidecode -t 9 output does not show that slot

# dmidecode 2.12                                                                                                                                             
SMBIOS 2.7 present.                                                                                                                                          

Handle 0x0008, DMI type 9, 17 bytes                                                                                                                          
System Slot Information                                                                                                                                      
        Designation: SLOT 1                                                                                                                                  
        Type: 32-bit PCI                                                                                                                                     
        Current Usage: In Use                                                                                                                                
        Length: Other                                                                                                                                        
        ID: 0                                                                                                                                                
        Characteristics:                                                                                                                                     
                3.3 V is provided                                                                                                                            
                Opening is shared                                                                                                                            
                PME signal is supported                                                                                                                      
        Bus Address: 0000:08:1e.0                                                                                                                            

Handle 0x000D, DMI type 9, 17 bytes                                                                                                                          
System Slot Information
        Designation: SLOT 6
        Type: x16 PCI Express 3
        Current Usage: In Use
        Length: Long
        Characteristics:
                3.3 V is provided
                Opening is shared
                PME signal is supported
        Bus Address: 0000:01:01.0

also

lspci -s 01:01.0      does not give me anything

What this mean? how can i get the slot number and pci express version and width for my NIC?

also when i use:

lspci -vv

the output for the NIC is something like this:

...
            LnkCap: Port #0, Speed 5GT/s, Width x8, ASPM L0s, Exit Latency L0s <1us, L1 <8us
                    ClockPM- Surprise- LLActRep- BwNot-
            LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                    ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
            LnkSta: Speed 5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
            DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported
            DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled
            LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
                     Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                     Compliance De-emphasis: -6dB
...

The Width and Speed here is actual width and speed which the card is using or is what the card wish to use? (if I connect it to slower PCI will it be the same or will it show what the card is actually using?)

Thanks

Solution :

Some clarification is needed: first,

lspci -s 01:01.0 does not give me anything

This is because your NIC is on 01:00.0, not 01:01.0.

Second, there is some relation between lspci and dmidecode, but not a lot. Dmidecode, according to the manual

… is a tool for dumping a computer’s DMI (some say SMBIOS ) table contents in a human-readable format

while instead

lspci is a utility for displaying information about PCI buses in the system and devices connected to them.

There is overlap,not identity. In particular, the BIOS need not know anything about bus addresses.

You can find what kind of express card your system has via dmidecode:

     # dmidecode -t 9
     # dmidecode 2.12
     SMBIOS 2.5 present.

     Handle 0x000C, DMI type 9, 13 bytes
     System Slot Information
        Designation: SD CARD
        Type: Other
        Current Usage: In Use
        Length: Other
        Characteristics:
            3.3 V is provided
            Hot-plug devices are supported

      Handle 0x000D, DMI type 9, 13 bytes
      System Slot Information
        Designation: EXPRESS CARD
        Type: x1 PCI Express
        Current Usage: In Use
       Length: Other
       ID: 1
       Characteristics:
            3.3 V is provided
            Hot-plug devices are supported

In my case you can see that I have a express card of type x1 PCI Express. But this is all I will get out of the BIOS, no mention of Bus addresses.

In order to find your wireless, if you have an onboard card instead of a USB dongle, you can do the following:

     # dmidecode -t baseboard
     # dmidecode 2.12
     SMBIOS 2.5 present.

     Handle 0x0002, DMI type 2, 14 bytes
     Base Board Information
        Manufacturer: TOSHIBA
        Product Name: PORTEGE R930
        Version: Version A0
        Serial Number: C0CZA019
        Asset Tag: 0000000000
        Features:
            Board is a hosting board
        Location In Chassis: Center
        Chassis Handle: 0x0003
        Type: Motherboard

      Handle 0x000E, DMI type 10, 16 bytes
        On Board Device 1 Information
           Type: Other
           Status: Enabled
           Description: USB
        On Board Device 2 Information
           Type: Video
           Status: Enabled
           Description: VIDEO
        On Board Device 3 Information
           Type: Ethernet
           Status: Enabled
           Description: ETHERNET
        On Board Device 4 Information
           Type: Sound
           Status: Enabled
           Description: SOUND
        On Board Device 5 Information
           Type: Other
           Status: Enabled
           Description: WIRELESS LAN
        On Board Device 6 Information
           Type: Other
           Status: Enabled
           Description: WIRELESS WAN

You see that my baseboard has two slots for wireless, LAN and WAN.

As for the capabilities of your network card, in my case I have:

   # lspci -vvn -s 04:00.0
     04:00.0 0280: 8086:088e (rev 24)
     Subsystem: 8086:4060
     Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
     Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
     Latency: 0, Cache Line Size: 64 bytes
     Interrupt: pin A routed to IRQ 47
     Region 0: Memory at e2500000 (64-bit, non-prefetchable) [size=8K]
     Capabilities: [c8] Power Management version 3
            Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
            Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
     Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
            Address: 00000000fee003b8  Data: 0000
     Capabilities: [e0] Express (v1) Endpoint, MSI 00
            DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <512ns, L1 unlimited
                    ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
            DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
                    RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset-
                    MaxPayload 128 bytes, MaxReadReq 128 bytes
            DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
            LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 <32us
                    ClockPM+ Surprise- LLActRep- BwNot-
            LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+
                    ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
            LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
     Capabilities: [100 v1] Advanced Error Reporting
            UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
            UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
            UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
            CESta:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
            CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
            AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
     Capabilities: [140 v1] Device Serial Number c8-f7-33-ff-ff-4c-cc-e1
     Kernel driver in use: iwlwifi

From this you see clarly that the capabilities you are referring to are those of the link, not of the device. If you connect the same device to a slower slot, the Capabilities displayed will be inferior to those you see here because they are a property of the Link, not of the device.

Edit:

Just to clarify my reply to Jan’s question:I have a different system, where dmidecode says I have 4 components with Bus addresses:

          Bus Address: 0000:02:1c.1
          Bus Address: 0000:00:02.0
          Bus Address: 0000:00:19.0
          Bus Address: 0000:00:19.0

lspci instead reports the following peripherals:

          # lspci | cut -d: -f1-3 | awk '{print $1}'
            00:00.0
            00:02.0
            00:14.0
            00:16.0
            00:1a.0
            00:1b.0
            00:1c.0
            00:1c.1
            00:1c.3
            00:1d.0
            00:1f.0
            00:1f.2
            00:1f.3
            02:00.0
            03:00.0

Clearly, only one is correct (a Video card). The ethernet and wifi cards are both (?) reported by dmidecode as having bus address 00:19.0, while in reality they are at 02:00.0 and 03:00.0. Clearly, dmidecode is in error.

Leave a Reply

Your email address will not be published. Required fields are marked *