diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c index a6ade26..8f36e90 100644 --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.c @@ -2382,21 +2382,21 @@ PciEnumeratorLight ( Status = PciRootBridgeIo->Configuration (PciRootBridgeIo, (VOID **) &Descriptors); - if (EFI_ERROR (Status)) { - return Status; - } +// if (EFI_ERROR (Status)) { +// return Status; +// } - while (PciGetBusRange (&Descriptors, &MinBus, &MaxBus, NULL) == EFI_SUCCESS) { +// while (PciGetBusRange (&Descriptors, &MinBus, &MaxBus, NULL) == EFI_SUCCESS) { // // Create a device node for root bridge device with a NULL host bridge controller handle // RootBridgeDev = CreateRootBridge (Controller); - if (RootBridgeDev == NULL) { - Descriptors++; - continue; - } +// if (RootBridgeDev == NULL) { +// Descriptors++; +// continue; +// } // // Record the root bridgeio protocol @@ -2437,8 +2437,8 @@ PciEnumeratorLight ( DestroyRootBridge (RootBridgeDev); } - Descriptors++; - } +// Descriptors++; +// } return EFI_SUCCESS; } diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c index f72598d..39a0e4c 100644 --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c @@ -1770,7 +1770,7 @@ GetMmioAddressTranslationOffset ( (VOID **) &Configuration ); if (EFI_ERROR (Status)) { - return (UINT64) -1; + return (UINT64) 0; } while (Configuration->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) { diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf index ab5d87e..712497d 100644 --- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf +++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe.inf @@ -53,3 +53,6 @@ [Protocols] [Depex] gEfiCpuIo2ProtocolGuid AND gEfiMetronomeArchProtocolGuid + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration ## SOMETIMES_CONSUMES diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c index cda9b49..9ca98d4 100644 --- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c +++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c @@ -13,6 +13,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ +#include #include "PciHostBridge.h" #include "PciRootBridge.h" #include "PciHostResource.h" @@ -1496,6 +1497,9 @@ RootBridgeIoConfiguration ( EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Descriptor; EFI_ACPI_END_TAG_DESCRIPTOR *End; + if (PcdGetBool (PcdPciDisableBusEnumeration)) + return EFI_UNSUPPORTED; + // // Get this instance of the Root Bridge. //