EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS *Address;\r
BOOLEAN DefaultIo;\r
BOOLEAN DefaultMmio;\r
+ BOOLEAN DefaultPrefMmio;\r
RESOURCE_PADDING ReservationRequest;\r
EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *FirstResource;\r
EFI_STATUS ReservationHintStatus;\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- DefaultIo = TRUE;\r
- DefaultMmio = TRUE;\r
+ DefaultIo = TRUE;\r
+ DefaultMmio = TRUE;\r
+ DefaultPrefMmio = TRUE;\r
\r
//\r
// Init ReservationRequest, and point FirstResource one past the last\r
HighBit = HighBitSetRoundUp32 (ReservationHint.Prefetchable32BitMmio);\r
if (HighBit != -1) {\r
SetMmioPadding (--FirstResource, TRUE, TRUE, (UINTN)HighBit);\r
+ DefaultPrefMmio = FALSE;\r
}\r
} else if ((ReservationHint.Prefetchable64BitMmio > 0) &&\r
(ReservationHint.Prefetchable64BitMmio < MAX_UINT64))\r
HighBit = HighBitSetRoundUp64 (ReservationHint.Prefetchable64BitMmio);\r
if (HighBit != -1) {\r
SetMmioPadding (--FirstResource, TRUE, FALSE, (UINTN)HighBit);\r
+ DefaultPrefMmio = FALSE;\r
}\r
}\r
}\r
);\r
}\r
\r
+ if (DefaultPrefMmio) {\r
+ UINT64 Pci64Size = PcdGet64 (PcdPciMmio64Size);\r
+\r
+ if (Pci64Size > SIZE_32GB) {\r
+ SetMmioPadding (\r
+ --FirstResource,\r
+ TRUE,\r
+ FALSE,\r
+ (UINTN)HighBitSetRoundUp64 (RShiftU64 (Pci64Size, 8))\r
+ );\r
+ }\r
+ }\r
+\r
//\r
// Output a copy of ReservationRequest from the lowest-address populated\r
// entry until the end of the structure (including\r