Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

joevt

Contributor
Jun 21, 2012
6,689
4,086
I'd suggest grabbing a Belkin Thunderbolt Express dock, they're $50 ish on eBay and include two tb3 ports among other things.
Which Thunderbolt Express Dock? The one I found has Thunderbolt 1 ports.

There's a Thunderbolt 3 Express Dock HD. It seems adequate. No DisplayPort 1.4 support and no ports that support 10 Gbps USB except the 2nd Thunderbolt port. I guess that's ok for someone who's only going to use it with a Thunderbolt 2 Mac that won't be using 10 Gbps USB and 20 Gbps NVMe at the same time.
 

steve123

macrumors 6502a
Aug 26, 2007
991
566
Thank you for those scripts, they are very useful. I have attached the parsed output for ioreg -fliw0 below and provide the relevant BR10 within the code block below for reference.

I don't know what upstream or downstream you selected for that reading. If that's the downstream bridge connected to the NVMe then it means the NVMe did not negotiate a 8 GT/s x4 link correctly but you showed in a previous post that the NVMe was at 8 GT/s.
I was referring to the upstream bridge of the JHL 7540 (Titan Ridge) controller in the SSD enclosure. The downstream bridge of the Titan Ridge controller shows capabilities = negotiated = 4 x 8 GT/s which looks ok. Drilling down to the Samsung NVMe controller, the upstream capabilities = 4 x 16 GT/s (Gen 4) and negotiated = 4 x 8 GT/s (Gen 3) which is expected. So, if we ignore the PCIe link speeds for the bridges inside the tunnel, the slowest part of the PCIe link is 20 Gbps.


Code:
    | |   |       +-o BR10@A  <class IORegistryEntry:IOService:IOPCIDevice, id 0x1000002c7, registered, matched, active, busy 0 (829 ms), retain 11>
    | |   |         |   "name" = <"pci-bridge">
    | |   |         |   "compatible" = <"pcifff,0","pci10b5,8723","pciclass,060400","BR10">
    | |   |         |   "vendor-id" = 10b5
    | |   |         |   "device-id" = 8723
    | |   |         |   "subsystem-id" = 0000
    | |   |         |   "subsystem-vendor-id" = 0fff
    | |   |         |   "pcidebug" = 11:0A.0-[14-62]
    | |   |         |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |         |   "IOPCIExpressLinkCapabilities" = 175201347 (0x0a715c43): 8.0 GT/s x4 L0sAndL1Supported L0s:[1,2)µs L1:[2,4)µs ActiveReporting BandwidthNotifications ASPM Port:10
    | |   |         |   "IOPCIExpressLinkStatus" = 45122 (0xb042): 5.0 GT/s x4 SlotClocked Active Changed
    | |   |           +-o UFS0@0  <class IORegistryEntry:IOService:IOPCIDevice, id 0x1000002c8, registered, matched, active, busy 0 (824 ms), retain 15>
    | |   |             |   "name" = <"pci-bridge">
    | |   |             |   "compatible" = <"pcifff,0","pci8086,156d","pciclass,060400","UFS0">
    | |   |             |   "vendor-id" = 8086
    | |   |             |   "device-id" = 156d
    | |   |             |   "subsystem-id" = 0000
    | |   |             |   "subsystem-vendor-id" = 0fff
    | |   |             |   "pcidebug" = 14:00.0-[15-62]
    | |   |             |   "IOPCIExpressCapabilities" = 82 (0x0052): Version:2 (Upstream Port of PCI Express Switch) Interrupt:0
    | |   |             |   "IOPCIExpressLinkCapabilities" = 351298 (0x00055c42): 5.0 GT/s x4 L0sAndL1Supported L0s:[1,2)µs L1:[2,4)µs AllowReferenceClockRemoval Port:0
    | |   |             |   "IOPCIExpressLinkStatus" = 4162 (0x1042): 5.0 GT/s x4 SlotClocked
    | |   |               +-o DSB0@0  <class IORegistryEntry:IOService:IOPCIDevice, id 0x1000002c9, registered, matched, active, busy 0 (764 ms), retain 11>
    | |   |               | |   "name" = <"pci-bridge">
    | |   |               | |   "compatible" = <"pci8086,156d","pciclass,060400","DSB0">
    | |   |               | |   "vendor-id" = 8086
    | |   |               | |   "device-id" = 156d
    | |   |               | |   "pcidebug" = 15:00.0-[16]
    | |   |               | |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |               | |   "IOPCIExpressLinkCapabilities" = 3234881 (0x00315c41): 2.5 GT/s x4 L0sAndL1Supported L0s:[1,2)µs L1:[2,4)µs ActiveReporting BandwidthNotifications Port:0
    | |   |               | |   "IOPCIExpressLinkStatus" = 12353 (0x3041): 2.5 GT/s x4 SlotClocked Active
    | |   |               |   +-o NHI0@0  <class IORegistryEntry:IOService:IOPCIDevice, id 0x1000002ca, registered, matched, active, busy 0 (763 ms), retain 10>
    | |   |               |     |   "name" = <"pci8086,156c">
    | |   |               |     |   "compatible" = <"pci2222,1111","pci8086,156c","pciclass,088000","NHI0">
    | |   |               |     |   "vendor-id" = 8086
    | |   |               |     |   "device-id" = 156c
    | |   |               |     |   "subsystem-id" = 1111
    | |   |               |     |   "pcidebug" = 16:00.0
    | |   |               |     |   "IOPCIExpressCapabilities" = 2 (0x0002): Version:2 (PCI Express Endpoint) Interrupt:0
    | |   |               |     |   "IOPCIExpressLinkCapabilities" = 351297 (0x00055c41): 2.5 GT/s x4 L0sAndL1Supported L0s:[1,2)µs L1:[2,4)µs AllowReferenceClockRemoval Port:0
    | |   |               |     |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               +-o DSB1@3  <class IORegistryEntry:IOService:IOPCIDevice, id 0x1000002cb, registered, matched, active, busy 0 (754 ms), retain 13>
    | |   |               | |   "name" = <"pci-bridge">
    | |   |               | |   "compatible" = <"pci8086,156d","pciclass,060400","DSB1">
    | |   |               | |   "vendor-id" = 8086
    | |   |               | |   "device-id" = 156d
    | |   |               | |   "pcidebug" = 15:03.0-[4A-52]
    | |   |               | |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |               | |   "IOPCIExpressLinkCapabilities" = 53566529 (0x03315c41): 2.5 GT/s x4 L0sAndL1Supported L0s:[1,2)µs L1:[2,4)µs ActiveReporting BandwidthNotifications Port:3
    | |   |               | |   "IOPCIExpressLinkStatus" = 12353 (0x3041): 2.5 GT/s x4 SlotClocked Active
    | |   |               |   +-o UPS0@0  <class IORegistryEntry:IOService:IOPCIDevice, id 0x1000002cc, registered, matched, active, busy 0 (753 ms), retain 18>
    | |   |               |     |   "name" = <"pci-bridge">
    | |   |               |     |   "compatible" = <"pci8086,b26","pciclass,060400","UPS0">
    | |   |               |     |   "vendor-id" = 8086
    | |   |               |     |   "device-id" = 0b26
    | |   |               |     |   "pcidebug" = 4A:00.0-[4B-52]
    | |   |               |     |   "IOPCIExpressCapabilities" = 82 (0x0052): Version:2 (Upstream Port of PCI Express Switch) Interrupt:0
    | |   |               |     |   "IOPCIExpressLinkCapabilities" = 4487233 (0x00447841): 2.5 GT/s x4 L1Supported L0s:(4,∞)µs L1:[0,1)µs AllowReferenceClockRemoval ASPM Port:0
    | |   |               |     |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               |       +-o pci-bridge@0  <class IORegistryEntry:IOService:IOPCIDevice, id 0x10000042c, registered, matched, active, busy 0 (677 ms), retain 11>
    | |   |               |       | |   "name" = <"pci-bridge">
    | |   |               |       | |   "compatible" = <"pci8086,b26","pciclass,060400">
    | |   |               |       | |   "vendor-id" = 8086
    | |   |               |       | |   "device-id" = 0b26
    | |   |               |       | |   "pcidebug" = 4B:00.0-[4D]
    | |   |               |       | |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |               |       | |   "IOPCIExpressLinkCapabilities" = 6322241 (0x00607841): 2.5 GT/s x4 L1Supported L0s:(4,∞)µs L1:[0,1)µs BandwidthNotifications ASPM Port:0
    | |   |               |       | |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               |       |   +-o pci8086,b27@0  <class IORegistryEntry:IOService:IOPCIDevice, id 0x10000042f, registered, matched, active, busy 0 (675 ms), retain 12>
    | |   |               |       |     |   "name" = <"pci8086,b27">
    | |   |               |       |     |   "compatible" = <"pci8086,0","pci8086,b27","pciclass,0c0330">
    | |   |               |       |     |   "vendor-id" = 8086
    | |   |               |       |     |   "device-id" = 0b27
    | |   |               |       |     |   "subsystem-id" = 0000
    | |   |               |       |     |   "subsystem-vendor-id" = 8086
    | |   |               |       |     |   "pcidebug" = 4D:00.0
    | |   |               |       |     |   "IOPCIExpressCapabilities" = 2 (0x0002): Version:2 (PCI Express Endpoint) Interrupt:0
    | |   |               |       |     |   "IOPCIExpressLinkCapabilities" = 4458561 (0x00440841): 2.5 GT/s x4 L1Supported L0s:[0,64)ns L1:[0,1)µs AllowReferenceClockRemoval ASPM Port:0
    | |   |               |       |     |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               |       +-o pci-bridge@1  <class IORegistryEntry:IOService:IOPCIDevice, id 0x10000042d, registered, matched, active, busy 0 (720 ms), retain 11>
    | |   |               |       | |   "name" = <"pci-bridge">
    | |   |               |       | |   "compatible" = <"pci8086,b26","pciclass,060400">
    | |   |               |       | |   "vendor-id" = 8086
    | |   |               |       | |   "device-id" = 0b26
    | |   |               |       | |   "pcidebug" = 4B:01.0-[4E-52]
    | |   |               |       | |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |               |       | |   "IOPCIExpressLinkCapabilities" = 24148033 (0x01707841): 2.5 GT/s x4 L1Supported L0s:(4,∞)µs L1:[0,1)µs ActiveReporting BandwidthNotifications ASPM Port:1
    | |   |               |       | |   "IOPCIExpressLinkStatus" = 12353 (0x3041): 2.5 GT/s x4 SlotClocked Active
    | |   |               |       |   +-o pci-bridge@0  <class IORegistryEntry:IOService:IOPCIDevice, id 0x100000430, registered, matched, active, busy 0 (719 ms), retain 13>
    | |   |               |       |     |   "name" = <"pci-bridge">
    | |   |               |       |     |   "compatible" = <"pci8086,15ef","pciclass,060400">
    | |   |               |       |     |   "vendor-id" = 8086
    | |   |               |       |     |   "device-id" = 15ef
    | |   |               |       |     |   "pcidebug" = 4E:00.0-[4F-52]
    | |   |               |       |     |   "IOPCIExpressCapabilities" = 82 (0x0052): Version:2 (Upstream Port of PCI Express Switch) Interrupt:0
    | |   |               |       |     |   "IOPCIExpressLinkCapabilities" = 54560835 (0x03408843): 8.0 GT/s x4 L1Supported L0s:[0,64)ns L1:[1,2)µs ASPM Port:3
    | |   |               |       |     |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               |       |       +-o pci-bridge@1  <class IORegistryEntry:IOService:IOPCIDevice, id 0x100000431, registered, matched, active, busy 0 (717 ms), retain 11>
    | |   |               |       |       | |   "name" = <"pci-bridge">
    | |   |               |       |       | |   "compatible" = <"pci8086,15ef","pciclass,060400">
    | |   |               |       |       | |   "vendor-id" = 8086
    | |   |               |       |       | |   "device-id" = 15ef
    | |   |               |       |       | |   "pcidebug" = 4F:01.0-[52]
    | |   |               |       |       | |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |               |       |       | |   "IOPCIExpressLinkCapabilities" = 24206403 (0x01715c43): 8.0 GT/s x4 L0sAndL1Supported L0s:[1,2)µs L1:[2,4)µs ActiveReporting BandwidthNotifications ASPM Port:1
    | |   |               |       |       | |   "IOPCIExpressLinkStatus" = 12355 (0x3043): 8.0 GT/s x4 SlotClocked Active
    | |   |               |       |       |   +-o pci144d,a80a@0  <class IORegistryEntry:IOService:IOPCIDevice, id 0x100000434, registered, matched, active, busy 0 (716 ms), retain 12>
    | |   |               |       |       |     |   "name" = <"pci144d,a80a">
    | |   |               |       |       |     |   "compatible" = <"pci144d,a801","pci144d,a80a","pciclass,010802">
    | |   |               |       |       |     |   "vendor-id" = 144d
    | |   |               |       |       |     |   "device-id" = a80a
    | |   |               |       |       |     |   "subsystem-id" = a801
    | |   |               |       |       |     |   "subsystem-vendor-id" = 144d
    | |   |               |       |       |     |   "pcidebug" = 52:00.0
    | |   |               |       |       |     |   "IOPCIExpressCapabilities" = 2 (0x0002): Version:2 (PCI Express Endpoint) Interrupt:0
    | |   |               |       |       |     |   "IOPCIExpressLinkCapabilities" = 4683844 (0x00477844): 16.0 GT/s x4 L1Supported L0s:(4,∞)µs L1:[32,64]µs AllowReferenceClockRemoval ASPM Port:0
    | |   |               |       |       |     |   "IOPCIExpressLinkStatus" = 4163 (0x1043): 8.0 GT/s x4 SlotClocked
    | |   |               |       |       +-o pci-bridge@2  <class IORegistryEntry:IOService:IOPCIDevice, id 0x100000432, registered, matched, active, busy 0 (643 ms), retain 11>
    | |   |               |       |       | |   "name" = <"pci-bridge">
    | |   |               |       |       | |   "compatible" = <"pci8086,15ef","pciclass,060400">
    | |   |               |       |       | |   "vendor-id" = 8086
    | |   |               |       |       | |   "device-id" = 15ef
    | |   |               |       |       | |   "pcidebug" = 4F:02.0-[50]
    | |   |               |       |       | |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |               |       |       | |   "IOPCIExpressLinkCapabilities" = 39848001 (0x02600841): 2.5 GT/s x4 L1Supported L0s:[0,64)ns L1:[0,1)µs BandwidthNotifications ASPM Port:2
    | |   |               |       |       | |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               |       |       |   +-o pci8086,15f0@0  <class IORegistryEntry:IOService:IOPCIDevice, id 0x100000435, registered, matched, active, busy 0 (641 ms), retain 12>
    | |   |               |       |       |     |   "name" = <"pci8086,15f0">
    | |   |               |       |       |     |   "compatible" = <"pci8086,0","pci8086,15f0","pciclass,0c0330">
    | |   |               |       |       |     |   "vendor-id" = 8086
    | |   |               |       |       |     |   "device-id" = 15f0
    | |   |               |       |       |     |   "subsystem-id" = 0000
    | |   |               |       |       |     |   "subsystem-vendor-id" = 8086
    | |   |               |       |       |     |   "pcidebug" = 50:00.0
    | |   |               |       |       |     |   "IOPCIExpressCapabilities" = 2 (0x0002): Version:2 (PCI Express Endpoint) Interrupt:0
    | |   |               |       |       |     |   "IOPCIExpressLinkCapabilities" = 4458561 (0x00440841): 2.5 GT/s x4 L1Supported L0s:[0,64)ns L1:[0,1)µs AllowReferenceClockRemoval ASPM Port:0
    | |   |               |       |       |     |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               |       |       +-o pci-bridge@4  <class IORegistryEntry:IOService:IOPCIDevice, id 0x100000433, registered, matched, active, busy 0 (0 ms), retain 10>
    | |   |               |       |         |   "name" = <"pci-bridge">
    | |   |               |       |         |   "compatible" = <"pci8086,15ef","pciclass,060400">
    | |   |               |       |         |   "vendor-id" = 8086
    | |   |               |       |         |   "device-id" = 15ef
    | |   |               |       |         |   "pcidebug" = 4F:04.0-[51]
    | |   |               |       |         |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |               |       |         |   "IOPCIExpressLinkCapabilities" = 74451009 (0x04700841): 2.5 GT/s x4 L1Supported L0s:[0,64)ns L1:[0,1)µs ActiveReporting BandwidthNotifications ASPM Port:4
    | |   |               |       |         |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               |       +-o pci-bridge@4  <class IORegistryEntry:IOService:IOPCIDevice, id 0x10000042e, registered, matched, active, busy 0 (0 ms), retain 10>
    | |   |               |         |   "name" = <"pci-bridge">
    | |   |               |         |   "compatible" = <"pci8086,b26","pciclass,060400">
    | |   |               |         |   "vendor-id" = 8086
    | |   |               |         |   "device-id" = 0b26
    | |   |               |         |   "pcidebug" = 4B:04.0-[4C]
    | |   |               |         |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |               |         |   "IOPCIExpressLinkCapabilities" = 74545171 (0x04717813): 8.0 GT/s x1 L1Supported L0s:(4,∞)µs L1:[2,4)µs ActiveReporting BandwidthNotifications ASPM Port:4
    | |   |               |         |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               +-o DSB2@4  <class IORegistryEntry:IOService:IOPCIDevice, id 0x1000002e5, registered, matched, active, busy 0 (0 ms), retain 13>
    | |   |               | |   "name" = <"pci-bridge">
    | |   |               | |   "compatible" = <"pci8086,156d","pciclass,060400","DSB2">
    | |   |               | |   "vendor-id" = 8086
    | |   |               | |   "device-id" = 156d
    | |   |               | |   "pcidebug" = 15:04.0-[39]
    | |   |               | |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |               | |   "IOPCIExpressLinkCapabilities" = 70343745 (0x04315c41): 2.5 GT/s x4 L0sAndL1Supported L0s:[1,2)µs L1:[2,4)µs ActiveReporting BandwidthNotifications Port:4
    | |   |               | |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               +-o DSB3@5  <class IORegistryEntry:IOService:IOPCIDevice, id 0x1000002ff, registered, matched, active, busy 0 (0 ms), retain 13>
    | |   |               | |   "name" = <"pci-bridge">
    | |   |               | |   "compatible" = <"pci8086,156d","pciclass,060400","DSB3">
    | |   |               | |   "vendor-id" = 8086
    | |   |               | |   "device-id" = 156d
    | |   |               | |   "pcidebug" = 15:05.0-[28]
    | |   |               | |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |               | |   "IOPCIExpressLinkCapabilities" = 87120961 (0x05315c41): 2.5 GT/s x4 L0sAndL1Supported L0s:[1,2)µs L1:[2,4)µs ActiveReporting BandwidthNotifications Port:5
    | |   |               | |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
    | |   |               +-o DSB4@6  <class IORegistryEntry:IOService:IOPCIDevice, id 0x100000319, registered, matched, active, busy 0 (0 ms), retain 12>
    | |   |                 |   "name" = <"pci-bridge">
    | |   |                 |   "compatible" = <"pci8086,156d","pciclass,060400","DSB4">
    | |   |                 |   "vendor-id" = 8086
    | |   |                 |   "device-id" = 156d
    | |   |                 |   "pcidebug" = 15:06.0-[17]
    | |   |                 |   "IOPCIExpressCapabilities" = 354 (0x0162): Version:2 (Downstream Port of PCI Express Switch) SlotImplemented Interrupt:0
    | |   |                 |   "IOPCIExpressLinkCapabilities" = 103898177 (0x06315c41): 2.5 GT/s x4 L0sAndL1Supported L0s:[1,2)µs L1:[2,4)µs ActiveReporting BandwidthNotifications Port:6
    | |   |                 |   "IOPCIExpressLinkStatus" = 4161 (0x1041): 2.5 GT/s x4 SlotClocked
 

