When a PCI bridge is not enabled, the secondary bus may still be zero. This causes an infinite recursive call to enumerate bus 0 which results in a stack overflow. The easy fix is to skip the recursive bus enumeration for devices which are not enabled either for memory or I/O accesses.
TEST=Build and run CorebootPayloadPkg on Quark/Galileo Gen2 Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Lee Leahy <[email protected]> --- DuetPkg/PciBusNoEnumerationDxe/PciEnumeratorSupport.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/DuetPkg/PciBusNoEnumerationDxe/PciEnumeratorSupport.c b/DuetPkg/PciBusNoEnumerationDxe/PciEnumeratorSupport.c index 80b2b6b..7f8393a 100644 --- a/DuetPkg/PciBusNoEnumerationDxe/PciEnumeratorSupport.c +++ b/DuetPkg/PciBusNoEnumerationDxe/PciEnumeratorSupport.c @@ -243,7 +243,9 @@ Returns: // // - if (!EFI_ERROR (Status) && (IS_PCI_BRIDGE (&Pci) || IS_CARDBUS_BRIDGE (&Pci))) { + if (!EFI_ERROR (Status) && (Pci.Hdr.Command & (EFI_PCI_COMMAND_IO_SPACE + | EFI_PCI_COMMAND_MEMORY_SPACE)) + && (IS_PCI_BRIDGE (&Pci) || IS_CARDBUS_BRIDGE (&Pci))) { // // If it is PPB, we need to get the secondary bus to continue the enumeration -- 1.9.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

