What are PCI bridges, Host bridges, and Non-Essential Instrumentation?

Hello all

When looking at my IOMMU groups, I see PCI bridges, Host bridges, and Non-Essential Instrumentation. What are these things?

Do they affect passing through? In particular this IOMMU group:

IOMMU Group 19 03:08.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:57a4]
IOMMU Group 19 08:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP [1022:1485]
IOMMU Group 19 08:00.1 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller [1022:149c]
IOMMU Group 19 08:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller [1022:149c]

I would like to passthrough the USB controllers, but does the PCI bridge or Non-Essential Instrumentation prevent that? What would happen if I tried?

That’s not too bad for a group, I’d just include the non essential instrument thing in your passthrough config as well.

The pci bridges are firmware voodoo used to create the groups as I understand it . Could be completely wrong.

Thank you for the info @gordonthree.

Would you know if host bridges are the same as PCI bridges? And any idea why I would have a dozen groups containing only a host bridge or a PCI bridge and nothing else?

Same thing on my threadripper, so many groups with no physical devices in them.

Not a kernel developer, but as I understand it host bridges provide connection between an external bus and the internal IO of the CPU. A PCI bridge is there to connect external devices or something like a SMBus to the PCI bus.

You can see some of this with the lstopo command. There’s a host bus connection to a root pci bridge, which connects to other buses and devices. There’s a host bridge for the root USB devices too as I recall.

If I had to guess…

Many of them are extras, available to attach devices or different busses to, that aren’t implemented at the motherboard level.

Both both AMD and Intel use the same architecture in both server and desktop chips. All these unused groups could be considered vestigial on a desktop platform.

That makes sense. Thanks!

1 Like