Attachments

  • ioregMacPro61parsed.txt
    77.2 KB · Views: 44
Last edited:

steve123

macrumors 6502a
Aug 26, 2007
991
566
pcitree.sh output:

Code:
#=========================================================================================
┬[0000:00]
├─00:00.0                 #                [8086:0e00] [0600] (rev 04) Class                                : Device
├┬00:01.0-[10-fe]         #                [8086:0e02] [0604] (rev 04) Class                                : Device
│└┬10:00.0-[11-fe]        #                [10b5:8723] [0604] (rev ca) Class                                : Device
│ ├┬11:01.0-[13]          #                [10b5:8723] [0604] (rev ca) Class                                : Device
│ │└─13:00.0              #                [1b73:1100] [0c03] (rev 10) Class                                : Device
│ ├┬11:02.0-[b1-fe]       #                [10b5:8723] [0604] (rev ca) Class                                : Device
│ │└┬b1:00.0-[b2-fe]      #                [8086:156d] [0604]          Class                                : Device
│ │ ├┬b2:00.0-[b3]        #                [8086:156d] [0604]          Class                                : Device
│ │ │└─b3:00.0            #                [8086:156c] [0880]          Class                                : Device
│ │ ├┬b2:03.0-[e7-ef]     #                [8086:156d] [0604]          Class                                : Device
│ │ │└┬e7:00.0-[e8-ef]    #                [8086:1513] [0604]          Class                                : Device
│ │ │ ├┬e8:00.0-[eb-ed]   #                [8086:1513] [0604]          Class                                : Device
│ │ │ │└┬eb:00.0-[ec-ed]  #                [12d8:400c] [0604] (rev 02) Class                                : Device
│ │ │ │ └┬ec:03.0-[ed]    #                [12d8:400c] [0604] (rev 02) Class                                : Device
│ │ │ │  ├─ed:00.0        #                [12d8:400e] [0c03] (rev 01) Class                                : Device
│ │ │ │  ├─ed:00.1        #                [12d8:400e] [0c03] (rev 01) Class                                : Device
│ │ │ │  └─ed:00.2        #                [12d8:400f] [0c03] (rev 03) Class                                : Device
│ │ │ ├┬e8:01.0-[ea]      #                [8086:1513] [0604]          Class                                : Device
│ │ │ │└─ea:00.0          #                [14e4:16b0] [0200] (rev 10) Class                                : Device
│ │ │ ├┬e8:02.0-[e9]      #                [8086:1513] [0604]          Class                                : Device
│ │ │ │└─e9:00.0          #                [11c1:5901] [0c00] (rev 08) Class                                : Device
│ │ │ ├┬e8:03.0-[XX]      #                [ffff:ffff] [0604]          Class                                : Device
│ │ │ ├┬e8:04.0-[ef]      #                [8086:1513] [0604]          Class                                : Device
│ │ │ ├┬e8:05.0-[ee]      #                [8086:1513] [0604]          Class                                : Device
│ │ │ └┬e8:06.0-[XX]      #                [ffff:ffff] [0604]          Class                                : Device
│ │ ├┬b2:04.0-[d6]        #                [8086:156d] [0604]          Class                                : Device
│ │ ├┬b2:05.0-[c5]        #                [8086:156d] [0604]          Class                                : Device
│ │ └┬b2:06.0-[b4]        #                [8086:156d] [0604]          Class                                : Device
│ ├┬11:08.0-[12]          #                [10b5:8723] [0604] (rev ca) Class                                : Device
│ ├┬11:09.0-[63-b0]       #                [10b5:8723] [0604] (rev ca) Class                                : Device
│ │└┬63:00.0-[64-b0]      #                [8086:156d] [0604]          Class                                : Device
│ │ ├┬64:00.0-[65]        #                [8086:156d] [0604]          Class                                : Device
│ │ │└─65:00.0            #                [8086:156c] [0880]          Class                                : Device
│ │ ├┬64:03.0-[9c-a0]     #                [8086:156d] [0604]          Class                                : Device
│ │ │└┬9c:00.0-[9d-a0]    #                [8086:1513] [0604]          Class                                : Device
│ │ │ ├┬9d:03.0-[9e]      #                [8086:1513] [0604]          Class                                : Device
│ │ │ │└─9e:00.0          #                [1b4b:9182] [0106] (rev 11) Class                                : Device
│ │ │ ├┬9d:04.0-[a0]      #                [8086:1513] [0604]          Class                                : Device
│ │ │ ├┬9d:05.0-[9f]      #                [8086:1513] [0604]          Class                                : Device
│ │ │ └┬9d:06.0-[XX]      #                [ffff:ffff] [0604]          Class                                : Device
│ │ ├┬64:04.0-[8a]        #                [8086:156d] [0604]          Class                                : Device
│ │ ├┬64:05.0-[78]        #                [8086:156d] [0604]          Class                                : Device
│ │ └┬64:06.0-[66]        #                [8086:156d] [0604]          Class                                : Device
│ └┬11:0a.0-[14-62]       #                [10b5:8723] [0604] (rev ca) Class                                : Device
│  └┬14:00.0-[15-62]      #                [8086:156d] [0604]          Class                                : Device
│   ├┬15:00.0-[16]        #                [8086:156d] [0604]          Class                                : Device
│   │└─16:00.0            #                [8086:156c] [0880]          Class                                : Device
│   ├┬15:03.0-[4a-52]     #                [8086:156d] [0604]          Class                                : Device
│   │└┬4a:00.0-[4b-52]    #                [8086:0b26] [0604] (rev 03) Class                                : Device
│   │ ├┬4b:00.0-[4d]      #                [8086:0b26] [0604] (rev 03) Class                                : Device
│   │ │└─4d:00.0          #                [8086:0b27] [0c03] (rev 03) Class                                : Device
│   │ ├┬4b:01.0-[4e-52]   #                [8086:0b26] [0604] (rev 03) Class                                : Device
│   │ │└┬4e:00.0-[4f-52]  #                [8086:15ef] [0604] (rev 06) Class                                : Device
│   │ │ ├┬4f:01.0-[52]    #                [8086:15ef] [0604] (rev 06) Class                                : Device
│   │ │ │└─52:00.0        #                [144d:a80a] [0108]          Class                                : Device
│   │ │ ├┬4f:02.0-[50]    #                [8086:15ef] [0604] (rev 06) Class                                : Device
│   │ │ │└─50:00.0        #                [8086:15f0] [0c03] (rev 06) Class                                : Device
│   │ │ └┬4f:04.0-[51]    #                [8086:15ef] [0604] (rev 06) Class                                : Device
│   │ ├┬4b:02.0-[XX]      #                [ffff:ffff] [0604] (rev 03) Class                                : Device
│   │ ├┬4b:03.0-[XX]      #                [ffff:ffff] [0604] (rev 03) Class                                : Device
│   │ └┬4b:04.0-[4c]      #                [8086:0b26] [0604] (rev 03) Class                                : Device
│   ├┬15:04.0-[39]        #                [8086:156d] [0604]          Class                                : Device
│   ├┬15:05.0-[28]        #                [8086:156d] [0604]          Class                                : Device
│   └┬15:06.0-[17]        #                [8086:156d] [0604]          Class                                : Device
├┬00:02.0-[02]            #                [8086:0e04] [0604] (rev 04) Class                                : Device
│├─02:00.0                #                [1002:679e] [0300]          Class                                : Device
│└─02:00.1                #                [1002:aaa0] [0403]          Class                                : Device
├┬00:03.0-[06]            #                [8086:0e08] [0604] (rev 04) Class                                : Device
│├─06:00.0                #                [1002:679e] [0300]          Class                                : Device
│└─06:00.1                #                [1002:aaa0] [0403]          Class                                : Device
├─00:04.0                 #                [8086:0e20] [0880] (rev 04) Class                                : Device
├─00:04.1                 #                [8086:0e21] [0880] (rev 04) Class                                : Device
├─00:04.2                 #                [8086:0e22] [0880] (rev 04) Class                                : Device
├─00:04.3                 #                [8086:0e23] [0880] (rev 04) Class                                : Device
├─00:04.4                 #                [8086:0e24] [0880] (rev 04) Class                                : Device
├─00:04.5                 #                [8086:0e25] [0880] (rev 04) Class                                : Device
├─00:04.6                 #                [8086:0e26] [0880] (rev 04) Class                                : Device
├─00:04.7                 #                [8086:0e27] [0880] (rev 04) Class                                : Device
├─00:05.0                 #                [8086:0e28] [0880] (rev 04) Class                                : Device
├─00:05.1                 #                [8086:0e29] [0880] (rev 04) Class                                : Device
├─00:05.2                 #                [8086:0e2a] [0880] (rev 04) Class                                : Device
├─00:05.4                 #                [8086:0e2c] [0800] (rev 04) Class                                : Device
├┬00:11.0-[0a]            #                [8086:1d3e] [0604] (rev 06) Class                                : Device
├─00:16.0                 #                [8086:1d3a] [0780] (rev 05) Class                                : Device
├─00:1b.0                 #                [8086:1d20] [0403] (rev 06) Class                                : Device
├┬00:1c.0-[0b]            #                [8086:1d10] [0604] (rev b6) Class                                : Device
│└─0b:00.0                #                [14e4:1682] [0200]          Class                                : Device
├┬00:1c.1-[0c]            #                [8086:1d12] [0604] (rev b6) Class                                : Device
│└─0c:00.0                #                [14e4:1682] [0200]          Class                                : Device
├┬00:1c.2-[0d]            #                [8086:1d14] [0604] (rev b6) Class                                : Device
│└─0d:00.0                #                [14e4:43a0] [0280] (rev 03) Class                                : Device
├┬00:1c.4-[0e]            #                [8086:1d18] [0604] (rev b6) Class                                : Device
│└─0e:00.0                #                [2646:5013] [0108] (rev 01) Class                                : Device
├─00:1d.0                 #                [8086:1d26] [0c03] (rev 06) Class                                : Device
├┬00:1e.0-[0f]            #                [8086:244e] [0604] (rev a6) Class                                : Device
├─00:1f.0                 #                [8086:1d41] [0601] (rev 06) Class                                : Device
├─00:1f.2                 #                [8086:1d02] [0106] (rev 06) Class                                : Device
└─00:1f.3                 #                [8086:1d22] [0c05] (rev 06) Class                                : Device
┬[0000:ff]
├─ff:08.0                 #                [8086:0e80] [0880] (rev 04) Class                                : Device
├─ff:08.3                 #                [8086:0e83] [0880] (rev 04) Class                                : Device
├─ff:08.4                 #                [8086:0e84] [0880] (rev 04) Class                                : Device
├─ff:09.0                 #                [8086:0e90] [0880] (rev 04) Class                                : Device
├─ff:09.3                 #                [8086:0e93] [0880] (rev 04) Class                                : Device
├─ff:09.4                 #                [8086:0e94] [0880] (rev 04) Class                                : Device
├─ff:0a.0                 #                [8086:0ec0] [0880] (rev 04) Class                                : Device
├─ff:0a.1                 #                [8086:0ec1] [0880] (rev 04) Class                                : Device
├─ff:0a.2                 #                [8086:0ec2] [0880] (rev 04) Class                                : Device
├─ff:0a.3                 #                [8086:0ec3] [0880] (rev 04) Class                                : Device
├─ff:0b.0                 #                [8086:0e1e] [0880] (rev 04) Class                                : Device
├─ff:0b.3                 #                [8086:0e1f] [0880] (rev 04) Class                                : Device
├─ff:0c.0                 #                [8086:0ee0] [0880] (rev 04) Class                                : Device
├─ff:0c.1                 #                [8086:0ee2] [0880] (rev 04) Class                                : Device
├─ff:0c.2                 #                [8086:0ee4] [0880] (rev 04) Class                                : Device
├─ff:0d.0                 #                [8086:0ee1] [0880] (rev 04) Class                                : Device
├─ff:0d.1                 #                [8086:0ee3] [0880] (rev 04) Class                                : Device
├─ff:0d.2                 #                [8086:0ee5] [0880] (rev 04) Class                                : Device
├─ff:0e.0                 #                [8086:0ea0] [0880] (rev 04) Class                                : Device
├─ff:0e.1                 #                [8086:0e30] [1101] (rev 04) Class                                : Device
├─ff:0f.0                 #                [8086:0ea8] [0880] (rev 04) Class                                : Device
├─ff:0f.1                 #                [8086:0e71] [0880] (rev 04) Class                                : Device
├─ff:0f.2                 #                [8086:0eaa] [0880] (rev 04) Class                                : Device
├─ff:0f.3                 #                [8086:0eab] [0880] (rev 04) Class                                : Device
├─ff:0f.4                 #                [8086:0eac] [0880] (rev 04) Class                                : Device
├─ff:0f.5                 #                [8086:0ead] [0880] (rev 04) Class                                : Device
├─ff:0f.6                 #                [8086:0eae] [0880] (rev 04) Class                                : Device
├─ff:10.0                 #                [8086:0eb0] [0880] (rev 04) Class                                : Device
├─ff:10.1                 #                [8086:0eb1] [0880] (rev 04) Class                                : Device
├─ff:10.2                 #                [8086:0eb2] [0880] (rev 04) Class                                : Device
├─ff:10.3                 #                [8086:0eb3] [0880] (rev 04) Class                                : Device
├─ff:10.4                 #                [8086:0eb4] [0880] (rev 04) Class                                : Device
├─ff:10.5                 #                [8086:0eb5] [0880] (rev 04) Class                                : Device
├─ff:10.6                 #                [8086:0eb6] [0880] (rev 04) Class                                : Device
├─ff:10.7                 #                [8086:0eb7] [0880] (rev 04) Class                                : Device
├─ff:11.0                 #                [8086:0eb8] [0880] (rev 04) Class                                : Device
├─ff:13.0                 #                [8086:0e1d] [0880] (rev 04) Class                                : Device
├─ff:13.1                 #                [8086:0e34] [1101] (rev 04) Class                                : Device
├─ff:13.4                 #                [8086:0e81] [0880] (rev 04) Class                                : Device
├─ff:13.5                 #                [8086:0e36] [1101] (rev 04) Class                                : Device
├─ff:13.6                 #                [8086:0e37] [1101] (rev 04) Class                                : Device
├─ff:16.0                 #                [8086:0ec8] [0880] (rev 04) Class                                : Device
├─ff:16.1                 #                [8086:0ec9] [0880] (rev 04) Class                                : Device
└─ff:16.2                 #                [8086:0eca] [0880] (rev 04) Class                                : Device
 
