diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c index 5921533a81..f75a5c4fc5 100644 --- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c +++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridge.c @@ -685,7 +685,8 @@ ResourceConflict ( for (Link = GetFirstNode (&HostBridge->RootBridges), Descriptor = Resources; !IsNull (&HostBridge->RootBridges, Link); Link = GetNextNode (&HostBridge->RootBridges, Link)) { RootBridge = ROOT_BRIDGE_FROM_LINK (Link); - for (Index = TypeIo; Index < TypeMax; Index++) { + // MU_CHANGE - PCI_RESOURCE_TYPE_ENUM_START + for (Index = PCI_RESOURCE_TYPE_ENUM_START; Index < TypeMax; Index++) { ResAllocNode = &RootBridge->ResAllocNode[Index]; Descriptor->Desc = ACPI_ADDRESS_SPACE_DESCRIPTOR; @@ -928,7 +929,8 @@ NotifyPhase ( RootBridge = ROOT_BRIDGE_FROM_LINK (Link); DEBUG ((DEBUG_INFO, " RootBridge: %s\n", RootBridge->DevicePathStr)); - for (Index1 = TypeIo; Index1 < TypeBus; Index1++) { + // MU_CHANGE - PCI_RESOURCE_TYPE_ENUM_START + for (Index1 = PCI_RESOURCE_TYPE_ENUM_START; Index1 < TypeBus; Index1++) { if (RootBridge->ResAllocNode[Index1].Status == ResNone) { ResNodeHandled[Index1] = TRUE; } else { @@ -937,7 +939,8 @@ NotifyPhase ( // MaxAlignment = 0; Index = TypeMax; - for (Index2 = TypeIo; Index2 < TypeBus; Index2++) { + // MU_CHANGE - PCI_RESOURCE_TYPE_ENUM_START + for (Index2 = PCI_RESOURCE_TYPE_ENUM_START; Index2 < TypeBus; Index2++) { if (ResNodeHandled[Index2]) { continue; } @@ -1142,7 +1145,8 @@ NotifyPhase ( ) { RootBridge = ROOT_BRIDGE_FROM_LINK (Link); - for (Index = TypeIo; Index < TypeBus; Index++) { + // MU_CHANGE - PCI_RESOURCE_TYPE_ENUM_START + for (Index = PCI_RESOURCE_TYPE_ENUM_START; Index < TypeBus; Index++) { if (RootBridge->ResAllocNode[Index].Status == ResAllocated) { switch (Index) { case TypeIo: @@ -1642,7 +1646,8 @@ GetProposedResources ( } Descriptor = (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *)Buffer; - for (Index = 0; Index < TypeBus; Index++) { + // MU_CHANGE - PCI_RESOURCE_TYPE_ENUM_START + for (Index = PCI_RESOURCE_TYPE_ENUM_START; Index < TypeBus; Index++) { ResStatus = RootBridge->ResAllocNode[Index].Status; if (ResStatus != ResNone) { Descriptor->Desc = ACPI_ADDRESS_SPACE_DESCRIPTOR; diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostResource.h b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostResource.h index 772f4b513f..572abc0c80 100644 --- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostResource.h +++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostResource.h @@ -24,6 +24,16 @@ typedef enum { TypeMax } PCI_RESOURCE_TYPE; +// MU_CHANGE begin +// Only processor type X64 has IO resource +#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64) + +#define PCI_RESOURCE_TYPE_ENUM_START TypeIo +#else +#define PCI_RESOURCE_TYPE_ENUM_START TypeMem32 +#endif +// MU_CHANGE end + typedef enum { ResNone, ResSubmitted, diff --git a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c index 216f797deb..b03d107f8f 100644 --- a/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c +++ b/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciRootBridgeIo.c @@ -226,7 +226,8 @@ CreateRootBridge ( CopyMem (&RootBridge->PMem, &Bridge->PMem, sizeof (PCI_ROOT_BRIDGE_APERTURE)); CopyMem (&RootBridge->PMemAbove4G, &Bridge->PMemAbove4G, sizeof (PCI_ROOT_BRIDGE_APERTURE)); - for (Index = TypeIo; Index < TypeMax; Index++) { + // MU_CHANGE - PCI_RESOURCE_TYPE_ENUM_START + for (Index = PCI_RESOURCE_TYPE_ENUM_START; Index < TypeMax; Index++) { switch (Index) { case TypeBus: Aperture = &RootBridge->Bus; @@ -1940,7 +1941,8 @@ RootBridgeIoConfiguration ( TypeMax * sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) + sizeof (EFI_ACPI_END_TAG_DESCRIPTOR) ); Descriptor = RootBridge->ConfigBuffer; - for (Index = TypeIo; Index < TypeMax; Index++) { + // MU_CHANGE - PCI_RESOURCE_TYPE_ENUM_START + for (Index = PCI_RESOURCE_TYPE_ENUM_START; Index < TypeMax; Index++) { ResAllocNode = &RootBridge->ResAllocNode[Index]; if (ResAllocNode->Status != ResAllocated) {