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.