Last edited:

joevt

Contributor
Jun 21, 2012
6,689
4,086
I was referring to the upstream bridge of the JHL 7540 (Titan Ridge) controller in the SSD enclosure. The downstream bridge of the Titan Ridge controller shows capabilities = negotiated = 4 x 8 GT/s which looks ok. Drilling down to the Samsung NVMe controller, the upstream capabilities = 4 x 16 GT/s (Gen 4) and negotiated = 4 x 8 GT/s (Gen 3) which is expected.
I thought that might be the case, since Titan Ridge as a host controller can have 4 x 8 GT/s upstream but when I tried a Alpine Ridge based Thunderbolt dock, it showed capabilities and status of 4 x 2.5 GT/s. Retesting with a Titan Ridge based dock (Titan Ridge as a peripheral controller), I see the 4 x 8GT/s capabilities of the Titan Ridge upstream (4 x 2.5 GT/s status).

So, if we ignore the PCIe link speeds for the bridges inside the tunnel, the slowest part of the PCIe link is 20 Gbps.
Yes. 5 GT/s x 4 for the upstream of the Falcon Ridge is the PCIe bottleneck that we can decipher from the PCIe info since all PCIe links upstream of that are 5 GT/s x 4 or greater, same for downstream PCIe links that are real. However, PCIe uses 8b/10b encoding so it's actually 16 Gbps. What we're missing is Thunderbolt info which should show that you are having a 10 Gbps bottleneck as PCIe must be tunnelled over Thunderbolt at two locations to get from your host to your NVMe. The info is probably in the Thunderbolt registers. Linux gives access to Thunderbolt devices in the sysfs and it gives access to Thunderbolt registers in the debugfs https://www.tonymacx86.com/threads/z490-z590-will-z590-ever-have-macos-support.308084/post-2235429
For macOS, you would need something like DirectHW.kext to get access to Thunderbolt registers. The Alpine Ridge and Titan Ridge Thunderbolt Interface Controller Datasheets have lists of registers. Most will be applicable to Falcon Ridge. The dumpthunderboltinfo.sh script dumps the Adapter Type from the Port Configuration Space of each port. The link rate and link width info is in the PHY Layer Config Registers capability of the Port Configuration Space of CIO ports. CIO ports have adapter type 00 00 01. Goshen Ridge has 8 CIO ports (2 lanes per USB-C port). Alpine Ridge and Titan Ridge have 4 CIO ports. The PHY Layer Config Registers are only 12 bytes. It has capability ID 1. There's probably a way to determine which CIO ports are bonded together or not and what direction they are connected (upstream/downstream in System Information.app) - maybe something to do with the path of each port.

