On 05/30/17 18:23, Vladimir Olovyannikov wrote: > Hi, > > I've started PCIe stack implementation design for an armv8 aarch64 > platform. > The platform's PCIe represents several host bridges, and each hostbridge > has one rootbridge. > They do not share any resources between each other. > Looking into the PciHostBridgeDxe implementation I can see that it > supports only one hostbridge, and there is a comment: > // Most systems in the world including complex servers have only one Host > Bridge. > > So in my case should I create my own PciHostBridgeDxe driver supporting > multiple hostbridges and do not use the Industry standard driver? > I am very new to it, and will appreciate any help or idea.
I think you can use PciHostBridgeDxe on this platform: - Implement a PciHostBridgeLib instance (see <MdeModulePkg/Include/Library/PciHostBridgeLib.h>) that returns PCI_ROOT_BRIDGE objects with different Segment fields, from PciHostBridgeGetRootBridges(). - Implement a PciSegmentLib instance (see <MdePkg/Include/Library/PciSegmentLib.h>) that routes the config space addresses, encoded by the PCI_SEGMENT_LIB_ADDRESS() macro, according to your platform. PciHostBridgeDxe and PciBusDxe should "just work" atop. To my understanding, PciBusDxe delegates all config space accesses to PciHostBridgeDxe, via EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL. And PciHostBridgeDxe delegates all config space accesses to the platform's PciSegmentLib. Thanks, Laszlo _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel