Bug 72681

Summary: Access to physical PCI slot number even if the slot is not hotplug capable
Product: Drivers Reporter: Cristina (colariu)
Component: PCIAssignee: drivers_pci (drivers_pci)
Status: NEW ---    
Severity: enhancement CC: bjorn, colariu, federico.vaga
Priority: P1    
Hardware: i386   
OS: Linux   
Kernel Version: 3.4.67 Subsystem:
Regression: No Bisected commit-id:
Attachments: Output of dmesg and lspci -vv
lspci (slot 10 occupied)
lspci (slot 11 occupied)
biosdecode output with a backplane without bridges
biosdecode output with a backplane with bridges

Description Cristina 2014-03-21 21:44:09 UTC
Created attachment 130261 [details]
Output of dmesg and lspci -vv

Hello All,

I'm trying to associate all network interfaces on my linux host with their corresponding network ports.

For PCIe hotplug slots, this could be done easily using the info exposed in sysfs by the pci_slot driver.

The PCIe slots on my platform don't support hotplug so I cannot use the pci_slot.

My question is: could it be possible to export the physical PCI slot number even if hotplug is not implemented?


Thank you,

Cristina
Comment 1 Bjorn Helgaas 2014-07-07 17:25:38 UTC
Created attachment 142321 [details]
lspci (slot 10 occupied)

Federico Vaga reported a similar problem [1].  He wants to associate a device with a physical slot, but Linux doesn't expose any slot number information, partly because the system doesn't support hotplug.  This lspci output is with a card in slot 10:

  00:01.0 82Q35 Root Port to [bus 05]          PCIe SltCap slot #21
  05:00.0 CERN/ECP/EDU Device                  slot 10
  00:1c.0 82801I Express Port 1 to [bus 04]    PCIe SltCap slot #22
  00:1c.3 (not present at all)
  00:1c.4 82801I Express Port 5 to [bus 03]    PCIe SltCap slot #0
  03:00.0 Realtek NIC

[1] http://lkml.kernel.org/r/280883016.9onmf0miLq@pcbe13110.cern.ch
Comment 2 Bjorn Helgaas 2014-07-07 17:32:06 UTC
Created attachment 142331 [details]
lspci (slot 11 occupied)

This lspci output is with a card in slot 11:

  00:01.0 (not present at all)
  00:1c.0 82801I Express Port 1 to [bus 05]    PCIe SltCap slot #22
  00:1c.3 82801I Express Port 4 to [bus 04]    PCIe SltCap slot #25
  04:00.0 CERN/ECP/EDU Device                  slot 11
  00:1c.4 82801I Express Port 5 to [bus 03]    PCIe SltCap slot #0
  03:00.0 Realtek NIC

Note that the BIOS disabled the 00:01.0 Root Port and changed the bus numbering a bit.  So the PCI bus numbers are not a reliable way to associate a device with a slot.  The PCIe SltCap slot numbers might be useful, but we don't currently expose them.
Comment 3 Federico Vaga 2014-07-08 07:26:54 UTC
Here the output of biosdecode when the card is in slot 11
---------------------------------------------------------

# biosdecode 2.12
BIOS32 Service Directory present.
	Revision: 0
	Calling Interface Address: 0x000E6810
PCI Interrupt Routing 1.0 present.
	Router ID: 00:1f.0
	Exclusive IRQs: None
	Compatible Router: 8086:2914
	Slot Entry 1: ID 00:02, on-board
	Slot Entry 2: ID 00:03, on-board
	Slot Entry 3: ID 00:1f, on-board
	Slot Entry 4: ID 00:1b, on-board
	Slot Entry 5: ID 00:01, on-board
	Slot Entry 6: ID 05:00, slot number 21
	Slot Entry 7: ID 00:19, on-board
	Slot Entry 8: ID 00:1a, on-board
	Slot Entry 9: ID 00:1c, on-board
	Slot Entry 10: ID 04:00, slot number 22
	Slot Entry 11: ID 03:00, on-board
	Slot Entry 12: ID 00:1d, on-board
	Slot Entry 13: ID 01:01, on-board
	Slot Entry 14: ID 01:0b, on-board
	Slot Entry 15: ID 01:0c, slot number 4
	Slot Entry 16: ID 01:0d, slot number 3
	Slot Entry 17: ID 01:0e, slot number 2
	Slot Entry 18: ID 01:0f, slot number 1
PNP BIOS 1.0 present.
	Event Notification: Not Supported
	Real Mode 16-bit Code Address: F000:71F2
	Real Mode 16-bit Data Address: F000:0000
	16-bit Protected Mode Code Address: 0x000F721A
	16-bit Protected Mode Data Address: 0x000F0000
ACPI 2.0 present.
	OEM Identifier: ACPIAM
	RSD Table 32-bit Address: 0xBF580000
	XSD Table 64-bit Address: 0x00000000BF580100
SMBIOS 2.6 present.
	Structure Table Length: 3456 bytes
	Structure Table Address: 0x000E7110
	Number Of Structures: 79
	Maximum Structure Size: 189 bytes



Here the output of biosdecode when the card is in slot 11
---------------------------------------------------------

# biosdecode 2.12
BIOS32 Service Directory present.
	Revision: 0
	Calling Interface Address: 0x000E6810
PCI Interrupt Routing 1.0 present.
	Router ID: 00:1f.0
	Exclusive IRQs: None
	Compatible Router: 8086:2914
	Slot Entry 1: ID 00:02, on-board
	Slot Entry 2: ID 00:03, on-board
	Slot Entry 3: ID 00:1f, on-board
	Slot Entry 4: ID 00:1b, on-board
	Slot Entry 5: ID 00:01, on-board
	Slot Entry 6: ID 00:19, on-board
	Slot Entry 7: ID 00:1a, on-board
	Slot Entry 8: ID 00:1c, on-board
	Slot Entry 9: ID 05:00, slot number 22
	Slot Entry 10: ID 04:00, slot number 25
	Slot Entry 11: ID 03:00, on-board
	Slot Entry 12: ID 00:1d, on-board
	Slot Entry 13: ID 01:01, on-board
	Slot Entry 14: ID 01:0b, on-board
	Slot Entry 15: ID 01:0c, slot number 4
	Slot Entry 16: ID 01:0d, slot number 3
	Slot Entry 17: ID 01:0e, slot number 2
	Slot Entry 18: ID 01:0f, slot number 1
PNP BIOS 1.0 present.
	Event Notification: Not Supported
	Real Mode 16-bit Code Address: F000:71F2
	Real Mode 16-bit Data Address: F000:0000
	16-bit Protected Mode Code Address: 0x000F721A
	16-bit Protected Mode Data Address: 0x000F0000
ACPI 2.0 present.
	OEM Identifier: ACPIAM
	RSD Table 32-bit Address: 0xBF580000
	XSD Table 64-bit Address: 0x00000000BF580100
SMBIOS 2.6 present.
	Structure Table Length: 3456 bytes
	Structure Table Address: 0x000E7110
	Number Of Structures: 79
	Maximum Structure Size: 189 bytes


I copy also the output form a different crate with a different backplane which has problably a PCI bridge on it.
---------------------------------

# biosdecode 2.11
BIOS32 Service Directory present.
	Revision: 0
	Calling Interface Address: 0x000F0010
PCI Interrupt Routing 1.0 present.
	Router ID: 00:1f.0
	Exclusive IRQs: None
	Compatible Router: 8086:2914
	Slot Entry 1: ID 00:02, on-board
	Slot Entry 2: ID 00:03, on-board
	Slot Entry 3: ID 00:1f, on-board
	Slot Entry 4: ID 00:1b, on-board
	Slot Entry 5: ID 00:01, on-board
	Slot Entry 6: ID 02:00, slot number 21
	Slot Entry 7: ID 00:19, on-board
	Slot Entry 8: ID 00:1a, on-board
	Slot Entry 9: ID 00:1c, on-board
	Slot Entry 10: ID 00:1d, on-board
	Slot Entry 11: ID 01:01, on-board
	Slot Entry 12: ID 01:0b, on-board
	Slot Entry 13: ID 01:0c, slot number 4
	Slot Entry 14: ID 01:0d, slot number 3
	Slot Entry 15: ID 01:0e, slot number 2
	Slot Entry 16: ID 01:0f, slot number 1
PNP BIOS 1.0 present.
	Event Notification: Not Supported
	Real Mode 16-bit Code Address: F000:77F2
	Real Mode 16-bit Data Address: F000:0000
	16-bit Protected Mode Code Address: 0x000F781A
	16-bit Protected Mode Data Address: 0x000F0000
ACPI 2.0 present.
	OEM Identifier: ACPIAM
	RSD Table 32-bit Address: 0xBF580000
	XSD Table 64-bit Address: 0x00000000BF580100
SMBIOS 2.6 present.
	Structure Table Length: 3456 bytes
	Structure Table Address: 0x000E6910
	Number Of Structures: 79
	Maximum Structure Size: 189 bytes



00:01.0 PCI bridge: Intel Corporation 82Q35 Express PCI Express Root Port (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 92)
02:00.0 PCI bridge: PLX Technology, Inc. PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev aa)
03:10.0 PCI bridge: PLX Technology, Inc. PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev aa)
03:11.0 PCI bridge: PLX Technology, Inc. PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev aa)
03:12.0 PCI bridge: PLX Technology, Inc. PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev aa)
03:13.0 PCI bridge: PLX Technology, Inc. PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev aa)
03:14.0 PCI bridge: PLX Technology, Inc. PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch (rev aa)



-[0000:00]-+-00.0
           +-01.0-[02-08]----00.0-[03-08]--+-10.0-[08]--
           |                               +-11.0-[07]----00.0
           |                               +-12.0-[06]--
           |                               +-13.0-[05]--
           |                               \-14.0-[04]--
           +-02.0
           +-03.0
           +-03.2
           +-03.3
           +-19.0
           +-1a.0
           +-1a.1
           +-1a.2
           +-1a.7
           +-1d.0
           +-1d.1
           +-1d.2
           +-1d.7
           +-1e.0-[01]--+-0d.0
           |            +-0e.0
           |            \-0f.0
           +-1f.0
           +-1f.3
           \-1f.6
Comment 4 Federico Vaga 2014-07-08 07:28:55 UTC
Created attachment 142421 [details]
biosdecode output with a backplane without bridges
Comment 5 Federico Vaga 2014-07-08 07:29:23 UTC
Created attachment 142431 [details]
biosdecode output with a backplane with bridges