Code:
Offset  Register Name  Bit(s)  Type    Default  Field Name and Description
==================================================================================================
0       PHY_PORT_CS_0  7:0     RO      0x3E     Next Capability Pointer
0       PHY_PORT_CS_0  15:8    RO      1        Capability ID                   
0       PHY_PORT_CS_0  19:16   RO      1100b    Supported Link Speeds enum(8:"10.0 GT/s Link speed supported",12:"10.0 GT/s and 20.0 GT/s Link speed supported")
0       PHY_PORT_CS_0  25:20   RO      1        Supported Link Width enum(0:"x1",1:"x1",3:"x2 x1",7:"x4 x2 x1",15:"x8 x4 x2 x1",31:"x16 x8 x4 x2 x1",63:"x32 x16 x8 x4 x2 x1")
0       PHY_PORT_CS_0  29:26   RO      1        Automated Management Support Reserved
0       PHY_PORT_CS_0  31:30   RO      0        Reserved
1       PHY_PORT_CS_1  3:0     R/W     4        Target Link Speed enum(8:"10.0 GT/s",4:"20.0 GT/s")
1       PHY_PORT_CS_1  9:4     R/W     1        Target Link Width enum(1:"x1",2:"x2",4:"x4",8:"x8",16:"x16",32:"x32")
1       PHY_PORT_CS_1  13:10   R/W     0        Reserved
1       PHY_PORT_CS_1  14      R/W     0        Link Disable
1       PHY_PORT_CS_1  15      R/W SC  0        Link Retrain
1       PHY_PORT_CS_1  19:16   RO      4        Current Link Speed enum(8:"10.0 GT/s",4:"20.0 GT/s")
1       PHY_PORT_CS_1  25:20   RO      1        Negotiated Link Width enum(1:"x1",2:"x2",4:"x4",8:"x8",16:"x16",32:"x32")
1       PHY_PORT_CS_1  29:26   RO      0        Link State enum(0:"Link Disabled",1:"Connection detected; Link Training but not up",2:"CL0",7:"Cld - Link Down")
1       PHY_PORT_CS_1  30      RO      0        Reserved
1       PHY_PORT_CS_1  31      R/W SC  0        Link Partner Reset
2       PHY_PORT_CS_2  0       R/Clr   0        Aligner Lock Error (ALE)
2       PHY_PORT_CS_2  1       R/Clr   0        Order Set Error (OSE)
2       PHY_PORT_CS_2  2       R/Clr   0        Timing Error (TE)
2       PHY_PORT_CS_2  3       R/Clr   0        Elastic Buffer Error
2       PHY_PORT_CS_2  4       R/Clr   0        De-skew Buffer Error
2       PHY_PORT_CS_2  5       R/Clr   0        RS decoder Error
2       PHY_PORT_CS_2  6       R/Clr   0        RX aligner timeout
2       PHY_PORT_CS_2  31:7    RO      0        Reserved

These registers are very similar to the Lane Adapter Configuration Capability described in the USB4 spec. The USB4 spec is freely available and newer so it probably has better names for registers.

pcitree.sh output:
The pcitree.sh output is missing the link rates and class codes and device names. You may be running old versions.
https://gist.github.com/joevt/e3cd4ff08aae06279134969c98ca3ab7

Check paths:
Code:
cat /etc/paths

Update paths:
Code:
grep -q /usr/local/sbin /etc/paths || sudo sed -e $'1i\\\n/usr/local/sbin\\\n' -i "" /etc/paths

Open a new Terminal.app window.
Check paths again:
Code:
cat /etc/paths

Check locations of lspci and setpci command:
Code:
command -v lspci setpci

Download pciutils to user folder and build it (doesn't matter where you download it to or build it from):
Code:
cd ~
git clone https://github.com/joevt/pciutils.git
cd pciutils
chmod +x lib/configure
make clean
make
sudo make install
#sudo make install-lib # do this only if you want to build other utilities that use pciutils

Check locations of lspci and setpci command again:
Code:
command -v lspci setpci

Test lspci:
Code:
sudo lspci -Adetect
sudo lspci -nnvvv

Download pcitree.sh to pcitree directory in user folder (doesn't matter where you download it to).
Code:
cd ~
git clone https://gist.github.com/e3cd4ff08aae06279134969c98ca3ab7.git pcitree
cd pcitree
chmod +x pcitree.sh

Test pcitree.sh again:
Code:
cd ~/pcitree
sudo ./pcitree.sh > pcitree_MacPro6,1_02.txt

Was that a typo? Should be 1600 MB/s?
I was referring to my test of a USB 10 Gbps device where I got 850 MB/s using Thunderbolt 1. A USB 10 Gbps device should be able to get ≈1060 MB/s.

1600 MB/s would be for a PCIe device (NVMe) device using Thunderbolt 2.

Theoretical max (without protocol overhead) for USB 10 Gbps is 10Gbps * 128b/132b = 9.697 Gbps = 1212.12 MB/s.
Theoretical max (without protocol overhead) for Thunderbolt 1 is 10 Gbps = 1250 MB/s.
Theoretical max (without protocol overhead) for PCIe 5 GT/s x 4 = 20 GT/s * 8b/10b = 16 Gbps. = 2000 MB/s.
Theoretical max (without protocol overhead) for Thunderbolt 2 is 20 Gbps = 2500 MB/s but Thunderbolt 2 controller is only PCIe 5 GT/s x 4.
Theoretical max (without protocol overhead) for PCIe 8 GT/s x 4 = 32 GT/s * 128b/130b = 31.5 Gbps = 3938 MB/s.
Theoretical max (without protocol overhead) for Thunderbolt 2 is 40 Gbps = 5000 MB/s but Thunderbolt 3 controller is only 8 GT/s x 4 and PCIe traffic is usually limited to < 24 Gb/s 3000 MB/s.

Thunderbolt uses 64b/66b encoding but the 10/20/40 Gbps numbers already take that into account - Thunderbolt actually uses 10.3125 or 20.625 MHz clocks.
 
  • Like
Reactions: steve123

tabormeister

macrumors member
Jul 9, 2018
90
24
Southern PA
Which Thunderbolt Express Dock? The one I found has Thunderbolt 1 ports.

There's a Thunderbolt 3 Express Dock HD. It seems adequate. No DisplayPort 1.4 support and no ports that support 10 Gbps USB except the 2nd Thunderbolt port. I guess that's ok for someone who's only going to use it with a Thunderbolt 2 Mac that won't be using 10 Gbps USB and 20 Gbps NVMe at the same time.
F4U095 is the one I was talking about, just a cheap way to get a powered tb3 port on a trash can MP. Other dock features not as important.
 

steve123

macrumors 6502a
Aug 26, 2007
991
566
The pcitree.sh output is missing the link rates and class codes and device names. You may be running old versions.
https://gist.github.com/joevt/e3cd4ff08aae06279134969c98ca3ab7
That is the version I have. I prepended the path to my installation of pciutils in the script:
Code:
# Add path to pciutils directory
PATH="$HOME/Applications/pciutils/sbin${PATH:+:${PATH}}"

I cloned the pciutils repo and compiled the master branch. The last commit in the master branch is f19c33bfdfc5b106c1be5f4cc9b43b9cae8089d4.

Here is the output of -Adetect:
Code:
barbie-en0:Mac Pro 6,1 stevenslupsky$ sudo lspci -Adetect
Password:
Trying method darwin......using AppleACPIPlatformExpert...OK
Trying method darwin2......using IOPCIBridge...OK
Trying method darwin3......cannot open DirectHW...No.
Trying method intel-conf1......DirectHW.kext not loaded...no I/O permission...No.
Trying method intel-conf2......no I/O permission...No.

Apologies, I think the output I posted earlier was generated before I realized that setpci was used multiple times in the script. I had prepended the path of the lspci and setpci commands with the path of the pciutils. When I realized my mistake I prepended the PATH instead.

Here is the (hopefully correct) pcitree.sh:
Code:
#=========================================================================================
┬[0000:00]
├─00:00.0                 # g1x4 > g0x0    [8086:0e00] [060000] (rev 04) Class                                : Device
├┬00:01.0-[10-fe]         # g3x8           [8086:0e02] [060400] (rev 04) Class                                : Device
│└┬10:00.0-[11-fe]        # g3x8           [10b5:8723] [060400] (rev ca) Class                                : Device
│ ├┬11:01.0-[13]          # g3x4 > g2x1    [10b5:8723] [060400] (rev ca) Class                                : Device
│ │└─13:00.0              # g2x1           [1b73:1100] [0c0330] (rev 10) Class                                : Device
│ ├┬11:02.0-[b1-fe]       # g3x4 > g2x4    [10b5:8723] [060400] (rev ca) Class                                : Device
│ │└┬b1:00.0-[b2-fe]      # g2x4           [8086:156d] [060400]          Class                                : Device
│ │ ├┬b2:00.0-[b3]        # g1x4           [8086:156d] [060400]          Class                                : Device
│ │ │└─b3:00.0            # g1x4           [8086:156c] [088000]          Class                                : Device
│ │ ├┬b2:03.0-[e7-ef]     # g1x4           [8086:156d] [060400]          Class                                : Device
│ │ │└┬e7:00.0-[e8-ef]    # g1x4           [8086:1513] [060400]          Class                                : Device
│ │ │ ├┬e8:00.0-[eb-ed]   # g1x4 > g1x1    [8086:1513] [060400]          Class                                : Device
│ │ │ │└┬eb:00.0-[ec-ed]  # g1x1           [12d8:400c] [060400] (rev 02) Class                                : Device
│ │ │ │ └┬ec:03.0-[ed]    # g1x1           [12d8:400c] [060400] (rev 02) Class                                : Device
│ │ │ │  ├─ed:00.0        # g1x1           [12d8:400e] [0c0310] (rev 01) Class                                : Device
│ │ │ │  ├─ed:00.1        # g1x1           [12d8:400e] [0c0310] (rev 01) Class                                : Device
│ │ │ │  └─ed:00.2        # g1x1           [12d8:400f] [0c0320] (rev 03) Class                                : Device
│ │ │ ├┬e8:01.0-[ea]      # g1x4 > g1x1    [8086:1513] [060400]          Class                                : Device
│ │ │ │└─ea:00.0          # g1x1           [14e4:16b0] [020000] (rev 10) Class                                : Device
│ │ │ ├┬e8:02.0-[e9]      # g1x4 > g1x1    [8086:1513] [060400]          Class                                : Device
│ │ │ │└─e9:00.0          # g1x1           [11c1:5901] [0c0010] (rev 08) Class                                : Device
│ │ │ ├┬e8:03.0-[XX]      # g1x4           [ffff:ffff] [060400]          Class                                : Device
│ │ │ ├┬e8:04.0-[ef]      # g1x4           [8086:1513] [060400]          Class                                : Device
│ │ │ ├┬e8:05.0-[ee]      # g1x4           [8086:1513] [060400]          Class                                : Device
│ │ │ └┬e8:06.0-[XX]      # g1x4           [ffff:ffff] [060400]          Class                                : Device
│ │ ├┬b2:04.0-[d6]        # g1x4           [8086:156d] [060400]          Class                                : Device
│ │ ├┬b2:05.0-[c5]        # g1x4           [8086:156d] [060400]          Class                                : Device
│ │ └┬b2:06.0-[b4]        # g1x4           [8086:156d] [060400]          Class                                : Device
│ ├┬11:08.0-[12]          # g3x8 > g1x0    [10b5:8723] [060400] (rev ca) Class                                : Device
│ ├┬11:09.0-[63-b0]       # g3x4 > g2x4    [10b5:8723] [060400] (rev ca) Class                                : Device
│ │└┬63:00.0-[64-b0]      # g2x4           [8086:156d] [060400]          Class                                : Device
│ │ ├┬64:00.0-[65]        # g1x4           [8086:156d] [060400]          Class                                : Device
│ │ │└─65:00.0            # g1x4           [8086:156c] [088000]          Class                                : Device
│ │ ├┬64:03.0-[9c-a0]     # g1x4           [8086:156d] [060400]          Class                                : Device
│ │ │└┬9c:00.0-[9d-a0]    # g1x4           [8086:1513] [060400]          Class                                : Device
│ │ │ ├┬9d:03.0-[9e]      # g2x4 > g2x2    [8086:1513] [060400]          Class                                : Device
│ │ │ │└─9e:00.0          # g2x2           [1b4b:9182] [010601] (rev 11) Class                                : Device
│ │ │ ├┬9d:04.0-[a0]      # g1x4           [8086:1513] [060400]          Class                                : Device
│ │ │ ├┬9d:05.0-[9f]      # g1x4           [8086:1513] [060400]          Class                                : Device
│ │ │ └┬9d:06.0-[XX]      # g1x4           [ffff:ffff] [060400]          Class                                : Device
│ │ ├┬64:04.0-[8a]        # g1x4           [8086:156d] [060400]          Class                                : Device
│ │ ├┬64:05.0-[78]        # g1x4           [8086:156d] [060400]          Class                                : Device
│ │ └┬64:06.0-[66]        # g1x4           [8086:156d] [060400]          Class                                : Device
│ └┬11:0a.0-[14-62]       # g3x4 > g2x4    [10b5:8723] [060400] (rev ca) Class                                : Device
│  └┬14:00.0-[15-62]      # g2x4           [8086:156d] [060400]          Class                                : Device
│   ├┬15:00.0-[16]        # g1x4           [8086:156d] [060400]          Class                                : Device
│   │└─16:00.0            # g1x4           [8086:156c] [088000]          Class                                : Device
│   ├┬15:03.0-[4a-52]     # g1x4           [8086:156d] [060400]          Class                                : Device
│   │└┬4a:00.0-[4b-52]    # g1x4           [8086:0b26] [060400] (rev 03) Class                                : Device
│   │ ├┬4b:00.0-[4d]      # g1x4           [8086:0b26] [060400] (rev 03) Class                                : Device
│   │ │└─4d:00.0          # g1x4           [8086:0b27] [0c0330] (rev 03) Class                                : Device
│   │ ├┬4b:01.0-[4e-52]   # g1x4           [8086:0b26] [060400] (rev 03) Class                                : Device
│   │ │└┬4e:00.0-[4f-52]  # g3x4 > g1x4    [8086:15ef] [060400] (rev 06) Class                                : Device
│   │ │ ├┬4f:01.0-[52]    # g3x4           [8086:15ef] [060400] (rev 06) Class                                : Device
│   │ │ │└─52:00.0        # g4x4 > g3x4    [144d:a80a] [010802]          Class                                : Device
│   │ │ ├┬4f:02.0-[50]    # g1x4           [8086:15ef] [060400] (rev 06) Class                                : Device
│   │ │ │└─50:00.0        # g1x4           [8086:15f0] [0c0330] (rev 06) Class                                : Device
│   │ │ └┬4f:04.0-[51]    # g1x4           [8086:15ef] [060400] (rev 06) Class                                : Device
│   │ ├┬4b:02.0-[XX]      # g1x4           [ffff:ffff] [060400] (rev 03) Class                                : Device
│   │ ├┬4b:03.0-[XX]      # g1x4           [ffff:ffff] [060400] (rev 03) Class                                : Device
│   │ └┬4b:04.0-[4c]      # g3x1 > g1x4    [8086:0b26] [060400] (rev 03) Class                                : Device
│   ├┬15:04.0-[39]        # g1x4           [8086:156d] [060400]          Class                                : Device
│   ├┬15:05.0-[28]        # g1x4           [8086:156d] [060400]          Class                                : Device
│   └┬15:06.0-[17]        # g1x4           [8086:156d] [060400]          Class                                : Device
├┬00:02.0-[02]            # g3x16          [8086:0e04] [060400] (rev 04) Class                                : Device
│├─02:00.0                # g3x16          [1002:679e] [030000]          Class                                : Device
│└─02:00.1                # g3x16          [1002:aaa0] [040300]          Class                                : Device
├┬00:03.0-[06]            # g3x16          [8086:0e08] [060400] (rev 04) Class                                : Device
│├─06:00.0                # g3x16          [1002:679e] [030000]          Class                                : Device
│└─06:00.1                # g3x16          [1002:aaa0] [040300]          Class                                : Device
├─00:04.0                 # g0x0           [8086:0e20] [088000] (rev 04) Class                                : Device
├─00:04.1                 # g0x0           [8086:0e21] [088000] (rev 04) Class                                : Device
├─00:04.2                 # g0x0           [8086:0e22] [088000] (rev 04) Class                                : Device
├─00:04.3                 # g0x0           [8086:0e23] [088000] (rev 04) Class                                : Device
├─00:04.4                 # g0x0           [8086:0e24] [088000] (rev 04) Class                                : Device
├─00:04.5                 # g0x0           [8086:0e25] [088000] (rev 04) Class                                : Device
├─00:04.6                 # g0x0           [8086:0e26] [088000] (rev 04) Class                                : Device
├─00:04.7                 # g0x0           [8086:0e27] [088000] (rev 04) Class                                : Device
├─00:05.0                 # g0x0           [8086:0e28] [088000] (rev 04) Class                                : Device
├─00:05.1                 # g0x0           [8086:0e29] [088000] (rev 04) Class                                : Device
├─00:05.2                 # g0x0           [8086:0e2a] [088000] (rev 04) Class                                : Device
├─00:05.4                 # g0x0           [8086:0e2c] [080020] (rev 04) Class                                : Device
├┬00:11.0-[0a]            # g1x1           [8086:1d3e] [060400] (rev 06) Class                                : Device
├─00:16.0                 #                [8086:1d3a] [078000] (rev 05) Class                                : Device
├─00:1b.0                 # g0x0           [8086:1d20] [040300] (rev 06) Class                                : Device
├┬00:1c.0-[0b]            # g2x1 > g1x1    [8086:1d10] [060400] (rev b6) Class                                : Device
│└─0b:00.0                # g1x1           [14e4:1682] [020000]          Class                                : Device
├┬00:1c.1-[0c]            # g2x1 > g1x1    [8086:1d12] [060400] (rev b6) Class                                : Device
│└─0c:00.0                # g1x1           [14e4:1682] [020000]          Class                                : Device
├┬00:1c.2-[0d]            # g2x1 > g1x1    [8086:1d14] [060400] (rev b6) Class                                : Device
│└─0d:00.0                # g1x1           [14e4:43a0] [028000] (rev 03) Class                                : Device
├┬00:1c.4-[0e]            # g2x4           [8086:1d18] [060400] (rev b6) Class                                : Device
│└─0e:00.0                # g4x4 > g2x4    [2646:5013] [010802] (rev 01) Class                                : Device
├─00:1d.0                 #                [8086:1d26] [0c0320] (rev 06) Class                                : Device
├┬00:1e.0-[0f]            #                [8086:244e] [060401] (rev a6) Class                                : Device
├─00:1f.0                 #                [8086:1d41] [060100] (rev 06) Class                                : Device
├─00:1f.2                 #                [8086:1d02] [010601] (rev 06) Class                                : Device
└─00:1f.3                 #                [8086:1d22] [0c0500] (rev 06) Class                                : Device
┬[0000:ff]
├─ff:08.0                 #                [8086:0e80] [088000] (rev 04) Class                                : Device
├─ff:08.3                 # g0x0           [8086:0e83] [088000] (rev 04) Class                                : Device
├─ff:08.4                 # g0x0           [8086:0e84] [088000] (rev 04) Class                                : Device
├─ff:09.0                 #                [8086:0e90] [088000] (rev 04) Class                                : Device
├─ff:09.3                 # g0x0           [8086:0e93] [088000] (rev 04) Class                                : Device
├─ff:09.4                 # g0x0           [8086:0e94] [088000] (rev 04) Class                                : Device
├─ff:0a.0                 #                [8086:0ec0] [088000] (rev 04) Class                                : Device
├─ff:0a.1                 #                [8086:0ec1] [088000] (rev 04) Class                                : Device
├─ff:0a.2                 #                [8086:0ec2] [088000] (rev 04) Class                                : Device
├─ff:0a.3                 #                [8086:0ec3] [088000] (rev 04) Class                                : Device
├─ff:0b.0                 #                [8086:0e1e] [088000] (rev 04) Class                                : Device
├─ff:0b.3                 #                [8086:0e1f] [088000] (rev 04) Class                                : Device
├─ff:0c.0                 #                [8086:0ee0] [088000] (rev 04) Class                                : Device
├─ff:0c.1                 #                [8086:0ee2] [088000] (rev 04) Class                                : Device
├─ff:0c.2                 #                [8086:0ee4] [088000] (rev 04) Class                                : Device
├─ff:0d.0                 #                [8086:0ee1] [088000] (rev 04) Class                                : Device
├─ff:0d.1                 #                [8086:0ee3] [088000] (rev 04) Class                                : Device
├─ff:0d.2                 #                [8086:0ee5] [088000] (rev 04) Class                                : Device
├─ff:0e.0                 #                [8086:0ea0] [088000] (rev 04) Class                                : Device
├─ff:0e.1                 #                [8086:0e30] [110100] (rev 04) Class                                : Device
├─ff:0f.0                 # g0x0           [8086:0ea8] [088000] (rev 04) Class                                : Device
├─ff:0f.1                 # g0x0           [8086:0e71] [088000] (rev 04) Class                                : Device
├─ff:0f.2                 # g0x0           [8086:0eaa] [088000] (rev 04) Class                                : Device
├─ff:0f.3                 # g0x0           [8086:0eab] [088000] (rev 04) Class                                : Device
├─ff:0f.4                 # g0x0           [8086:0eac] [088000] (rev 04) Class                                : Device
├─ff:0f.5                 # g0x0           [8086:0ead] [088000] (rev 04) Class                                : Device
├─ff:0f.6                 # g0x0           [8086:0eae] [088000] (rev 04) Class                                : Device
├─ff:10.0                 # g0x0           [8086:0eb0] [088000] (rev 04) Class                                : Device
├─ff:10.1                 # g0x0           [8086:0eb1] [088000] (rev 04) Class                                : Device
├─ff:10.2                 # g0x0           [8086:0eb2] [088000] (rev 04) Class                                : Device
├─ff:10.3                 # g0x0           [8086:0eb3] [088000] (rev 04) Class                                : Device
├─ff:10.4                 # g0x0           [8086:0eb4] [088000] (rev 04) Class                                : Device
├─ff:10.5                 # g0x0           [8086:0eb5] [088000] (rev 04) Class                                : Device
├─ff:10.6                 # g0x0           [8086:0eb6] [088000] (rev 04) Class                                : Device
├─ff:10.7                 # g0x0           [8086:0eb7] [088000] (rev 04) Class                                : Device
├─ff:11.0                 # g0x0           [8086:0eb8] [088000] (rev 04) Class                                : Device
├─ff:13.0                 #                [8086:0e1d] [088000] (rev 04) Class                                : Device
├─ff:13.1                 #                [8086:0e34] [110100] (rev 04) Class                                : Device
├─ff:13.4                 #                [8086:0e81] [088000] (rev 04) Class                                : Device
├─ff:13.5                 #                [8086:0e36] [110100] (rev 04) Class                                : Device
├─ff:13.6                 #                [8086:0e37] [110100] (rev 04) Class                                : Device
├─ff:16.0                 #                [8086:0ec8] [088000] (rev 04) Class                                : Device
├─ff:16.1                 #                [8086:0ec9] [088000] (rev 04) Class                                : Device
└─ff:16.2                 #                [8086:0eca] [088000] (rev 04) Class                                : Device
 
Last edited:

steve123

macrumors 6502a
Aug 26, 2007
991
566
For macOS, you would need something like DirectHW.kext to get access to Thunderbolt registers.
Which repo do you recommend for DirectHW.kext? Is there an OCLP option for installing it? Or, can I boot Linux in a VM and access the Thunderbolt registers that way?

There is not much info in System Information regarding the Thunderbolt port the OWC hub it attached to:
Screen Shot 2023-04-09 at 11.33.28 AM.png


It is weird that the port works at all. The fact there is a PCIe tunnel using the Thunderbolt port and the SSD volumes are mounted but nothing appears in the Thunderbolt connections is odd. I found some fine print on the OWC web site last night that says "Thunderbolt/Thunderbolt 2 host connection is not supported".

I should point out that when my FTB (Sid's Franken Thunderbolt Apparatus == Apple adapter + HUB + SDD) is attached, boot time is affected ... there is an additional delay of about 30 or 40 seconds after the chime before the Apple logo appears. When verbose boot is turned on, there is no output for the same 30 or 40 seconds. I suspect this is the point at which the PCIe bridges are configured and the Thunderbolt devices are configured. Maybe there is some sort of timeout causing the Thunderbolt enumeration to fail at this point. Eventually the timeout expires, the volumes mount, Apple logo appears and the boot completes.
 
Last edited:

steve123

macrumors 6502a
Aug 26, 2007
991
566
Here is the DROM for
ioreg:/Root/MacPro6,1/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG0@1/IOPP/BR00@0/IOPP/BR10@A/IOPP/UFS0@0/IOPP/DSB0@0/IOPP/NHI0@0/ThunderboltDROM

Code:
barbie-en0:Mac Pro 6,1 stevenslupsky$ dumpdrom
0x01) UID: 0x0001000E00825612
0x0d) Device ROM Revision: 1
0x10) Vendor ID: 0x1
0x12) Device ID: 0xB
0x14) Device Revision: 0x1
0x15) EEPROM Revision: 2
0x16)   1: 820282000000
0x1e)   2: 920182000000
0x26)   3: 820482010000
0x2e)   4: 920382010000
0x36)   5: 000000000000
0x3e)   6: 60
0x41)   7: 80
0x44)   8: a0
0x47)   9: c0
0x4a) - A:
0x4c)   B: 500082
0x51)   C: 500084
0x56)   1: "Apple Inc."
0x63)   2: "Macintosh"
0x6f) End

I think these screen shots show the downstream Falcon Ridge TB PCIe bridge (which is connected to the SSD) is linked to Thunderbolt Down adapter IOThunderboltPort@6:
Screen Shot 2023-04-09 at 12.53.17 PM.png
Screen Shot 2023-04-09 at 12.53.24 PM.png

Screen Shot 2023-04-09 at 12.59.21 PM.png
 
Last edited:

joevt

Contributor
Jun 21, 2012
6,689
4,086
Here is the (hopefully correct) pcitree.sh:
Code:
├─00:00.0                 # g1x4 > g0x0    [8086:0e00] [060000] (rev 04) Class                                : Device
pciutils expects the pci ids database to be at /usr/local/share/pci.ids.gz which is where the sudo make install command would put it. The database is used to get the Class and Device names.

Which repo do you recommend for DirectHW.kext? Is there an OCLP option for installing it? Or, can I boot Linux in a VM and access the Thunderbolt registers that way?
I would use my fork of DirectHW.kext. OCLP doesn't have an option for DirectHW.kext since it's not needed to run any version of macOS on unsupported Macs. VM's in macOS can't access PCI devices such as Thunderbolt controllers. Maybe a VM in Windows or Linux can?

pciutils doesn't need DirectHW.kext for modern Intel Macs. pciutils needs it for PowerPC Macs and Apple Silicon Macs but I think it causes a kernel panic on Apple Silicon Macs. I don't have an Apple Silicon Mac to test or fix that.

DirectHW.kext can be used by flashrom to read or write ROMs of motherboards and PCIe cards on Macs. I haven't done much testing with flashrom.

As for Thunderbolt, I don't think DirectHW.kext is sufficient. To read Thunderbolt registers, a kext like DirectHW.kext would need to be created. A utility would use the kext to read the registers and output the information they contain.

There is not much info in System Information regarding the Thunderbolt port the OWC hub it attached to:
At least you can see how to map the PCI Down Adapter (port 6) to the PCI device (DSB1) and vice versa using the PCI Path and Thunderbolt Path in each of those nodes. There's four PCI Down Adapters but only 2 Thunderbolt ports, so that means there's a way to get two PCIe 10 Gbps links per port? I don't think I've seen that before. Thunderbolt 1 has the same bandwidth as Thunderbolt 2 (20 Gbps) except that the bandwidth of any one Adapter cannot exceed 10 Gbps. I know Thunderbolt 1 can't connect a 16 Gbps display but can connect two 8 Gbps displays (because each display is on a different lane).

It is weird that the port works at all. The fact there is a PCIe tunnel using the Thunderbolt port and the SSD volumes are mounted but nothing appears in the Thunderbolt connections is odd. I found some fine print on the OWC web site last night that says "Thunderbolt/Thunderbolt 2 host connection is not supported".
It's the difference between the EFI software and the macOS software. Or it's the difference between the built in Thunderbolt Connection Manager of the Thunderbolt controllers that gets used before macOS uses its own Thunderbolt Connection Manager. I'm not sure which Connection Manager is used before macOS starts. In order to boot from Thunderbolt, something has to set up the connections and that happens before macOS is booted.

I should point out that when my FTB (Sid's Franken Thunderbolt Apparatus == Apple adapter + HUB + SDD) is attached, boot time is affected ... there is an additional delay of about 30 or 40 seconds after the chime before the Apple logo appears. When verbose boot is turned on, there is no output for the same 30 or 40 seconds. I suspect this is the point at which the PCIe bridges are configured and the Thunderbolt devices are configured. Maybe there is some sort of timeout causing the Thunderbolt enumeration to fail at this point. Eventually the timeout expires, the volumes mount, Apple logo appears and the boot completes.
Before the Apple logo appears is before macOS starts. Thunderbolt enumeration is succeeding during EFI which is how your NVMe is visible (though maybe verify that in the UEFI Shell of OpenCore). It's the macOS Thunderbolt software that is failing.
 

steve123

macrumors 6502a
Aug 26, 2007
991
566
pciutils expects the pci ids database to be at /usr/local/share/pci.ids.gz which is where the sudo make install command would put it. The database is used to get the Class and Device names.
Thanks for the tip. Looks like that path is hard coded instead of relative so my local ~/Applications install does not find the database. I installed it into the standard directory.

I encountered a problem that was causing the pcitree.sh script to fail. lspci was truncating the output of a few lines in the tree:
Code:
0000:ff:0f.2 System peripheral [0880]: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers [808... (rev 04)
    Subsystem: Intel Corporation Device [8086:0000]
    Flags: fast devsel
    Capabilities: [40] Express Root Complex Integrated Endpoint, MSI 00


0000:ff:0f.3 System peripheral [0880]: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers [808... (rev 04)
    Subsystem: Intel Corporation Device [8086:0000]
    Flags: fast devsel
    Capabilities: [40] Express Root Complex Integrated Endpoint, MSI 00


0000:ff:0f.4 System peripheral [0880]: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers [808... (rev 04)
    Subsystem: Intel Corporation Device [8086:0000]
    Flags: fast devsel
    Capabilities: [40] Express Root Complex Integrated Endpoint, MSI 00


0000:ff:0f.5 System peripheral [0880]: Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers [808... (rev 04)
    Subsystem: Intel Corporation Device [8086:0000]
    Flags: fast devsel
    Capabilities: [40] Express Root Complex Integrated Endpoint, MSI 00


I created an issue at the pciutils repo:


Here is the updated pcitree output (a lot more readable):
Code:
#=========================================================================================
┬[0000:00]
├─00:00.0                 # g1x4 > g0x0    [8086:0e00] [060000] (rev 04) Host bridge                          : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 DMI2
├┬00:01.0-[10-fe]         # g3x8           [8086:0e02] [060400] (rev 04) PCI bridge [Normal decode]           : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1a
│└┬10:00.0-[11-fe]        # g3x8           [10b5:8723] [060400] (rev ca) PCI bridge [Normal decode]           : PLX Technology, Inc. Device
│ ├┬11:01.0-[13]          # g3x4 > g2x1    [10b5:8723] [060400] (rev ca) PCI bridge [Normal decode]           : PLX Technology, Inc. Device
│ │└─13:00.0              # g2x1           [1b73:1100] [0c0330] (rev 10) USB controller [XHCI]                : Fresco Logic FL1100 USB 3.0 Host Controller
│ ├┬11:02.0-[b1-fe]       # g3x4 > g2x4    [10b5:8723] [060400] (rev ca) PCI bridge [Normal decode]           : PLX Technology, Inc. Device
│ │└┬b1:00.0-[b2-fe]      # g2x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ │ ├┬b2:00.0-[b3]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ │ │└─b3:00.0            # g1x4           [8086:156c] [088000]          System peripheral                    : Intel Corporation DSL5520 Thunderbolt 2 NHI [Falcon Ridge 4C 2013]
│ │ ├┬b2:03.0-[e7-ef]     # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ │ │└┬e7:00.0-[e8-ef]    # g1x4           [8086:1513] [060400]          PCI bridge [Normal decode]           : Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
│ │ │ ├┬e8:00.0-[eb-ed]   # g1x4 > g1x1    [8086:1513] [060400]          PCI bridge [Normal decode]           : Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
│ │ │ │└┬eb:00.0-[ec-ed]  # g1x1           [12d8:400c] [060400] (rev 02) PCI bridge [Normal decode]           : Pericom Semiconductor Device
│ │ │ │ └┬ec:03.0-[ed]    # g1x1           [12d8:400c] [060400] (rev 02) PCI bridge [Normal decode]           : Pericom Semiconductor Device
│ │ │ │  ├─ed:00.0        # g1x1           [12d8:400e] [0c0310] (rev 01) USB controller [OHCI]                : Pericom Semiconductor PI7C9X442SL USB OHCI Controller
│ │ │ │  ├─ed:00.1        # g1x1           [12d8:400e] [0c0310] (rev 01) USB controller [OHCI]                : Pericom Semiconductor PI7C9X442SL USB OHCI Controller
│ │ │ │  └─ed:00.2        # g1x1           [12d8:400f] [0c0320] (rev 03) USB controller [EHCI]                : Pericom Semiconductor PI7C9X442SL USB EHCI Controller
│ │ │ ├┬e8:01.0-[ea]      # g1x4 > g1x1    [8086:1513] [060400]          PCI bridge [Normal decode]           : Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
│ │ │ │└─ea:00.0          # g1x1           [14e4:16b0] [020000] (rev 10) Ethernet controller                  : Broadcom Inc. and subsidiaries NetXtreme BCM57761 Gigabit Ethernet PCIe
│ │ │ ├┬e8:02.0-[e9]      # g1x4 > g1x1    [8086:1513] [060400]          PCI bridge [Normal decode]           : Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
│ │ │ │└─e9:00.0          # g1x1           [11c1:5901] [0c0010] (rev 08) FireWire (IEEE 1394) [OHCI]          : LSI Corporation FW643 [TrueFire] PCIe 1394b Controller
│ │ │ ├┬e8:03.0-[XX]      # g1x4           [ffff:ffff] [060400]          PCI bridge [Normal decode]           : Illegal Vendor ID Device
│ │ │ ├┬e8:04.0-[ef]      # g1x4           [8086:1513] [060400]          PCI bridge [Normal decode]           : Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
│ │ │ ├┬e8:05.0-[ee]      # g1x4           [8086:1513] [060400]          PCI bridge [Normal decode]           : Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
│ │ │ └┬e8:06.0-[XX]      # g1x4           [ffff:ffff] [060400]          PCI bridge [Normal decode]           : Illegal Vendor ID Device
│ │ ├┬b2:04.0-[d6]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ │ ├┬b2:05.0-[c5]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ │ └┬b2:06.0-[b4]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ ├┬11:08.0-[12]          # g3x8 > g1x0    [10b5:8723] [060400] (rev ca) PCI bridge [Normal decode]           : PLX Technology, Inc. Device
│ ├┬11:09.0-[63-b0]       # g3x4 > g2x4    [10b5:8723] [060400] (rev ca) PCI bridge [Normal decode]           : PLX Technology, Inc. Device
│ │└┬63:00.0-[64-b0]      # g2x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ │ ├┬64:00.0-[65]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ │ │└─65:00.0            # g1x4           [8086:156c] [088000]          System peripheral                    : Intel Corporation DSL5520 Thunderbolt 2 NHI [Falcon Ridge 4C 2013]
│ │ ├┬64:03.0-[9c-a0]     # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ │ │└┬9c:00.0-[9d-a0]    # g1x4           [8086:1513] [060400]          PCI bridge [Normal decode]           : Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
│ │ │ ├┬9d:03.0-[9e]      # g2x4 > g2x2    [8086:1513] [060400]          PCI bridge [Normal decode]           : Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
│ │ │ │└─9e:00.0          # g2x2           [1b4b:9182] [010601] (rev 11) SATA controller [AHCI 1.0]           : Marvell Technology Group Ltd. 88SE9182 PCIe 2.0 x2 2-port SATA 6 Gb/s Controller
│ │ │ ├┬9d:04.0-[a0]      # g1x4           [8086:1513] [060400]          PCI bridge [Normal decode]           : Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
│ │ │ ├┬9d:05.0-[9f]      # g1x4           [8086:1513] [060400]          PCI bridge [Normal decode]           : Intel Corporation CV82524 Thunderbolt Controller [Light Ridge 4C 2010]
│ │ │ └┬9d:06.0-[XX]      # g1x4           [ffff:ffff] [060400]          PCI bridge [Normal decode]           : Illegal Vendor ID Device
│ │ ├┬64:04.0-[8a]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ │ ├┬64:05.0-[78]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ │ └┬64:06.0-[66]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│ └┬11:0a.0-[14-62]       # g3x4 > g2x4    [10b5:8723] [060400] (rev ca) PCI bridge [Normal decode]           : PLX Technology, Inc. Device
│  └┬14:00.0-[15-62]      # g2x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│   ├┬15:00.0-[16]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│   │└─16:00.0            # g1x4           [8086:156c] [088000]          System peripheral                    : Intel Corporation DSL5520 Thunderbolt 2 NHI [Falcon Ridge 4C 2013]
│   ├┬15:03.0-[4a-52]     # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│   │└┬4a:00.0-[4b-52]    # g1x4           [8086:0b26] [060400] (rev 03) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│   │ ├┬4b:00.0-[4d]      # g1x4           [8086:0b26] [060400] (rev 03) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│   │ │└─4d:00.0          # g1x4           [8086:0b27] [0c0330] (rev 03) USB controller [XHCI]                : Intel Corporation Thunderbolt 4 USB Controller [Goshen Ridge 2020]
│   │ ├┬4b:01.0-[4e-52]   # g1x4           [8086:0b26] [060400] (rev 03) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│   │ │└┬4e:00.0-[4f-52]  # g3x4 > g1x4    [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│   │ │ ├┬4f:01.0-[52]    # g3x4           [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│   │ │ │└─52:00.0        # g4x4 > g3x4    [144d:a80a] [010802]          Non-Volatile memory controller [NVM Express] : Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO
│   │ │ ├┬4f:02.0-[50]    # g1x4           [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│   │ │ │└─50:00.0        # g1x4           [8086:15f0] [0c0330] (rev 06) USB controller [XHCI]                : Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge DD 2018]
│   │ │ └┬4f:04.0-[51]    # g1x4           [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│   │ ├┬4b:02.0-[XX]      # g1x4           [ffff:ffff] [060400] (rev 03) PCI bridge [Normal decode]           : Illegal Vendor ID Device
│   │ ├┬4b:03.0-[XX]      # g1x4           [ffff:ffff] [060400] (rev 03) PCI bridge [Normal decode]           : Illegal Vendor ID Device
│   │ └┬4b:04.0-[4c]      # g3x1 > g1x4    [8086:0b26] [060400] (rev 03) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│   ├┬15:04.0-[39]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│   ├┬15:05.0-[28]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
│   └┬15:06.0-[17]        # g1x4           [8086:156d] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
├┬00:02.0-[02]            # g3x16          [8086:0e04] [060400] (rev 04) PCI bridge [Normal decode]           : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2a
│├─02:00.0                # g3x16          [1002:679e] [030000]          VGA compatible controller [VGA controller] : Advanced Micro Devices, Inc. [AMD/ATI] Tahiti LE [Radeon HD 7870 XT]
│└─02:00.1                # g3x16          [1002:aaa0] [040300]          Audio device                         : Advanced Micro Devices, Inc. [AMD/ATI] Tahiti HDMI Audio [Radeon HD 7870 XT / 7950/7970]
├┬00:03.0-[06]            # g3x16          [8086:0e08] [060400] (rev 04) PCI bridge [Normal decode]           : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3a
│├─06:00.0                # g3x16          [1002:679e] [030000]          VGA compatible controller [VGA controller] : Advanced Micro Devices, Inc. [AMD/ATI] Tahiti LE [Radeon HD 7870 XT]
│└─06:00.1                # g3x16          [1002:aaa0] [040300]          Audio device                         : Advanced Micro Devices, Inc. [AMD/ATI] Tahiti HDMI Audio [Radeon HD 7870 XT / 7950/7970]
├─00:04.0                 # g0x0           [8086:0e20] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0
├─00:04.1                 # g0x0           [8086:0e21] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1
├─00:04.2                 # g0x0           [8086:0e22] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2
├─00:04.3                 # g0x0           [8086:0e23] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3
├─00:04.4                 # g0x0           [8086:0e24] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4
├─00:04.5                 # g0x0           [8086:0e25] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5
├─00:04.6                 # g0x0           [8086:0e26] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6
├─00:04.7                 # g0x0           [8086:0e27] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7
├─00:05.0                 # g0x0           [8086:0e28] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 VTd/Memory Map/Misc
├─00:05.1                 # g0x0           [8086:0e29] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Memory Hotplug
├─00:05.2                 # g0x0           [8086:0e2a] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 IIO RAS
├─00:05.4                 # g0x0           [8086:0e2c] [080020] (rev 04) PIC [IO(X)-APIC]                     : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 IOAPIC
├┬00:11.0-[0a]            # g1x1           [8086:1d3e] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation C600/X79 series chipset PCI Express Virtual Root Port
├─00:16.0                 #                [8086:1d3a] [078000] (rev 05) Communication controller             : Intel Corporation C600/X79 series chipset MEI Controller #1
├─00:1b.0                 # g0x0           [8086:1d20] [040300] (rev 06) Audio device                         : Intel Corporation C600/X79 series chipset High Definition Audio Controller
├┬00:1c.0-[0b]            # g2x1 > g1x1    [8086:1d10] [060400] (rev b6) PCI bridge [Normal decode]           : Intel Corporation C600/X79 series chipset PCI Express Root Port 1
│└─0b:00.0                # g1x1           [14e4:1682] [020000]          Ethernet controller                  : Broadcom Inc. and subsidiaries NetXtreme BCM57762 Gigabit Ethernet PCIe
├┬00:1c.1-[0c]            # g2x1 > g1x1    [8086:1d12] [060400] (rev b6) PCI bridge [Normal decode]           : Intel Corporation C600/X79 series chipset PCI Express Root Port 2
│└─0c:00.0                # g1x1           [14e4:1682] [020000]          Ethernet controller                  : Broadcom Inc. and subsidiaries NetXtreme BCM57762 Gigabit Ethernet PCIe
├┬00:1c.2-[0d]            # g2x1 > g1x1    [8086:1d14] [060400] (rev b6) PCI bridge [Normal decode]           : Intel Corporation C600/X79 series chipset PCI Express Root Port 3
│└─0d:00.0                # g1x1           [14e4:43a0] [028000] (rev 03) Network controller                   : Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter
├┬00:1c.4-[0e]            # g2x4           [8086:1d18] [060400] (rev b6) PCI bridge [Normal decode]           : Intel Corporation C600/X79 series chipset PCI Express Root Port 5
│└─0e:00.0                # g4x4 > g2x4    [2646:5013] [010802] (rev 01) Non-Volatile memory controller [NVM Express] : Kingston Technology Company, Inc. Device
├─00:1d.0                 #                [8086:1d26] [0c0320] (rev 06) USB controller [EHCI]                : Intel Corporation C600/X79 series chipset USB2 Enhanced Host Controller #1
├┬00:1e.0-[0f]            #                [8086:244e] [060401] (rev a6) PCI bridge [Subtractive decode]      : Intel Corporation 82801 PCI Bridge
├─00:1f.0                 #                [8086:1d41] [060100] (rev 06) ISA bridge                           : Intel Corporation C600/X79 series chipset LPC Controller
├─00:1f.2                 #                [8086:1d02] [010601] (rev 06) SATA controller [AHCI 1.0]           : Intel Corporation C600/X79 series chipset 6-Port SATA AHCI Controller
└─00:1f.3                 #                [8086:1d22] [0c0500] (rev 06) SMBus                                : Intel Corporation C600/X79 series chipset SMBus Host Controller
┬[0000:ff]
├─ff:08.0                 #                [8086:0e80] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0
├─ff:08.3                 # g0x0           [8086:0e83] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0
├─ff:08.4                 # g0x0           [8086:0e84] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0
├─ff:09.0                 #                [8086:0e90] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1
├─ff:09.3                 # g0x0           [8086:0e93] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1
├─ff:09.4                 # g0x0           [8086:0e94] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 1
├─ff:0a.0                 #                [8086:0ec0] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 0
├─ff:0a.1                 #                [8086:0ec1] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 1
├─ff:0a.2                 #                [8086:0ec2] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 2
├─ff:0a.3                 #                [8086:0ec3] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 3
├─ff:0b.0                 #                [8086:0e1e] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers
├─ff:0b.3                 #                [8086:0e1f] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers
├─ff:0c.0                 #                [8086:0ee0] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
├─ff:0c.1                 #                [8086:0ee2] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
├─ff:0c.2                 #                [8086:0ee4] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
├─ff:0d.0                 #                [8086:0ee1] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
├─ff:0d.1                 #                [8086:0ee3] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
├─ff:0d.2                 #                [8086:0ee5] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
├─ff:0e.0                 #                [8086:0ea0] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0
├─ff:0e.1                 #                [8086:0e30] [110100] (rev 04) Performance counters                 : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0
├─ff:0f.0                 # g0x0           [8086:0ea8] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Target Address/Thermal Registers
├─ff:0f.1                 # g0x0           [8086:0e71] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 RAS Registers
├─ff:0f.2                 # g0x0           [8086:0eaa] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
├─ff:0f.3                 # g0x0           [8086:0eab] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
├─ff:0f.4                 # g0x0           [8086:0eac] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
├─ff:0f.5                 # g0x0           [8086:0ead] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
├─ff:0f.6                 # g0x0           [8086:0eae] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
├─ff:10.0                 # g0x0           [8086:0eb0] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 0
├─ff:10.1                 # g0x0           [8086:0eb1] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 1
├─ff:10.2                 # g0x0           [8086:0eb2] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0
├─ff:10.3                 # g0x0           [8086:0eb3] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1
├─ff:10.4                 # g0x0           [8086:0eb4] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 2
├─ff:10.5                 # g0x0           [8086:0eb5] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 3
├─ff:10.6                 # g0x0           [8086:0eb6] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2
├─ff:10.7                 # g0x0           [8086:0eb7] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3
├─ff:11.0                 # g0x0           [8086:0eb8] [088000] (rev 04) System peripheral                    : Intel Corporation Device
├─ff:13.0                 #                [8086:0e1d] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe
├─ff:13.1                 #                [8086:0e34] [110100] (rev 04) Performance counters                 : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe
├─ff:13.4                 #                [8086:0e81] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers
├─ff:13.5                 #                [8086:0e36] [110100] (rev 04) Performance counters                 : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
├─ff:13.6                 #                [8086:0e37] [110100] (rev 04) Performance counters                 : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
├─ff:16.0                 #                [8086:0ec8] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 System Address Decoder
├─ff:16.1                 #                [8086:0ec9] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers
└─ff:16.2                 #                [8086:0eca] [088000] (rev 04) System peripheral                    : Intel Corporation Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers
 
Last edited:

steve123

macrumors 6502a
Aug 26, 2007
991
566
Any idea where the link speed for the pcie tunnel is located? I suppose there would be two tunnels? Falcon Ridge to Goshen Ridge and Goshen Ridge to Titan Ridge?
 

joevt

Contributor
Jun 21, 2012
6,689
4,086
Thanks for the tip. Looks like that path is hard coded instead of relative so my local ~/Applications install does not find the database. I installed it into the standard directory.

I encountered a problem that was causing the pcitree.sh script to fail. lspci was truncating the output of a few lines in the tree:

I created an issue at the pciutils repo:
Good catch. I should update my fork one day.

Any idea where the link speed for the pcie tunnel is located? I suppose there would be two tunnels? Falcon Ridge to Goshen Ridge and Goshen Ridge to Titan Ridge?
In the Thunderbolt registers that I listed at #30 . Check Negotiated Link Width and Current Link Speed. I have not researched how to access them. I would look at the linux code for the Thunderbolt debugfs. Each Thunderbolt device will have a link width / link rate for upstream (not the host) and downstream (not the last Thunderbolt device).

pciutils can only access the PCI config space (and extended config space) registers of the host Thunderbolt controller and any attached peripheral Thunderbolt controllers that were properly enumerated. If there's no fancy PCI config space register there that can address the Thunderbolt port config space registers, then you'll have to go through one of the BARs (probably of the NHI). flashrom can get access to BARs on macOS using DirectHW.kext. It does this for the satasii programmer for example but I don't like how it maps the BAR into its user space which is why I would suggest creating a kext dedicated to Thunderbolt probing.

Question: can the Thunderbolt port config registers of a peripheral Thunderbolt controller be accessed from the host Thunderbolt controller using some kind of path or does the peripheral Thunderbolt controller need to be enumerated into PCI config space first? I think a host Thunderbolt controller can get info from a downstream Thunderbolt without enabling PCI tunnelling. This is a security feature where the OS asks if you want to allow the newly connected Thunderbolt device to connect. Then the question becomes: can it access Thunderbolt controllers that are downstream to a downstream Thunderbolt controller where neither is enumerated into PCI config space?
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.