VOID\r
)\r
{\r
- BOOLEAN *NewStack;\r
- UINTN Size;\r
+ BOOLEAN *NewStack;\r
+ UINTN Size;\r
\r
Size = DEPEX_STACK_SIZE_INCREMENT;\r
if (mDepexEvaluationStack != NULL) {\r
**/\r
BOOLEAN\r
MmIsSchedulable (\r
- IN EFI_MM_DRIVER_ENTRY *DriverEntry\r
+ IN EFI_MM_DRIVER_ENTRY *DriverEntry\r
)\r
{\r
EFI_STATUS Status;\r
EFI_GUID DriverGuid;\r
VOID *Interface;\r
\r
- Operator = FALSE;\r
+ Operator = FALSE;\r
Operator2 = FALSE;\r
\r
if (DriverEntry->After || DriverEntry->Before) {\r
//\r
mDepexEvaluationStackPointer = mDepexEvaluationStack;\r
\r
-\r
Iterator = DriverEntry->Depex;\r
\r
while (TRUE) {\r
// Look at the opcode of the dependency expression instruction.\r
//\r
switch (*Iterator) {\r
- case EFI_DEP_BEFORE:\r
- case EFI_DEP_AFTER:\r
- //\r
- // For a well-formed Dependency Expression, the code should never get here.\r
- // The BEFORE and AFTER are processed prior to this routine's invocation.\r
- // If the code flow arrives at this point, there was a BEFORE or AFTER\r
- // that were not the first opcodes.\r
- //\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected BEFORE or AFTER opcode)\n"));\r
- ASSERT (FALSE);\r
-\r
- case EFI_DEP_PUSH:\r
- //\r
- // Push operator is followed by a GUID. Test to see if the GUID protocol\r
- // is installed and push the boolean result on the stack.\r
- //\r
- CopyMem (&DriverGuid, Iterator + 1, sizeof (EFI_GUID));\r
-\r
- Status = MmLocateProtocol (&DriverGuid, NULL, &Interface);\r
- if (EFI_ERROR (Status) && (mEfiSystemTable != NULL)) {\r
+ case EFI_DEP_BEFORE:\r
+ case EFI_DEP_AFTER:\r
+ //\r
+ // For a well-formed Dependency Expression, the code should never get here.\r
+ // The BEFORE and AFTER are processed prior to this routine's invocation.\r
+ // If the code flow arrives at this point, there was a BEFORE or AFTER\r
+ // that were not the first opcodes.\r
+ //\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected BEFORE or AFTER opcode)\n"));\r
+ ASSERT (FALSE);\r
+\r
+ case EFI_DEP_PUSH:\r
//\r
- // For MM Driver, it may depend on uefi protocols\r
+ // Push operator is followed by a GUID. Test to see if the GUID protocol\r
+ // is installed and push the boolean result on the stack.\r
//\r
- Status = mEfiSystemTable->BootServices->LocateProtocol (&DriverGuid, NULL, &Interface);\r
- }\r
+ CopyMem (&DriverGuid, Iterator + 1, sizeof (EFI_GUID));\r
+\r
+ Status = MmLocateProtocol (&DriverGuid, NULL, &Interface);\r
+ if (EFI_ERROR (Status) && (mEfiSystemTable != NULL)) {\r
+ //\r
+ // For MM Driver, it may depend on uefi protocols\r
+ //\r
+ Status = mEfiSystemTable->BootServices->LocateProtocol (&DriverGuid, NULL, &Interface);\r
+ }\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = FALSE\n", &DriverGuid));\r
+ Status = PushBool (FALSE);\r
+ } else {\r
+ DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = TRUE\n", &DriverGuid));\r
+ *Iterator = EFI_DEP_REPLACE_TRUE;\r
+ Status = PushBool (TRUE);\r
+ }\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ Iterator += sizeof (EFI_GUID);\r
+ break;\r
+\r
+ case EFI_DEP_AND:\r
+ DEBUG ((DEBUG_DISPATCH, " AND\n"));\r
+ Status = PopBool (&Operator);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ Status = PopBool (&Operator2);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ Status = PushBool ((BOOLEAN)(Operator && Operator2));\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_DEP_OR:\r
+ DEBUG ((DEBUG_DISPATCH, " OR\n"));\r
+ Status = PopBool (&Operator);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ Status = PopBool (&Operator2);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ Status = PushBool ((BOOLEAN)(Operator || Operator2));\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_DEP_NOT:\r
+ DEBUG ((DEBUG_DISPATCH, " NOT\n"));\r
+ Status = PopBool (&Operator);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ Status = PushBool ((BOOLEAN)(!Operator));\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_DEP_TRUE:\r
+ DEBUG ((DEBUG_DISPATCH, " TRUE\n"));\r
+ Status = PushBool (TRUE);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ break;\r
\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = FALSE\n", &DriverGuid));\r
+ case EFI_DEP_FALSE:\r
+ DEBUG ((DEBUG_DISPATCH, " FALSE\n"));\r
Status = PushBool (FALSE);\r
- } else {\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_DEP_END:\r
+ DEBUG ((DEBUG_DISPATCH, " END\n"));\r
+ Status = PopBool (&Operator);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = %a\n", Operator ? "TRUE" : "FALSE"));\r
+ return Operator;\r
+\r
+ case EFI_DEP_REPLACE_TRUE:\r
+ CopyMem (&DriverGuid, Iterator + 1, sizeof (EFI_GUID));\r
DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = TRUE\n", &DriverGuid));\r
- *Iterator = EFI_DEP_REPLACE_TRUE;\r
Status = PushBool (TRUE);\r
- }\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
-\r
- Iterator += sizeof (EFI_GUID);\r
- break;\r
-\r
- case EFI_DEP_AND:\r
- DEBUG ((DEBUG_DISPATCH, " AND\n"));\r
- Status = PopBool (&Operator);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
-\r
- Status = PopBool (&Operator2);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
-\r
- Status = PushBool ((BOOLEAN)(Operator && Operator2));\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
- break;\r
-\r
- case EFI_DEP_OR:\r
- DEBUG ((DEBUG_DISPATCH, " OR\n"));\r
- Status = PopBool (&Operator);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
-\r
- Status = PopBool (&Operator2);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
-\r
- Status = PushBool ((BOOLEAN)(Operator || Operator2));\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
- break;\r
-\r
- case EFI_DEP_NOT:\r
- DEBUG ((DEBUG_DISPATCH, " NOT\n"));\r
- Status = PopBool (&Operator);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
-\r
- Status = PushBool ((BOOLEAN)(!Operator));\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
- break;\r
-\r
- case EFI_DEP_TRUE:\r
- DEBUG ((DEBUG_DISPATCH, " TRUE\n"));\r
- Status = PushBool (TRUE);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
- break;\r
-\r
- case EFI_DEP_FALSE:\r
- DEBUG ((DEBUG_DISPATCH, " FALSE\n"));\r
- Status = PushBool (FALSE);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
- break;\r
-\r
- case EFI_DEP_END:\r
- DEBUG ((DEBUG_DISPATCH, " END\n"));\r
- Status = PopBool (&Operator);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = %a\n", Operator ? "TRUE" : "FALSE"));\r
- return Operator;\r
-\r
- case EFI_DEP_REPLACE_TRUE:\r
- CopyMem (&DriverGuid, Iterator + 1, sizeof (EFI_GUID));\r
- DEBUG ((DEBUG_DISPATCH, " PUSH GUID(%g) = TRUE\n", &DriverGuid));\r
- Status = PushBool (TRUE);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
- return FALSE;\r
- }\r
-\r
- Iterator += sizeof (EFI_GUID);\r
- break;\r
-\r
- default:\r
- DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unknown opcode)\n"));\r
- goto Done;\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unexpected error)\n"));\r
+ return FALSE;\r
+ }\r
+\r
+ Iterator += sizeof (EFI_GUID);\r
+ break;\r
+\r
+ default:\r
+ DEBUG ((DEBUG_DISPATCH, " RESULT = FALSE (Unknown opcode)\n"));\r
+ goto Done;\r
}\r
\r
//\r
#define KNOWN_FWVOL_SIGNATURE SIGNATURE_32('k','n','o','w')\r
\r
typedef struct {\r
- UINTN Signature;\r
- LIST_ENTRY Link; // mFwVolList\r
- EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader;\r
+ UINTN Signature;\r
+ LIST_ENTRY Link; // mFwVolList\r
+ EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader;\r
} KNOWN_FWVOL;\r
\r
//\r
**/\r
VOID\r
MmInsertOnScheduledQueueWhileProcessingBeforeAndAfter (\r
- IN EFI_MM_DRIVER_ENTRY *InsertedDriverEntry\r
+ IN EFI_MM_DRIVER_ENTRY *InsertedDriverEntry\r
);\r
\r
//\r
// memory range usage. It is a bit mapped array in which every bit indicates the correspoding\r
// memory page available or not.\r
//\r
-GLOBAL_REMOVE_IF_UNREFERENCED UINT64 *mMmCodeMemoryRangeUsageBitMap=NULL;\r
+GLOBAL_REMOVE_IF_UNREFERENCED UINT64 *mMmCodeMemoryRangeUsageBitMap = NULL;\r
\r
/**\r
To check memory usage bit map array to figure out if the memory range in which the image will be loaded\r
**/\r
EFI_STATUS\r
CheckAndMarkFixLoadingMemoryUsageBitMap (\r
- IN EFI_PHYSICAL_ADDRESS ImageBase,\r
- IN UINTN ImageSize\r
+ IN EFI_PHYSICAL_ADDRESS ImageBase,\r
+ IN UINTN ImageSize\r
)\r
{\r
- UINT32 MmCodePageNumber;\r
- UINT64 MmCodeSize;\r
- EFI_PHYSICAL_ADDRESS MmCodeBase;\r
- UINTN BaseOffsetPageNumber;\r
- UINTN TopOffsetPageNumber;\r
- UINTN Index;\r
+ UINT32 MmCodePageNumber;\r
+ UINT64 MmCodeSize;\r
+ EFI_PHYSICAL_ADDRESS MmCodeBase;\r
+ UINTN BaseOffsetPageNumber;\r
+ UINTN TopOffsetPageNumber;\r
+ UINTN Index;\r
\r
//\r
// Build tool will calculate the smm code size and then patch the PcdLoadFixAddressMmCodePageNumber\r
//\r
MmCodePageNumber = 0;\r
- MmCodeSize = EFI_PAGES_TO_SIZE (MmCodePageNumber);\r
- MmCodeBase = gLoadModuleAtFixAddressMmramBase;\r
+ MmCodeSize = EFI_PAGES_TO_SIZE (MmCodePageNumber);\r
+ MmCodeBase = gLoadModuleAtFixAddressMmramBase;\r
\r
//\r
// If the memory usage bit map is not initialized, do it. Every bit in the array\r
//\r
// see if the memory range for loading the image is in the MM code range.\r
//\r
- if (MmCodeBase + MmCodeSize < ImageBase + ImageSize || MmCodeBase > ImageBase) {\r
+ if ((MmCodeBase + MmCodeSize < ImageBase + ImageSize) || (MmCodeBase > ImageBase)) {\r
return EFI_NOT_FOUND;\r
}\r
\r
//\r
BaseOffsetPageNumber = (UINTN)EFI_SIZE_TO_PAGES ((UINT32)(ImageBase - MmCodeBase));\r
TopOffsetPageNumber = (UINTN)EFI_SIZE_TO_PAGES ((UINT32)(ImageBase + ImageSize - MmCodeBase));\r
- for (Index = BaseOffsetPageNumber; Index < TopOffsetPageNumber; Index ++) {\r
+ for (Index = BaseOffsetPageNumber; Index < TopOffsetPageNumber; Index++) {\r
if ((mMmCodeMemoryRangeUsageBitMap[Index / 64] & LShiftU64 (1, (Index % 64))) != 0) {\r
//\r
// This page is already used.\r
//\r
// Being here means the memory range is available. So mark the bits for the memory range\r
//\r
- for (Index = BaseOffsetPageNumber; Index < TopOffsetPageNumber; Index ++) {\r
+ for (Index = BaseOffsetPageNumber; Index < TopOffsetPageNumber; Index++) {\r
mMmCodeMemoryRangeUsageBitMap[Index / 64] |= LShiftU64 (1, (Index % 64));\r
}\r
- return EFI_SUCCESS;\r
+\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
\r
**/\r
EFI_STATUS\r
-GetPeCoffImageFixLoadingAssignedAddress(\r
+GetPeCoffImageFixLoadingAssignedAddress (\r
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
)\r
{\r
- UINTN SectionHeaderOffset;\r
- EFI_STATUS Status;\r
- EFI_IMAGE_SECTION_HEADER SectionHeader;\r
- EFI_IMAGE_OPTIONAL_HEADER_UNION *ImgHdr;\r
- EFI_PHYSICAL_ADDRESS FixLoadingAddress;\r
- UINT16 Index;\r
- UINTN Size;\r
- UINT16 NumberOfSections;\r
- UINT64 ValueInSectionHeader;\r
+ UINTN SectionHeaderOffset;\r
+ EFI_STATUS Status;\r
+ EFI_IMAGE_SECTION_HEADER SectionHeader;\r
+ EFI_IMAGE_OPTIONAL_HEADER_UNION *ImgHdr;\r
+ EFI_PHYSICAL_ADDRESS FixLoadingAddress;\r
+ UINT16 Index;\r
+ UINTN Size;\r
+ UINT16 NumberOfSections;\r
+ UINT64 ValueInSectionHeader;\r
\r
FixLoadingAddress = 0;\r
- Status = EFI_NOT_FOUND;\r
+ Status = EFI_NOT_FOUND;\r
\r
//\r
// Get PeHeader pointer\r
//\r
- ImgHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)((CHAR8* )ImageContext->Handle + ImageContext->PeCoffHeaderOffset);\r
+ ImgHdr = (EFI_IMAGE_OPTIONAL_HEADER_UNION *)((CHAR8 *)ImageContext->Handle + ImageContext->PeCoffHeaderOffset);\r
SectionHeaderOffset = ImageContext->PeCoffHeaderOffset + sizeof (UINT32) + sizeof (EFI_IMAGE_FILE_HEADER) +\r
- ImgHdr->Pe32.FileHeader.SizeOfOptionalHeader;\r
+ ImgHdr->Pe32.FileHeader.SizeOfOptionalHeader;\r
NumberOfSections = ImgHdr->Pe32.FileHeader.NumberOfSections;\r
\r
//\r
//\r
// Read section header from file\r
//\r
- Size = sizeof (EFI_IMAGE_SECTION_HEADER);\r
+ Size = sizeof (EFI_IMAGE_SECTION_HEADER);\r
Status = ImageContext->ImageRead (\r
ImageContext->Handle,\r
SectionHeaderOffset,\r
// assigned by tools, the PointerToRelocations & PointerToLineNumbers fields should not be\r
// Zero, or else, these 2 fields should be set to Zero\r
//\r
- ValueInSectionHeader = ReadUnaligned64 ((UINT64*)&SectionHeader.PointerToRelocations);\r
+ ValueInSectionHeader = ReadUnaligned64 ((UINT64 *)&SectionHeader.PointerToRelocations);\r
if (ValueInSectionHeader != 0) {\r
//\r
// Found first section header that doesn't point to code section in which build tool saves the\r
// Check if the memory range is available.\r
//\r
Status = CheckAndMarkFixLoadingMemoryUsageBitMap (FixLoadingAddress, (UINTN)(ImageContext->ImageSize + ImageContext->SectionAlignment));\r
- if (!EFI_ERROR(Status)) {\r
+ if (!EFI_ERROR (Status)) {\r
//\r
// The assigned address is valid. Return the specified loading address\r
//\r
ImageContext->ImageAddress = FixLoadingAddress;\r
}\r
}\r
+\r
break;\r
}\r
+\r
SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER);\r
}\r
- DEBUG ((DEBUG_INFO|DEBUG_LOAD, "LOADING MODULE FIXED INFO: Loading module at fixed address %x, Status = %r\n",\r
- FixLoadingAddress, Status));\r
+\r
+ DEBUG ((\r
+ DEBUG_INFO|DEBUG_LOAD,\r
+ "LOADING MODULE FIXED INFO: Loading module at fixed address %x, Status = %r\n",\r
+ FixLoadingAddress,\r
+ Status\r
+ ));\r
return Status;\r
}\r
+\r
/**\r
Loads an EFI image into SMRAM.\r
\r
IN OUT EFI_MM_DRIVER_ENTRY *DriverEntry\r
)\r
{\r
- UINTN PageCount;\r
- EFI_STATUS Status;\r
- EFI_PHYSICAL_ADDRESS DstBuffer;\r
- PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;\r
+ UINTN PageCount;\r
+ EFI_STATUS Status;\r
+ EFI_PHYSICAL_ADDRESS DstBuffer;\r
+ PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;\r
\r
DEBUG ((DEBUG_INFO, "MmLoadImage - %g\n", &DriverEntry->FileName));\r
\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
\r
//\r
// Initialize ImageContext\r
//\r
- ImageContext.Handle = DriverEntry->Pe32Data;\r
+ ImageContext.Handle = DriverEntry->Pe32Data;\r
ImageContext.ImageRead = PeCoffLoaderImageReadFromMemory;\r
\r
//\r
//\r
// Flush the instruction cache so the image data are written before we execute it\r
//\r
- InvalidateInstructionCacheRange ((VOID *)(UINTN) ImageContext.ImageAddress, (UINTN) ImageContext.ImageSize);\r
+ InvalidateInstructionCacheRange ((VOID *)(UINTN)ImageContext.ImageAddress, (UINTN)ImageContext.ImageSize);\r
\r
//\r
// Save Image EntryPoint in DriverEntry\r
//\r
- DriverEntry->ImageEntryPoint = ImageContext.EntryPoint;\r
- DriverEntry->ImageBuffer = DstBuffer;\r
- DriverEntry->NumberOfPage = PageCount;\r
+ DriverEntry->ImageEntryPoint = ImageContext.EntryPoint;\r
+ DriverEntry->ImageBuffer = DstBuffer;\r
+ DriverEntry->NumberOfPage = PageCount;\r
\r
if (mEfiSystemTable != NULL) {\r
Status = mEfiSystemTable->BootServices->AllocatePool (\r
// Fill in the remaining fields of the Loaded Image Protocol instance.\r
// Note: ImageBase is an SMRAM address that can not be accessed outside of SMRAM if SMRAM window is closed.\r
//\r
- DriverEntry->LoadedImage->Revision = EFI_LOADED_IMAGE_PROTOCOL_REVISION;\r
- DriverEntry->LoadedImage->ParentHandle = NULL;\r
- DriverEntry->LoadedImage->SystemTable = mEfiSystemTable;\r
- DriverEntry->LoadedImage->DeviceHandle = NULL;\r
- DriverEntry->LoadedImage->FilePath = NULL;\r
+ DriverEntry->LoadedImage->Revision = EFI_LOADED_IMAGE_PROTOCOL_REVISION;\r
+ DriverEntry->LoadedImage->ParentHandle = NULL;\r
+ DriverEntry->LoadedImage->SystemTable = mEfiSystemTable;\r
+ DriverEntry->LoadedImage->DeviceHandle = NULL;\r
+ DriverEntry->LoadedImage->FilePath = NULL;\r
\r
DriverEntry->LoadedImage->ImageBase = (VOID *)(UINTN)DriverEntry->ImageBuffer;\r
DriverEntry->LoadedImage->ImageSize = ImageContext.ImageSize;\r
// Create a new image handle in the UEFI handle database for the MM Driver\r
//\r
DriverEntry->ImageHandle = NULL;\r
- Status = mEfiSystemTable->BootServices->InstallMultipleProtocolInterfaces (\r
- &DriverEntry->ImageHandle,\r
- &gEfiLoadedImageProtocolGuid,\r
- DriverEntry->LoadedImage,\r
- NULL\r
- );\r
+ Status = mEfiSystemTable->BootServices->InstallMultipleProtocolInterfaces (\r
+ &DriverEntry->ImageHandle,\r
+ &gEfiLoadedImageProtocolGuid,\r
+ DriverEntry->LoadedImage,\r
+ NULL\r
+ );\r
}\r
\r
//\r
//\r
DEBUG_CODE_BEGIN ();\r
\r
- UINTN Index;\r
- UINTN StartIndex;\r
- CHAR8 EfiFileName[256];\r
+ UINTN Index;\r
+ UINTN StartIndex;\r
+ CHAR8 EfiFileName[256];\r
\r
- DEBUG ((DEBUG_INFO | DEBUG_LOAD,\r
- "Loading MM driver at 0x%11p EntryPoint=0x%11p ",\r
- (VOID *)(UINTN) ImageContext.ImageAddress,\r
- FUNCTION_ENTRY_POINT (ImageContext.EntryPoint)));\r
+ DEBUG ((\r
+ DEBUG_INFO | DEBUG_LOAD,\r
+ "Loading MM driver at 0x%11p EntryPoint=0x%11p ",\r
+ (VOID *)(UINTN)ImageContext.ImageAddress,\r
+ FUNCTION_ENTRY_POINT (ImageContext.EntryPoint)\r
+ ));\r
\r
//\r
// Print Module Name by Pdb file path.\r
if (EfiFileName[Index] == 0) {\r
EfiFileName[Index] = '.';\r
}\r
+\r
if (EfiFileName[Index] == '.') {\r
EfiFileName[Index + 1] = 'e';\r
EfiFileName[Index + 2] = 'f';\r
if (Index == sizeof (EfiFileName) - 4) {\r
EfiFileName[Index] = 0;\r
}\r
+\r
DEBUG ((DEBUG_INFO | DEBUG_LOAD, "%a", EfiFileName));\r
}\r
+\r
DEBUG ((DEBUG_INFO | DEBUG_LOAD, "\n"));\r
\r
DEBUG_CODE_END ();\r
{\r
UINT8 *Iterator;\r
\r
- Iterator = DriverEntry->Depex;\r
+ Iterator = DriverEntry->Depex;\r
DriverEntry->Dependent = TRUE;\r
\r
if (*Iterator == EFI_DEP_BEFORE) {\r
IN EFI_MM_DRIVER_ENTRY *DriverEntry\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// Data already read\r
} else {\r
Status = EFI_SUCCESS;\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
if (Status == EFI_PROTOCOL_ERROR) {\r
//\r
//\r
// If no Depex assume depend on all architectural protocols\r
//\r
- DriverEntry->Depex = NULL;\r
- DriverEntry->Dependent = TRUE;\r
+ DriverEntry->Depex = NULL;\r
+ DriverEntry->Dependent = TRUE;\r
DriverEntry->DepexProtocolError = FALSE;\r
}\r
} else {\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- LIST_ENTRY *Link;\r
+ EFI_STATUS Status;\r
+ LIST_ENTRY *Link;\r
EFI_MM_DRIVER_ENTRY *DriverEntry;\r
- BOOLEAN ReadyToRun;\r
+ BOOLEAN ReadyToRun;\r
\r
DEBUG ((DEBUG_INFO, "MmDispatcher\n"));\r
\r
// The MM Driver could not be loaded, and do not attempt to load or start it again.\r
// Take driver from Scheduled to Initialized.\r
//\r
- DriverEntry->Initialized = TRUE;\r
- DriverEntry->Scheduled = FALSE;\r
+ DriverEntry->Initialized = TRUE;\r
+ DriverEntry->Scheduled = FALSE;\r
RemoveEntryList (&DriverEntry->ScheduledLink);\r
\r
//\r
}\r
}\r
\r
- DriverEntry->Scheduled = FALSE;\r
- DriverEntry->Initialized = TRUE;\r
+ DriverEntry->Scheduled = FALSE;\r
+ DriverEntry->Initialized = TRUE;\r
RemoveEntryList (&DriverEntry->ScheduledLink);\r
\r
//\r
//\r
if (mEfiSystemTable == NULL) {\r
DEBUG ((DEBUG_INFO, "StartImage - 0x%x (Standalone Mode)\n", DriverEntry->ImageEntryPoint));\r
- Status = ((MM_IMAGE_ENTRY_POINT)(UINTN)DriverEntry->ImageEntryPoint) (DriverEntry->ImageHandle, &gMmCoreMmst);\r
+ Status = ((MM_IMAGE_ENTRY_POINT)(UINTN)DriverEntry->ImageEntryPoint)(DriverEntry->ImageHandle, &gMmCoreMmst);\r
} else {\r
DEBUG ((DEBUG_INFO, "StartImage - 0x%x (Tradition Mode)\n", DriverEntry->ImageEntryPoint));\r
- Status = ((EFI_IMAGE_ENTRY_POINT)(UINTN)DriverEntry->ImageEntryPoint) (\r
- DriverEntry->ImageHandle,\r
- mEfiSystemTable\r
- );\r
+ Status = ((EFI_IMAGE_ENTRY_POINT)(UINTN)DriverEntry->ImageEntryPoint)(\r
+ DriverEntry->ImageHandle,\r
+ mEfiSystemTable\r
+ );\r
}\r
- if (EFI_ERROR(Status)) {\r
+\r
+ if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_INFO, "StartImage Status - %r\n", Status));\r
- MmFreePages(DriverEntry->ImageBuffer, DriverEntry->NumberOfPage);\r
+ MmFreePages (DriverEntry->ImageBuffer, DriverEntry->NumberOfPage);\r
}\r
}\r
\r
**/\r
VOID\r
MmInsertOnScheduledQueueWhileProcessingBeforeAndAfter (\r
- IN EFI_MM_DRIVER_ENTRY *InsertedDriverEntry\r
+ IN EFI_MM_DRIVER_ENTRY *InsertedDriverEntry\r
)\r
{\r
- LIST_ENTRY *Link;\r
- EFI_MM_DRIVER_ENTRY *DriverEntry;\r
+ LIST_ENTRY *Link;\r
+ EFI_MM_DRIVER_ENTRY *DriverEntry;\r
\r
//\r
// Process Before Dependency\r
//\r
for (Link = mDiscoveredList.ForwardLink; Link != &mDiscoveredList; Link = Link->ForwardLink) {\r
- DriverEntry = CR(Link, EFI_MM_DRIVER_ENTRY, Link, EFI_MM_DRIVER_ENTRY_SIGNATURE);\r
- if (DriverEntry->Before && DriverEntry->Dependent && DriverEntry != InsertedDriverEntry) {\r
+ DriverEntry = CR (Link, EFI_MM_DRIVER_ENTRY, Link, EFI_MM_DRIVER_ENTRY_SIGNATURE);\r
+ if (DriverEntry->Before && DriverEntry->Dependent && (DriverEntry != InsertedDriverEntry)) {\r
DEBUG ((DEBUG_DISPATCH, "Evaluate MM DEPEX for FFS(%g)\n", &DriverEntry->FileName));\r
DEBUG ((DEBUG_DISPATCH, " BEFORE FFS(%g) = ", &DriverEntry->BeforeAfterGuid));\r
if (CompareGuid (&InsertedDriverEntry->FileName, &DriverEntry->BeforeAfterGuid)) {\r
InsertedDriverEntry->Scheduled = TRUE;\r
InsertTailList (&mScheduledQueue, &InsertedDriverEntry->ScheduledLink);\r
\r
-\r
//\r
// Process After Dependency\r
//\r
for (Link = mDiscoveredList.ForwardLink; Link != &mDiscoveredList; Link = Link->ForwardLink) {\r
- DriverEntry = CR(Link, EFI_MM_DRIVER_ENTRY, Link, EFI_MM_DRIVER_ENTRY_SIGNATURE);\r
- if (DriverEntry->After && DriverEntry->Dependent && DriverEntry != InsertedDriverEntry) {\r
+ DriverEntry = CR (Link, EFI_MM_DRIVER_ENTRY, Link, EFI_MM_DRIVER_ENTRY_SIGNATURE);\r
+ if (DriverEntry->After && DriverEntry->Dependent && (DriverEntry != InsertedDriverEntry)) {\r
DEBUG ((DEBUG_DISPATCH, "Evaluate MM DEPEX for FFS(%g)\n", &DriverEntry->FileName));\r
DEBUG ((DEBUG_DISPATCH, " AFTER FFS(%g) = ", &DriverEntry->BeforeAfterGuid));\r
if (CompareGuid (&InsertedDriverEntry->FileName, &DriverEntry->BeforeAfterGuid)) {\r
**/\r
BOOLEAN\r
FvHasBeenProcessed (\r
- IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader\r
+ IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader\r
)\r
{\r
- LIST_ENTRY *Link;\r
- KNOWN_FWVOL *KnownFwVol;\r
+ LIST_ENTRY *Link;\r
+ KNOWN_FWVOL *KnownFwVol;\r
\r
for (Link = mFwVolList.ForwardLink;\r
Link != &mFwVolList;\r
- Link = Link->ForwardLink) {\r
+ Link = Link->ForwardLink)\r
+ {\r
KnownFwVol = CR (Link, KNOWN_FWVOL, Link, KNOWN_FWVOL_SIGNATURE);\r
if (KnownFwVol->FwVolHeader == FwVolHeader) {\r
return TRUE;\r
}\r
}\r
+\r
return FALSE;\r
}\r
\r
**/\r
VOID\r
FvIsBeingProcessed (\r
- IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader\r
+ IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader\r
)\r
{\r
- KNOWN_FWVOL *KnownFwVol;\r
+ KNOWN_FWVOL *KnownFwVol;\r
\r
DEBUG ((DEBUG_INFO, "FvIsBeingProcessed - 0x%08x\n", FwVolHeader));\r
\r
KnownFwVol = AllocatePool (sizeof (KNOWN_FWVOL));\r
ASSERT (KnownFwVol != NULL);\r
\r
- KnownFwVol->Signature = KNOWN_FWVOL_SIGNATURE;\r
+ KnownFwVol->Signature = KNOWN_FWVOL_SIGNATURE;\r
KnownFwVol->FwVolHeader = FwVolHeader;\r
InsertTailList (&mFwVolList, &KnownFwVol->Link);\r
}\r
**/\r
EFI_STATUS\r
MmAddToDriverList (\r
- IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
- IN VOID *Pe32Data,\r
- IN UINTN Pe32DataSize,\r
- IN VOID *Depex,\r
- IN UINTN DepexSize,\r
- IN EFI_GUID *DriverName\r
+ IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
+ IN VOID *Pe32Data,\r
+ IN UINTN Pe32DataSize,\r
+ IN VOID *Depex,\r
+ IN UINTN DepexSize,\r
+ IN EFI_GUID *DriverName\r
)\r
{\r
EFI_MM_DRIVER_ENTRY *DriverEntry;\r
DriverEntry = AllocateZeroPool (sizeof (EFI_MM_DRIVER_ENTRY));\r
ASSERT (DriverEntry != NULL);\r
\r
- DriverEntry->Signature = EFI_MM_DRIVER_ENTRY_SIGNATURE;\r
+ DriverEntry->Signature = EFI_MM_DRIVER_ENTRY_SIGNATURE;\r
CopyGuid (&DriverEntry->FileName, DriverName);\r
- DriverEntry->FwVolHeader = FwVolHeader;\r
- DriverEntry->Pe32Data = Pe32Data;\r
- DriverEntry->Pe32DataSize = Pe32DataSize;\r
- DriverEntry->Depex = Depex;\r
- DriverEntry->DepexSize = DepexSize;\r
+ DriverEntry->FwVolHeader = FwVolHeader;\r
+ DriverEntry->Pe32Data = Pe32Data;\r
+ DriverEntry->Pe32DataSize = Pe32DataSize;\r
+ DriverEntry->Depex = Depex;\r
+ DriverEntry->DepexSize = DepexSize;\r
\r
MmGetDepexSectionAndPreProccess (DriverEntry);\r
\r
VOID\r
)\r
{\r
- LIST_ENTRY *Link;\r
- EFI_MM_DRIVER_ENTRY *DriverEntry;\r
+ LIST_ENTRY *Link;\r
+ EFI_MM_DRIVER_ENTRY *DriverEntry;\r
\r
- for (Link = mDiscoveredList.ForwardLink;Link !=&mDiscoveredList; Link = Link->ForwardLink) {\r
+ for (Link = mDiscoveredList.ForwardLink; Link != &mDiscoveredList; Link = Link->ForwardLink) {\r
DriverEntry = CR (Link, EFI_MM_DRIVER_ENTRY, Link, EFI_MM_DRIVER_ENTRY_SIGNATURE);\r
if (DriverEntry->Dependent) {\r
DEBUG ((DEBUG_LOAD, "MM Driver %g was discovered but not loaded!!\n", &DriverEntry->FileName));\r
//\r
// List of file types supported by dispatcher\r
//\r
-EFI_FV_FILETYPE mMmFileTypes[] = {\r
+EFI_FV_FILETYPE mMmFileTypes[] = {\r
EFI_FV_FILETYPE_MM,\r
- 0xE, //EFI_FV_FILETYPE_MM_STANDALONE,\r
+ 0xE, // EFI_FV_FILETYPE_MM_STANDALONE,\r
//\r
// Note: DXE core will process the FV image file, so skip it in MM core\r
// EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE\r
\r
EFI_STATUS\r
MmAddToDriverList (\r
- IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
- IN VOID *Pe32Data,\r
- IN UINTN Pe32DataSize,\r
- IN VOID *Depex,\r
- IN UINTN DepexSize,\r
- IN EFI_GUID *DriverName\r
+ IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
+ IN VOID *Pe32Data,\r
+ IN UINTN Pe32DataSize,\r
+ IN VOID *Depex,\r
+ IN UINTN DepexSize,\r
+ IN EFI_GUID *DriverName\r
);\r
\r
BOOLEAN\r
FvHasBeenProcessed (\r
- IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader\r
+ IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader\r
);\r
\r
VOID\r
FvIsBeingProcessed (\r
- IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader\r
+ IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader\r
);\r
\r
/**\r
IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_STATUS DepexStatus;\r
- EFI_FFS_FILE_HEADER *FileHeader;\r
- EFI_FV_FILETYPE FileType;\r
- VOID *Pe32Data;\r
- UINTN Pe32DataSize;\r
- VOID *Depex;\r
- UINTN DepexSize;\r
- UINTN Index;\r
- EFI_COMMON_SECTION_HEADER *Section;\r
- VOID *SectionData;\r
- UINTN SectionDataSize;\r
- UINT32 DstBufferSize;\r
- VOID *ScratchBuffer;\r
- UINT32 ScratchBufferSize;\r
- VOID *DstBuffer;\r
- UINT16 SectionAttribute;\r
- UINT32 AuthenticationStatus;\r
- EFI_FIRMWARE_VOLUME_HEADER *InnerFvHeader;\r
+ EFI_STATUS Status;\r
+ EFI_STATUS DepexStatus;\r
+ EFI_FFS_FILE_HEADER *FileHeader;\r
+ EFI_FV_FILETYPE FileType;\r
+ VOID *Pe32Data;\r
+ UINTN Pe32DataSize;\r
+ VOID *Depex;\r
+ UINTN DepexSize;\r
+ UINTN Index;\r
+ EFI_COMMON_SECTION_HEADER *Section;\r
+ VOID *SectionData;\r
+ UINTN SectionDataSize;\r
+ UINT32 DstBufferSize;\r
+ VOID *ScratchBuffer;\r
+ UINT32 ScratchBufferSize;\r
+ VOID *DstBuffer;\r
+ UINT16 SectionAttribute;\r
+ UINT32 AuthenticationStatus;\r
+ EFI_FIRMWARE_VOLUME_HEADER *InnerFvHeader;\r
\r
DEBUG ((DEBUG_INFO, "MmCoreFfsFindMmDriver - 0x%x\n", FwVolHeader));\r
\r
//\r
FileHeader = NULL;\r
do {\r
- Status = FfsFindNextFile (EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE,\r
- FwVolHeader, &FileHeader);\r
+ Status = FfsFindNextFile (\r
+ EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE,\r
+ FwVolHeader,\r
+ &FileHeader\r
+ );\r
if (EFI_ERROR (Status)) {\r
break;\r
}\r
- Status = FfsFindSectionData (EFI_SECTION_GUID_DEFINED, FileHeader,\r
- &SectionData, &SectionDataSize);\r
+\r
+ Status = FfsFindSectionData (\r
+ EFI_SECTION_GUID_DEFINED,\r
+ FileHeader,\r
+ &SectionData,\r
+ &SectionDataSize\r
+ );\r
if (EFI_ERROR (Status)) {\r
break;\r
}\r
+\r
Section = (EFI_COMMON_SECTION_HEADER *)(FileHeader + 1);\r
- Status = ExtractGuidedSectionGetInfo (Section, &DstBufferSize,\r
- &ScratchBufferSize, &SectionAttribute);\r
+ Status = ExtractGuidedSectionGetInfo (\r
+ Section,\r
+ &DstBufferSize,\r
+ &ScratchBufferSize,\r
+ &SectionAttribute\r
+ );\r
if (EFI_ERROR (Status)) {\r
break;\r
}\r
//\r
// Call decompress function\r
//\r
- Status = ExtractGuidedSectionDecode (Section, &DstBuffer, ScratchBuffer,\r
- &AuthenticationStatus);\r
+ Status = ExtractGuidedSectionDecode (\r
+ Section,\r
+ &DstBuffer,\r
+ ScratchBuffer,\r
+ &AuthenticationStatus\r
+ );\r
FreePages (ScratchBuffer, EFI_SIZE_TO_PAGES (ScratchBufferSize));\r
if (EFI_ERROR (Status)) {\r
goto FreeDstBuffer;\r
}\r
\r
- DEBUG ((DEBUG_INFO,\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
"Processing compressed firmware volume (AuthenticationStatus == %x)\n",\r
- AuthenticationStatus));\r
-\r
- Status = FindFfsSectionInSections (DstBuffer, DstBufferSize,\r
- EFI_SECTION_FIRMWARE_VOLUME_IMAGE, &Section);\r
+ AuthenticationStatus\r
+ ));\r
+\r
+ Status = FindFfsSectionInSections (\r
+ DstBuffer,\r
+ DstBufferSize,\r
+ EFI_SECTION_FIRMWARE_VOLUME_IMAGE,\r
+ &Section\r
+ );\r
if (EFI_ERROR (Status)) {\r
goto FreeDstBuffer;\r
}\r
\r
InnerFvHeader = (VOID *)(Section + 1);\r
- Status = MmCoreFfsFindMmDriver (InnerFvHeader);\r
+ Status = MmCoreFfsFindMmDriver (InnerFvHeader);\r
if (EFI_ERROR (Status)) {\r
goto FreeDstBuffer;\r
}\r
\r
for (Index = 0; Index < sizeof (mMmFileTypes) / sizeof (mMmFileTypes[0]); Index++) {\r
DEBUG ((DEBUG_INFO, "Check MmFileTypes - 0x%x\n", mMmFileTypes[Index]));\r
- FileType = mMmFileTypes[Index];\r
+ FileType = mMmFileTypes[Index];\r
FileHeader = NULL;\r
do {\r
Status = FfsFindNextFile (FileType, FwVolHeader, &FileHeader);\r
// mProtocolDatabase - A list of all protocols in the system. (simple list for now)\r
// gHandleList - A list of all the handles in the system\r
//\r
-LIST_ENTRY mProtocolDatabase = INITIALIZE_LIST_HEAD_VARIABLE (mProtocolDatabase);\r
-LIST_ENTRY gHandleList = INITIALIZE_LIST_HEAD_VARIABLE (gHandleList);\r
+LIST_ENTRY mProtocolDatabase = INITIALIZE_LIST_HEAD_VARIABLE (mProtocolDatabase);\r
+LIST_ENTRY gHandleList = INITIALIZE_LIST_HEAD_VARIABLE (gHandleList);\r
\r
/**\r
Check whether a handle is a valid EFI_HANDLE\r
if (Handle == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
if (Handle->Signature != EFI_HANDLE_SIGNATURE) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
**/\r
PROTOCOL_ENTRY *\r
MmFindProtocolEntry (\r
- IN EFI_GUID *Protocol,\r
- IN BOOLEAN Create\r
+ IN EFI_GUID *Protocol,\r
+ IN BOOLEAN Create\r
)\r
{\r
- LIST_ENTRY *Link;\r
- PROTOCOL_ENTRY *Item;\r
- PROTOCOL_ENTRY *ProtEntry;\r
+ LIST_ENTRY *Link;\r
+ PROTOCOL_ENTRY *Item;\r
+ PROTOCOL_ENTRY *ProtEntry;\r
\r
//\r
// Search the database for the matching GUID\r
ProtEntry = NULL;\r
for (Link = mProtocolDatabase.ForwardLink;\r
Link != &mProtocolDatabase;\r
- Link = Link->ForwardLink) {\r
-\r
+ Link = Link->ForwardLink)\r
+ {\r
Item = CR (Link, PROTOCOL_ENTRY, AllEntries, PROTOCOL_ENTRY_SIGNATURE);\r
if (CompareGuid (&Item->ProtocolID, Protocol)) {\r
//\r
// allocate a new entry\r
//\r
if ((ProtEntry == NULL) && Create) {\r
- ProtEntry = AllocatePool (sizeof(PROTOCOL_ENTRY));\r
+ ProtEntry = AllocatePool (sizeof (PROTOCOL_ENTRY));\r
if (ProtEntry != NULL) {\r
//\r
// Initialize new protocol entry structure\r
InsertTailList (&mProtocolDatabase, &ProtEntry->AllEntries);\r
}\r
}\r
+\r
return ProtEntry;\r
}\r
\r
//\r
// Look at each protocol interface for any matches\r
//\r
- for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link=Link->ForwardLink) {\r
+ for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
//\r
// If this protocol interface matches, remove it\r
//\r
Prot = CR (Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
- if (Prot->Interface == Interface && Prot->Protocol == ProtEntry) {\r
+ if ((Prot->Interface == Interface) && (Prot->Protocol == ProtEntry)) {\r
break;\r
}\r
+\r
Prot = NULL;\r
}\r
}\r
+\r
return Prot;\r
}\r
\r
// returns EFI_INVALID_PARAMETER if InterfaceType is invalid.\r
// Also added check for invalid UserHandle and Protocol pointers.\r
//\r
- if (UserHandle == NULL || Protocol == NULL) {\r
+ if ((UserHandle == NULL) || (Protocol == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
DEBUG ((DEBUG_LOAD | DEBUG_INFO, "MmInstallProtocolInterface: %g %p\n", Protocol, Interface));\r
\r
Status = EFI_OUT_OF_RESOURCES;\r
- Prot = NULL;\r
+ Prot = NULL;\r
Handle = NULL;\r
\r
if (*UserHandle != NULL) {\r
// Initialize the protocol interface structure\r
//\r
Prot->Signature = PROTOCOL_INTERFACE_SIGNATURE;\r
- Prot->Handle = Handle;\r
- Prot->Protocol = ProtEntry;\r
+ Prot->Handle = Handle;\r
+ Prot->Protocol = ProtEntry;\r
Prot->Interface = Interface;\r
\r
//\r
if (Notify) {\r
MmNotifyProtocol (Prot);\r
}\r
+\r
Status = EFI_SUCCESS;\r
\r
Done:\r
FreePool (Prot);\r
}\r
}\r
+\r
return Status;\r
}\r
\r
RemoveEntryList (&Handle->AllHandles);\r
FreePool (Handle);\r
}\r
+\r
return Status;\r
}\r
\r
// Look at each protocol interface for a match\r
//\r
for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
- Prot = CR (Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
+ Prot = CR (Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
ProtEntry = Prot->Protocol;\r
if (CompareGuid (&ProtEntry->ProtocolID, Protocol)) {\r
return Prot;\r
}\r
}\r
+\r
return NULL;\r
}\r
\r
\r
#include "StandaloneMmCore.h"\r
\r
-#define CONFIG_TABLE_SIZE_INCREASED 0x10\r
+#define CONFIG_TABLE_SIZE_INCREASED 0x10\r
\r
UINTN mMmSystemTableAllocateSize = 0;\r
\r
EFI_STATUS\r
EFIAPI\r
MmInstallConfigurationTable (\r
- IN CONST EFI_MM_SYSTEM_TABLE *SystemTable,\r
- IN CONST EFI_GUID *Guid,\r
- IN VOID *Table,\r
- IN UINTN TableSize\r
+ IN CONST EFI_MM_SYSTEM_TABLE *SystemTable,\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Table,\r
+ IN UINTN TableSize\r
)\r
{\r
UINTN Index;\r
&(ConfigurationTable[Index + 1]),\r
(gMmCoreMmst.NumberOfTableEntries - Index) * sizeof (EFI_CONFIGURATION_TABLE)\r
);\r
-\r
} else {\r
//\r
// No matching GUIDs were found, so this is an add operation.\r
// Allocate a table with one additional entry.\r
//\r
mMmSystemTableAllocateSize += (CONFIG_TABLE_SIZE_INCREASED * sizeof (EFI_CONFIGURATION_TABLE));\r
- ConfigurationTable = AllocatePool (mMmSystemTableAllocateSize);\r
+ ConfigurationTable = AllocatePool (mMmSystemTableAllocateSize);\r
if (ConfigurationTable == NULL) {\r
//\r
// If a new table could not be allocated, then return an error.\r
//\r
// ProtocolRequest - Last LocateHandle request ID\r
//\r
-UINTN mEfiLocateHandleRequest = 0;\r
+UINTN mEfiLocateHandleRequest = 0;\r
\r
//\r
// Internal prototypes\r
//\r
\r
typedef struct {\r
- EFI_GUID *Protocol;\r
- VOID *SearchKey;\r
- LIST_ENTRY *Position;\r
- PROTOCOL_ENTRY *ProtEntry;\r
+ EFI_GUID *Protocol;\r
+ VOID *SearchKey;\r
+ LIST_ENTRY *Position;\r
+ PROTOCOL_ENTRY *ProtEntry;\r
} LOCATE_POSITION;\r
\r
typedef\r
IHANDLE *\r
-(* CORE_GET_NEXT) (\r
- IN OUT LOCATE_POSITION *Position,\r
- OUT VOID **Interface\r
+(*CORE_GET_NEXT) (\r
+ IN OUT LOCATE_POSITION *Position,\r
+ OUT VOID **Interface\r
);\r
\r
/**\r
OUT VOID **Interface\r
)\r
{\r
- IHANDLE *Handle;\r
+ IHANDLE *Handle;\r
\r
//\r
// Next handle\r
//\r
// If not at the end of the list, get the handle\r
//\r
- Handle = NULL;\r
- *Interface = NULL;\r
+ Handle = NULL;\r
+ *Interface = NULL;\r
if (Position->Position != &gHandleList) {\r
Handle = CR (Position->Position, IHANDLE, AllHandles, EFI_HANDLE_SIGNATURE);\r
}\r
+\r
return Handle;\r
}\r
\r
PROTOCOL_INTERFACE *Prot;\r
LIST_ENTRY *Link;\r
\r
- Handle = NULL;\r
- *Interface = NULL;\r
+ Handle = NULL;\r
+ *Interface = NULL;\r
ProtNotify = Position->SearchKey;\r
\r
//\r
//\r
Link = ProtNotify->Position->ForwardLink;\r
if (Link != &ProtNotify->Protocol->Protocols) {\r
- Prot = CR (Link, PROTOCOL_INTERFACE, ByProtocol, PROTOCOL_INTERFACE_SIGNATURE);\r
- Handle = Prot->Handle;\r
+ Prot = CR (Link, PROTOCOL_INTERFACE, ByProtocol, PROTOCOL_INTERFACE_SIGNATURE);\r
+ Handle = Prot->Handle;\r
*Interface = Prot->Interface;\r
}\r
}\r
+\r
return Handle;\r
}\r
\r
LIST_ENTRY *Link;\r
PROTOCOL_INTERFACE *Prot;\r
\r
- Handle = NULL;\r
- *Interface = NULL;\r
- for (; ;) {\r
+ Handle = NULL;\r
+ *Interface = NULL;\r
+ for ( ; ;) {\r
//\r
// Next entry\r
//\r
- Link = Position->Position->ForwardLink;\r
+ Link = Position->Position->ForwardLink;\r
Position->Position = Link;\r
\r
//\r
//\r
// Get the handle\r
//\r
- Prot = CR (Link, PROTOCOL_INTERFACE, ByProtocol, PROTOCOL_INTERFACE_SIGNATURE);\r
- Handle = Prot->Handle;\r
+ Prot = CR (Link, PROTOCOL_INTERFACE, ByProtocol, PROTOCOL_INTERFACE_SIGNATURE);\r
+ Handle = Prot->Handle;\r
*Interface = Prot->Interface;\r
\r
//\r
break;\r
}\r
}\r
+\r
return Handle;\r
}\r
\r
OUT VOID **Interface\r
)\r
{\r
- EFI_STATUS Status;\r
- LOCATE_POSITION Position;\r
- PROTOCOL_NOTIFY *ProtNotify;\r
- IHANDLE *Handle;\r
+ EFI_STATUS Status;\r
+ LOCATE_POSITION Position;\r
+ PROTOCOL_NOTIFY *ProtNotify;\r
+ IHANDLE *Handle;\r
\r
if ((Interface == NULL) || (Protocol == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
*Interface = NULL;\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
\r
//\r
// Set initial position\r
if (Position.ProtEntry == NULL) {\r
return EFI_NOT_FOUND;\r
}\r
+\r
Position.Position = &Position.ProtEntry->Protocols;\r
\r
Handle = MmGetNextLocateByProtocol (&Position, Interface);\r
// If this is a search by register notify and a handle was\r
// returned, update the register notification position\r
//\r
- ProtNotify = Registration;\r
+ ProtNotify = Registration;\r
ProtNotify->Position = ProtNotify->Position->ForwardLink;\r
}\r
\r
Position.SearchKey = SearchKey;\r
Position.Position = &gHandleList;\r
\r
- ResultSize = 0;\r
- ResultBuffer = (IHANDLE **) Buffer;\r
- Status = EFI_SUCCESS;\r
+ ResultSize = 0;\r
+ ResultBuffer = (IHANDLE **)Buffer;\r
+ Status = EFI_SUCCESS;\r
\r
//\r
// Get the search function based on type\r
//\r
switch (SearchType) {\r
- case AllHandles:\r
- GetNext = MmGetNextLocateAllHandles;\r
- break;\r
+ case AllHandles:\r
+ GetNext = MmGetNextLocateAllHandles;\r
+ break;\r
\r
- case ByRegisterNotify:\r
- GetNext = MmGetNextLocateByRegisterNotify;\r
- //\r
- // Must have SearchKey for locate ByRegisterNotify\r
- //\r
- if (SearchKey == NULL) {\r
- Status = EFI_INVALID_PARAMETER;\r
- }\r
- break;\r
+ case ByRegisterNotify:\r
+ GetNext = MmGetNextLocateByRegisterNotify;\r
+ //\r
+ // Must have SearchKey for locate ByRegisterNotify\r
+ //\r
+ if (SearchKey == NULL) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ }\r
\r
- case ByProtocol:\r
- GetNext = MmGetNextLocateByProtocol;\r
- if (Protocol == NULL) {\r
- Status = EFI_INVALID_PARAMETER;\r
break;\r
- }\r
- //\r
- // Look up the protocol entry and set the head pointer\r
- //\r
- Position.ProtEntry = MmFindProtocolEntry (Protocol, FALSE);\r
- if (Position.ProtEntry == NULL) {\r
- Status = EFI_NOT_FOUND;\r
+\r
+ case ByProtocol:\r
+ GetNext = MmGetNextLocateByProtocol;\r
+ if (Protocol == NULL) {\r
+ Status = EFI_INVALID_PARAMETER;\r
+ break;\r
+ }\r
+\r
+ //\r
+ // Look up the protocol entry and set the head pointer\r
+ //\r
+ Position.ProtEntry = MmFindProtocolEntry (Protocol, FALSE);\r
+ if (Position.ProtEntry == NULL) {\r
+ Status = EFI_NOT_FOUND;\r
+ break;\r
+ }\r
+\r
+ Position.Position = &Position.ProtEntry->Protocols;\r
break;\r
- }\r
- Position.Position = &Position.ProtEntry->Protocols;\r
- break;\r
\r
- default:\r
- Status = EFI_INVALID_PARAMETER;\r
- break;\r
+ default:\r
+ Status = EFI_INVALID_PARAMETER;\r
+ break;\r
}\r
\r
if (EFI_ERROR (Status)) {\r
// Enumerate out the matching handles\r
//\r
mEfiLocateHandleRequest += 1;\r
- for (; ;) {\r
+ for ( ; ;) {\r
//\r
// Get the next handle. If no more handles, stop\r
//\r
//\r
ResultSize += sizeof (Handle);\r
if (ResultSize <= *BufferSize) {\r
- *ResultBuffer = Handle;\r
- ResultBuffer += 1;\r
+ *ResultBuffer = Handle;\r
+ ResultBuffer += 1;\r
}\r
}\r
\r
\r
*BufferSize = ResultSize;\r
\r
- if (SearchType == ByRegisterNotify && !EFI_ERROR (Status)) {\r
+ if ((SearchType == ByRegisterNotify) && !EFI_ERROR (Status)) {\r
ASSERT (SearchKey != NULL);\r
//\r
// If this is a search by register notify and a handle was\r
// returned, update the register notification position\r
//\r
- ProtNotify = SearchKey;\r
+ ProtNotify = SearchKey;\r
ProtNotify->Position = ProtNotify->Position->ForwardLink;\r
}\r
}\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- BufferSize = 0;\r
+ BufferSize = 0;\r
*NumberHandles = 0;\r
- *Buffer = NULL;\r
- Status = MmLocateHandle (\r
- SearchType,\r
- Protocol,\r
- SearchKey,\r
- &BufferSize,\r
- *Buffer\r
- );\r
+ *Buffer = NULL;\r
+ Status = MmLocateHandle (\r
+ SearchType,\r
+ Protocol,\r
+ SearchKey,\r
+ &BufferSize,\r
+ *Buffer\r
+ );\r
//\r
// LocateHandleBuffer() returns incorrect status code if SearchType is\r
// invalid.\r
//\r
// Add code to correctly handle expected errors from MmLocateHandle().\r
//\r
- if (EFI_ERROR (Status) && Status != EFI_BUFFER_TOO_SMALL) {\r
+ if (EFI_ERROR (Status) && (Status != EFI_BUFFER_TOO_SMALL)) {\r
if (Status != EFI_INVALID_PARAMETER) {\r
Status = EFI_NOT_FOUND;\r
}\r
+\r
return Status;\r
}\r
\r
*Buffer\r
);\r
\r
- *NumberHandles = BufferSize / sizeof(EFI_HANDLE);\r
+ *NumberHandles = BufferSize / sizeof (EFI_HANDLE);\r
if (EFI_ERROR (Status)) {\r
*NumberHandles = 0;\r
}\r
#define MMI_ENTRY_SIGNATURE SIGNATURE_32('m','m','i','e')\r
\r
typedef struct {\r
- UINTN Signature;\r
- LIST_ENTRY AllEntries; // All entries\r
+ UINTN Signature;\r
+ LIST_ENTRY AllEntries; // All entries\r
\r
- EFI_GUID HandlerType; // Type of interrupt\r
- LIST_ENTRY MmiHandlers; // All handlers\r
+ EFI_GUID HandlerType; // Type of interrupt\r
+ LIST_ENTRY MmiHandlers; // All handlers\r
} MMI_ENTRY;\r
\r
#define MMI_HANDLER_SIGNATURE SIGNATURE_32('m','m','i','h')\r
MmiEntry = NULL;\r
for (Link = mMmiEntryList.ForwardLink;\r
Link != &mMmiEntryList;\r
- Link = Link->ForwardLink) {\r
-\r
+ Link = Link->ForwardLink)\r
+ {\r
Item = CR (Link, MMI_ENTRY, AllEntries, MMI_ENTRY_SIGNATURE);\r
if (CompareGuid (&Item->HandlerType, HandlerType)) {\r
//\r
InsertTailList (&mMmiEntryList, &MmiEntry->AllEntries);\r
}\r
}\r
+\r
return MmiEntry;\r
}\r
\r
BOOLEAN SuccessReturn;\r
EFI_STATUS Status;\r
\r
- Status = EFI_NOT_FOUND;\r
+ Status = EFI_NOT_FOUND;\r
SuccessReturn = FALSE;\r
if (HandlerType == NULL) {\r
//\r
//\r
// Non-root MMI handler\r
//\r
- MmiEntry = MmCoreFindMmiEntry ((EFI_GUID *) HandlerType, FALSE);\r
+ MmiEntry = MmCoreFindMmiEntry ((EFI_GUID *)HandlerType, FALSE);\r
if (MmiEntry == NULL) {\r
//\r
// There is no handler registered for this interrupt source\r
MmiHandler = CR (Link, MMI_HANDLER, Link, MMI_HANDLER_SIGNATURE);\r
\r
Status = MmiHandler->Handler (\r
- (EFI_HANDLE) MmiHandler,\r
- Context,\r
- CommBuffer,\r
- CommBufferSize\r
- );\r
+ (EFI_HANDLE)MmiHandler,\r
+ Context,\r
+ CommBuffer,\r
+ CommBufferSize\r
+ );\r
\r
switch (Status) {\r
- case EFI_INTERRUPT_PENDING:\r
- //\r
- // If a handler returns EFI_INTERRUPT_PENDING and HandlerType is not NULL then\r
- // no additional handlers will be processed and EFI_INTERRUPT_PENDING will be returned.\r
- //\r
- if (HandlerType != NULL) {\r
- return EFI_INTERRUPT_PENDING;\r
- }\r
- break;\r
-\r
- case EFI_SUCCESS:\r
- //\r
- // If at least one of the handlers returns EFI_SUCCESS then the function will return\r
- // EFI_SUCCESS. If a handler returns EFI_SUCCESS and HandlerType is not NULL then no\r
- // additional handlers will be processed.\r
- //\r
- if (HandlerType != NULL) {\r
- return EFI_SUCCESS;\r
- }\r
- SuccessReturn = TRUE;\r
- break;\r
-\r
- case EFI_WARN_INTERRUPT_SOURCE_QUIESCED:\r
- //\r
- // If at least one of the handlers returns EFI_WARN_INTERRUPT_SOURCE_QUIESCED\r
- // then the function will return EFI_SUCCESS.\r
- //\r
- SuccessReturn = TRUE;\r
- break;\r
-\r
- case EFI_WARN_INTERRUPT_SOURCE_PENDING:\r
- //\r
- // If all the handlers returned EFI_WARN_INTERRUPT_SOURCE_PENDING\r
- // then EFI_WARN_INTERRUPT_SOURCE_PENDING will be returned.\r
- //\r
- break;\r
-\r
- default:\r
- //\r
- // Unexpected status code returned.\r
- //\r
- ASSERT (FALSE);\r
- break;\r
+ case EFI_INTERRUPT_PENDING:\r
+ //\r
+ // If a handler returns EFI_INTERRUPT_PENDING and HandlerType is not NULL then\r
+ // no additional handlers will be processed and EFI_INTERRUPT_PENDING will be returned.\r
+ //\r
+ if (HandlerType != NULL) {\r
+ return EFI_INTERRUPT_PENDING;\r
+ }\r
+\r
+ break;\r
+\r
+ case EFI_SUCCESS:\r
+ //\r
+ // If at least one of the handlers returns EFI_SUCCESS then the function will return\r
+ // EFI_SUCCESS. If a handler returns EFI_SUCCESS and HandlerType is not NULL then no\r
+ // additional handlers will be processed.\r
+ //\r
+ if (HandlerType != NULL) {\r
+ return EFI_SUCCESS;\r
+ }\r
+\r
+ SuccessReturn = TRUE;\r
+ break;\r
+\r
+ case EFI_WARN_INTERRUPT_SOURCE_QUIESCED:\r
+ //\r
+ // If at least one of the handlers returns EFI_WARN_INTERRUPT_SOURCE_QUIESCED\r
+ // then the function will return EFI_SUCCESS.\r
+ //\r
+ SuccessReturn = TRUE;\r
+ break;\r
+\r
+ case EFI_WARN_INTERRUPT_SOURCE_PENDING:\r
+ //\r
+ // If all the handlers returned EFI_WARN_INTERRUPT_SOURCE_PENDING\r
+ // then EFI_WARN_INTERRUPT_SOURCE_PENDING will be returned.\r
+ //\r
+ break;\r
+\r
+ default:\r
+ //\r
+ // Unexpected status code returned.\r
+ //\r
+ ASSERT (FALSE);\r
+ break;\r
}\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
MmiHandlerRegister (\r
- IN EFI_MM_HANDLER_ENTRY_POINT Handler,\r
- IN CONST EFI_GUID *HandlerType OPTIONAL,\r
- OUT EFI_HANDLE *DispatchHandle\r
+ IN EFI_MM_HANDLER_ENTRY_POINT Handler,\r
+ IN CONST EFI_GUID *HandlerType OPTIONAL,\r
+ OUT EFI_HANDLE *DispatchHandle\r
)\r
{\r
MMI_HANDLER *MmiHandler;\r
MMI_ENTRY *MmiEntry;\r
LIST_ENTRY *List;\r
\r
- if (Handler == NULL || DispatchHandle == NULL) {\r
+ if ((Handler == NULL) || (DispatchHandle == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
}\r
\r
MmiHandler->Signature = MMI_HANDLER_SIGNATURE;\r
- MmiHandler->Handler = Handler;\r
+ MmiHandler->Handler = Handler;\r
\r
if (HandlerType == NULL) {\r
//\r
// This is root MMI handler\r
//\r
MmiEntry = NULL;\r
- List = &mRootMmiHandlerList;\r
+ List = &mRootMmiHandlerList;\r
} else {\r
//\r
// None root MMI handler\r
//\r
- MmiEntry = MmCoreFindMmiEntry ((EFI_GUID *) HandlerType, TRUE);\r
+ MmiEntry = MmCoreFindMmiEntry ((EFI_GUID *)HandlerType, TRUE);\r
if (MmiEntry == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
MmiHandler->MmiEntry = MmiEntry;\r
InsertTailList (List, &MmiHandler->Link);\r
\r
- *DispatchHandle = (EFI_HANDLE) MmiHandler;\r
+ *DispatchHandle = (EFI_HANDLE)MmiHandler;\r
\r
return EFI_SUCCESS;\r
}\r
MMI_HANDLER *MmiHandler;\r
MMI_ENTRY *MmiEntry;\r
\r
- MmiHandler = (MMI_HANDLER *) DispatchHandle;\r
+ MmiHandler = (MMI_HANDLER *)DispatchHandle;\r
\r
if (MmiHandler == NULL) {\r
return EFI_INVALID_PARAMETER;\r
LIST_ENTRY *Link;\r
\r
ProtEntry = Prot->Protocol;\r
- for (Link=ProtEntry->Notify.ForwardLink; Link != &ProtEntry->Notify; Link=Link->ForwardLink) {\r
+ for (Link = ProtEntry->Notify.ForwardLink; Link != &ProtEntry->Notify; Link = Link->ForwardLink) {\r
ProtNotify = CR (Link, PROTOCOL_NOTIFY, Link, PROTOCOL_NOTIFY_SIGNATURE);\r
ProtNotify->Function (&ProtEntry->ProtocolID, Prot->Interface, Prot->Handle);\r
}\r
\r
Prot = MmFindProtocolInterface (Handle, Protocol, Interface);\r
if (Prot != NULL) {\r
-\r
ProtEntry = Prot->Protocol;\r
\r
//\r
EFI_STATUS\r
EFIAPI\r
MmRegisterProtocolNotify (\r
- IN CONST EFI_GUID *Protocol,\r
+ IN CONST EFI_GUID *Protocol,\r
IN EFI_MM_NOTIFY_FN Function,\r
- OUT VOID **Registration\r
+ OUT VOID **Registration\r
)\r
{\r
PROTOCOL_ENTRY *ProtEntry;\r
LIST_ENTRY *Link;\r
EFI_STATUS Status;\r
\r
- if (Protocol == NULL || Registration == NULL) {\r
+ if ((Protocol == NULL) || (Registration == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
//\r
// Get the protocol entry per Protocol\r
//\r
- ProtEntry = MmFindProtocolEntry ((EFI_GUID *) Protocol, FALSE);\r
+ ProtEntry = MmFindProtocolEntry ((EFI_GUID *)Protocol, FALSE);\r
if (ProtEntry != NULL) {\r
- ProtNotify = (PROTOCOL_NOTIFY * )*Registration;\r
+ ProtNotify = (PROTOCOL_NOTIFY *)*Registration;\r
for (Link = ProtEntry->Notify.ForwardLink;\r
Link != &ProtEntry->Notify;\r
- Link = Link->ForwardLink) {\r
+ Link = Link->ForwardLink)\r
+ {\r
//\r
// Compare the notification record\r
//\r
}\r
}\r
}\r
+\r
//\r
// If the registration is not found\r
//\r
//\r
// Get the protocol entry to add the notification too\r
//\r
- ProtEntry = MmFindProtocolEntry ((EFI_GUID *) Protocol, TRUE);\r
+ ProtEntry = MmFindProtocolEntry ((EFI_GUID *)Protocol, TRUE);\r
if (ProtEntry != NULL) {\r
//\r
// Find whether notification already exist\r
//\r
for (Link = ProtEntry->Notify.ForwardLink;\r
Link != &ProtEntry->Notify;\r
- Link = Link->ForwardLink) {\r
-\r
+ Link = Link->ForwardLink)\r
+ {\r
ProtNotify = CR (Link, PROTOCOL_NOTIFY, Link, PROTOCOL_NOTIFY_SIGNATURE);\r
if (CompareGuid (&ProtNotify->Protocol->ProtocolID, Protocol) &&\r
- (ProtNotify->Function == Function)) {\r
-\r
+ (ProtNotify->Function == Function))\r
+ {\r
//\r
// Notification already exist\r
//\r
ProtNotify = AllocatePool (sizeof (PROTOCOL_NOTIFY));\r
if (ProtNotify != NULL) {\r
ProtNotify->Signature = PROTOCOL_NOTIFY_SIGNATURE;\r
- ProtNotify->Protocol = ProtEntry;\r
- ProtNotify->Function = Function;\r
+ ProtNotify->Protocol = ProtEntry;\r
+ ProtNotify->Function = Function;\r
//\r
// Start at the ending\r
//\r
Status = EFI_OUT_OF_RESOURCES;\r
if (ProtNotify != NULL) {\r
*Registration = ProtNotify;\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
}\r
+\r
return Status;\r
}\r
\r
LIST_ENTRY mMmMemoryMap = INITIALIZE_LIST_HEAD_VARIABLE (mMmMemoryMap);\r
\r
-UINTN mMapKey;\r
+UINTN mMapKey;\r
\r
/**\r
Internal Function. Allocate n pages from given free page node.\r
if (Top > Pages->NumberOfPages) {\r
Top = Pages->NumberOfPages;\r
}\r
+\r
Bottom = Top - NumberOfPages;\r
\r
if (Top < Pages->NumberOfPages) {\r
- Node = (FREE_PAGE_LIST*)((UINTN)Pages + EFI_PAGES_TO_SIZE (Top));\r
+ Node = (FREE_PAGE_LIST *)((UINTN)Pages + EFI_PAGES_TO_SIZE (Top));\r
Node->NumberOfPages = Pages->NumberOfPages - Top;\r
InsertHeadList (&Pages->Link, &Node->Link);\r
}\r
\r
for (Node = FreePageList->BackLink; Node != FreePageList; Node = Node->BackLink) {\r
Pages = BASE_CR (Node, FREE_PAGE_LIST, Link);\r
- if (Pages->NumberOfPages >= NumberOfPages &&\r
- (UINTN)Pages + EFI_PAGES_TO_SIZE (NumberOfPages) - 1 <= MaxAddress) {\r
+ if ((Pages->NumberOfPages >= NumberOfPages) &&\r
+ ((UINTN)Pages + EFI_PAGES_TO_SIZE (NumberOfPages) - 1 <= MaxAddress))\r
+ {\r
return InternalAllocPagesOnOneNode (Pages, NumberOfPages, MaxAddress);\r
}\r
}\r
+\r
return (UINTN)(-1);\r
}\r
\r
}\r
\r
EndAddress = Address + EFI_PAGES_TO_SIZE (NumberOfPages);\r
- for (Node = FreePageList->BackLink; Node!= FreePageList; Node = Node->BackLink) {\r
+ for (Node = FreePageList->BackLink; Node != FreePageList; Node = Node->BackLink) {\r
Pages = BASE_CR (Node, FREE_PAGE_LIST, Link);\r
if ((UINTN)Pages <= Address) {\r
if ((UINTN)Pages + EFI_PAGES_TO_SIZE (Pages->NumberOfPages) < EndAddress) {\r
break;\r
}\r
+\r
return InternalAllocPagesOnOneNode (Pages, NumberOfPages, EndAddress);\r
}\r
}\r
+\r
return ~Address;\r
}\r
\r
{\r
UINTN RequestedAddress;\r
\r
- if (MemoryType != EfiRuntimeServicesCode &&\r
- MemoryType != EfiRuntimeServicesData) {\r
+ if ((MemoryType != EfiRuntimeServicesCode) &&\r
+ (MemoryType != EfiRuntimeServicesData))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if (*Memory == (UINTN)-1) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
break;\r
case AllocateAddress:\r
*Memory = InternalAllocAddress (\r
if (*Memory != RequestedAddress) {\r
return EFI_NOT_FOUND;\r
}\r
+\r
break;\r
default:\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
\r
Next = BASE_CR (First->Link.ForwardLink, FREE_PAGE_LIST, Link);\r
ASSERT (\r
- TRUNCATE_TO_PAGES ((UINTN)Next - (UINTN)First) >= First->NumberOfPages);\r
+ TRUNCATE_TO_PAGES ((UINTN)Next - (UINTN)First) >= First->NumberOfPages\r
+ );\r
\r
if (TRUNCATE_TO_PAGES ((UINTN)Next - (UINTN)First) == First->NumberOfPages) {\r
First->NumberOfPages += Next->NumberOfPages;\r
RemoveEntryList (&Next->Link);\r
Next = First;\r
}\r
+\r
return Next;\r
}\r
\r
}\r
\r
Pages = NULL;\r
- Node = mMmMemoryMap.ForwardLink;\r
+ Node = mMmMemoryMap.ForwardLink;\r
while (Node != &mMmMemoryMap) {\r
Pages = BASE_CR (Node, FREE_PAGE_LIST, Link);\r
if (Memory < (UINTN)Pages) {\r
break;\r
}\r
+\r
Node = Node->ForwardLink;\r
}\r
\r
- if (Node != &mMmMemoryMap &&\r
- Memory + EFI_PAGES_TO_SIZE (NumberOfPages) > (UINTN)Pages) {\r
+ if ((Node != &mMmMemoryMap) &&\r
+ (Memory + EFI_PAGES_TO_SIZE (NumberOfPages) > (UINTN)Pages))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
}\r
}\r
\r
- Pages = (FREE_PAGE_LIST*)(UINTN)Memory;\r
+ Pages = (FREE_PAGE_LIST *)(UINTN)Memory;\r
Pages->NumberOfPages = NumberOfPages;\r
InsertTailList (Node, &Pages->Link);\r
\r
// Align range on an EFI_PAGE_SIZE boundary\r
//\r
AlignedMemBase = (UINTN)(MemBase + EFI_PAGE_MASK) & ~EFI_PAGE_MASK;\r
- MemLength -= AlignedMemBase - MemBase;\r
+ MemLength -= AlignedMemBase - MemBase;\r
MmFreePages (AlignedMemBase, TRUNCATE_TO_PAGES ((UINTN)MemLength));\r
}\r
// To cache the MMRAM base since when Loading modules At fixed address feature is enabled,\r
// all module is assigned an offset relative the MMRAM base in build time.\r
//\r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_PHYSICAL_ADDRESS gLoadModuleAtFixAddressMmramBase = 0;\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_PHYSICAL_ADDRESS gLoadModuleAtFixAddressMmramBase = 0;\r
\r
/**\r
Called to initialize the memory service.\r
IN EFI_MMRAM_DESCRIPTOR *MmramRanges\r
)\r
{\r
- UINTN Index;\r
+ UINTN Index;\r
\r
//\r
// Initialize Pool list\r
InitializeListHead (&mMmPoolLists[--Index]);\r
}\r
\r
-\r
//\r
// Initialize free MMRAM regions\r
//\r
if (MmramRanges[Index].CpuStart < BASE_1MB) {\r
continue;\r
}\r
- DEBUG ((DEBUG_INFO, "MmAddMemoryRegion %d : 0x%016lx - 0x%016lx\n",\r
- Index, MmramRanges[Index].CpuStart, MmramRanges[Index].PhysicalSize));\r
+\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "MmAddMemoryRegion %d : 0x%016lx - 0x%016lx\n",\r
+ Index,\r
+ MmramRanges[Index].CpuStart,\r
+ MmramRanges[Index].PhysicalSize\r
+ ));\r
MmAddMemoryRegion (\r
MmramRanges[Index].CpuStart,\r
MmramRanges[Index].PhysicalSize,\r
MmramRanges[Index].RegionState\r
);\r
}\r
-\r
}\r
\r
/**\r
\r
ASSERT (PoolIndex <= MAX_POOL_INDEX);\r
Status = EFI_SUCCESS;\r
- Hdr = NULL;\r
+ Hdr = NULL;\r
if (PoolIndex == MAX_POOL_INDEX) {\r
Status = MmInternalAllocatePages (\r
AllocateAnyPages,\r
if (EFI_ERROR (Status)) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- Hdr = (FREE_POOL_HEADER *) (UINTN) Address;\r
+\r
+ Hdr = (FREE_POOL_HEADER *)(UINTN)Address;\r
} else if (!IsListEmpty (&mMmPoolLists[PoolIndex])) {\r
Hdr = BASE_CR (GetFirstNode (&mMmPoolLists[PoolIndex]), FREE_POOL_HEADER, Link);\r
RemoveEntryList (&Hdr->Link);\r
} else {\r
Status = InternalAllocPoolByIndex (PoolIndex + 1, &Hdr);\r
if (!EFI_ERROR (Status)) {\r
- Hdr->Header.Size >>= 1;\r
+ Hdr->Header.Size >>= 1;\r
Hdr->Header.Available = TRUE;\r
InsertHeadList (&mMmPoolLists[PoolIndex], &Hdr->Link);\r
- Hdr = (FREE_POOL_HEADER*)((UINT8*)Hdr + Hdr->Header.Size);\r
+ Hdr = (FREE_POOL_HEADER *)((UINT8 *)Hdr + Hdr->Header.Size);\r
}\r
}\r
\r
if (!EFI_ERROR (Status)) {\r
- Hdr->Header.Size = MIN_POOL_SIZE << PoolIndex;\r
+ Hdr->Header.Size = MIN_POOL_SIZE << PoolIndex;\r
Hdr->Header.Available = FALSE;\r
}\r
\r
ASSERT (((UINTN)FreePoolHdr & (FreePoolHdr->Header.Size - 1)) == 0);\r
ASSERT (FreePoolHdr->Header.Size >= MIN_POOL_SIZE);\r
\r
- PoolIndex = (UINTN) (HighBitSet32 ((UINT32)FreePoolHdr->Header.Size) - MIN_POOL_SHIFT);\r
+ PoolIndex = (UINTN)(HighBitSet32 ((UINT32)FreePoolHdr->Header.Size) - MIN_POOL_SHIFT);\r
FreePoolHdr->Header.Available = TRUE;\r
ASSERT (PoolIndex < MAX_POOL_INDEX);\r
InsertHeadList (&mMmPoolLists[PoolIndex], &FreePoolHdr->Link);\r
EFI_PHYSICAL_ADDRESS Address;\r
UINTN PoolIndex;\r
\r
- if (PoolType != EfiRuntimeServicesCode &&\r
- PoolType != EfiRuntimeServicesData) {\r
+ if ((PoolType != EfiRuntimeServicesCode) &&\r
+ (PoolType != EfiRuntimeServicesData))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
Size += sizeof (*PoolHdr);\r
if (Size > MAX_POOL_SIZE) {\r
- Size = EFI_SIZE_TO_PAGES (Size);\r
+ Size = EFI_SIZE_TO_PAGES (Size);\r
Status = MmInternalAllocatePages (AllocateAnyPages, PoolType, Size, &Address);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
- PoolHdr = (POOL_HEADER*)(UINTN)Address;\r
- PoolHdr->Size = EFI_PAGES_TO_SIZE (Size);\r
+ PoolHdr = (POOL_HEADER *)(UINTN)Address;\r
+ PoolHdr->Size = EFI_PAGES_TO_SIZE (Size);\r
PoolHdr->Available = FALSE;\r
- *Buffer = PoolHdr + 1;\r
+ *Buffer = PoolHdr + 1;\r
return Status;\r
}\r
\r
- Size = (Size + MIN_POOL_SIZE - 1) >> MIN_POOL_SHIFT;\r
- PoolIndex = (UINTN) HighBitSet32 ((UINT32)Size);\r
+ Size = (Size + MIN_POOL_SIZE - 1) >> MIN_POOL_SHIFT;\r
+ PoolIndex = (UINTN)HighBitSet32 ((UINT32)Size);\r
if ((Size & (Size - 1)) != 0) {\r
PoolIndex++;\r
}\r
if (!EFI_ERROR (Status)) {\r
*Buffer = &FreePoolHdr->Header + 1;\r
}\r
+\r
return Status;\r
}\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- FreePoolHdr = (FREE_POOL_HEADER*)((POOL_HEADER*)Buffer - 1);\r
+ FreePoolHdr = (FREE_POOL_HEADER *)((POOL_HEADER *)Buffer - 1);\r
ASSERT (!FreePoolHdr->Header.Available);\r
\r
if (FreePoolHdr->Header.Size > MAX_POOL_SIZE) {\r
EFI_SIZE_TO_PAGES (FreePoolHdr->Header.Size)\r
);\r
}\r
+\r
return InternalFreePoolByIndex (FreePoolHdr);\r
}\r
\r
//\r
// Globals used to initialize the protocol\r
//\r
-EFI_HANDLE mMmCpuHandle = NULL;\r
+EFI_HANDLE mMmCpuHandle = NULL;\r
\r
//\r
// Physical pointer to private structure shared between MM IPL and the MM Core\r
// MM Core global variable for MM System Table. Only accessed as a physical structure in MMRAM.\r
//\r
EFI_MM_SYSTEM_TABLE gMmCoreMmst = {\r
-\r
// The table header for the MMST.\r
{\r
MM_MMST_SIGNATURE,\r
// I/O Service\r
{\r
{\r
- (EFI_MM_CPU_IO) MmEfiNotAvailableYetArg5, // MmMemRead\r
- (EFI_MM_CPU_IO) MmEfiNotAvailableYetArg5 // MmMemWrite\r
+ (EFI_MM_CPU_IO)MmEfiNotAvailableYetArg5, // MmMemRead\r
+ (EFI_MM_CPU_IO)MmEfiNotAvailableYetArg5 // MmMemWrite\r
},\r
{\r
- (EFI_MM_CPU_IO) MmEfiNotAvailableYetArg5, // MmIoRead\r
- (EFI_MM_CPU_IO) MmEfiNotAvailableYetArg5 // MmIoWrite\r
+ (EFI_MM_CPU_IO)MmEfiNotAvailableYetArg5, // MmIoRead\r
+ (EFI_MM_CPU_IO)MmEfiNotAvailableYetArg5 // MmIoWrite\r
}\r
},\r
// Runtime memory services\r
// Table of MMI Handlers that are registered by the MM Core when it is initialized\r
//\r
MM_CORE_MMI_HANDLERS mMmCoreMmiHandlers[] = {\r
- { MmReadyToLockHandler, &gEfiDxeMmReadyToLockProtocolGuid, NULL, TRUE },\r
- { MmEndOfDxeHandler, &gEfiEndOfDxeEventGroupGuid, NULL, FALSE },\r
- { MmExitBootServiceHandler,&gEfiEventExitBootServicesGuid, NULL, FALSE },\r
- { MmReadyToBootHandler, &gEfiEventReadyToBootGuid, NULL, FALSE },\r
- { NULL, NULL, NULL, FALSE },\r
+ { MmReadyToLockHandler, &gEfiDxeMmReadyToLockProtocolGuid, NULL, TRUE },\r
+ { MmEndOfDxeHandler, &gEfiEndOfDxeEventGroupGuid, NULL, FALSE },\r
+ { MmExitBootServiceHandler, &gEfiEventExitBootServicesGuid, NULL, FALSE },\r
+ { MmReadyToBootHandler, &gEfiEventReadyToBootGuid, NULL, FALSE },\r
+ { NULL, NULL, NULL, FALSE },\r
};\r
\r
-EFI_SYSTEM_TABLE *mEfiSystemTable;\r
-UINTN mMmramRangeCount;\r
-EFI_MMRAM_DESCRIPTOR *mMmramRanges;\r
+EFI_SYSTEM_TABLE *mEfiSystemTable;\r
+UINTN mMmramRangeCount;\r
+EFI_MMRAM_DESCRIPTOR *mMmramRanges;\r
\r
/**\r
Place holder function until all the MM System Table Service are available.\r
EFI_STATUS\r
EFIAPI\r
MmEfiNotAvailableYetArg5 (\r
- UINTN Arg1,\r
- UINTN Arg2,\r
- UINTN Arg3,\r
- UINTN Arg4,\r
- UINTN Arg5\r
+ UINTN Arg1,\r
+ UINTN Arg2,\r
+ UINTN Arg3,\r
+ UINTN Arg4,\r
+ UINTN Arg5\r
)\r
{\r
//\r
IN OUT UINTN *CommBufferSize OPTIONAL\r
)\r
{\r
- EFI_HANDLE MmHandle;\r
- EFI_STATUS Status;\r
- STATIC BOOLEAN mInExitBootServices = FALSE;\r
+ EFI_HANDLE MmHandle;\r
+ EFI_STATUS Status;\r
+ STATIC BOOLEAN mInExitBootServices = FALSE;\r
\r
Status = EFI_SUCCESS;\r
if (!mInExitBootServices) {\r
MmHandle = NULL;\r
- Status = MmInstallProtocolInterface (\r
- &MmHandle,\r
- &gEfiEventExitBootServicesGuid,\r
- EFI_NATIVE_INTERFACE,\r
- NULL\r
- );\r
+ Status = MmInstallProtocolInterface (\r
+ &MmHandle,\r
+ &gEfiEventExitBootServicesGuid,\r
+ EFI_NATIVE_INTERFACE,\r
+ NULL\r
+ );\r
}\r
+\r
mInExitBootServices = TRUE;\r
return Status;\r
}\r
IN OUT UINTN *CommBufferSize OPTIONAL\r
)\r
{\r
- EFI_HANDLE MmHandle;\r
- EFI_STATUS Status;\r
- STATIC BOOLEAN mInReadyToBoot = FALSE;\r
+ EFI_HANDLE MmHandle;\r
+ EFI_STATUS Status;\r
+ STATIC BOOLEAN mInReadyToBoot = FALSE;\r
\r
Status = EFI_SUCCESS;\r
if (!mInReadyToBoot) {\r
MmHandle = NULL;\r
- Status = MmInstallProtocolInterface (\r
- &MmHandle,\r
- &gEfiEventReadyToBootGuid,\r
- EFI_NATIVE_INTERFACE,\r
- NULL\r
- );\r
+ Status = MmInstallProtocolInterface (\r
+ &MmHandle,\r
+ &gEfiEventReadyToBootGuid,\r
+ EFI_NATIVE_INTERFACE,\r
+ NULL\r
+ );\r
}\r
+\r
mInReadyToBoot = TRUE;\r
return Status;\r
}\r
// Install MM Ready to lock protocol\r
//\r
MmHandle = NULL;\r
- Status = MmInstallProtocolInterface (\r
- &MmHandle,\r
- &gEfiMmReadyToLockProtocolGuid,\r
- EFI_NATIVE_INTERFACE,\r
- NULL\r
- );\r
+ Status = MmInstallProtocolInterface (\r
+ &MmHandle,\r
+ &gEfiMmReadyToLockProtocolGuid,\r
+ EFI_NATIVE_INTERFACE,\r
+ NULL\r
+ );\r
\r
//\r
// Make sure MM CPU I/O 2 Protocol has been installed into the handle database\r
//\r
- //Status = MmLocateProtocol (&EFI_MM_CPU_IO_PROTOCOL_GUID, NULL, &Interface);\r
+ // Status = MmLocateProtocol (&EFI_MM_CPU_IO_PROTOCOL_GUID, NULL, &Interface);\r
\r
//\r
// Print a message on a debug build if the MM CPU I/O 2 Protocol is not installed\r
//\r
- //if (EFI_ERROR (Status)) {\r
- //DEBUG ((DEBUG_ERROR, "\nSMM: SmmCpuIo Arch Protocol not present!!\n"));\r
- //}\r
-\r
+ // if (EFI_ERROR (Status)) {\r
+ // DEBUG ((DEBUG_ERROR, "\nSMM: SmmCpuIo Arch Protocol not present!!\n"));\r
+ // }\r
\r
//\r
// Assert if the CPU I/O 2 Protocol is not installed\r
//\r
- //ASSERT_EFI_ERROR (Status);\r
+ // ASSERT_EFI_ERROR (Status);\r
\r
//\r
// Display any drivers that were not dispatched because dependency expression\r
// evaluated to false if this is a debug build\r
//\r
- //MmDisplayDiscoveredNotDispatched ();\r
+ // MmDisplayDiscoveredNotDispatched ();\r
\r
return Status;\r
}\r
// Install MM EndOfDxe protocol\r
//\r
MmHandle = NULL;\r
- Status = MmInstallProtocolInterface (\r
- &MmHandle,\r
- &gEfiMmEndOfDxeProtocolGuid,\r
- EFI_NATIVE_INTERFACE,\r
- NULL\r
- );\r
+ Status = MmInstallProtocolInterface (\r
+ &MmHandle,\r
+ &gEfiMmEndOfDxeProtocolGuid,\r
+ EFI_NATIVE_INTERFACE,\r
+ NULL\r
+ );\r
return Status;\r
}\r
\r
-\r
-\r
/**\r
The main entry point to MM Foundation.\r
\r
EFIAPI\r
MmEntryPoint (\r
IN CONST EFI_MM_ENTRY_CONTEXT *MmEntryContext\r
-)\r
+ )\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
EFI_MM_COMMUNICATE_HEADER *CommunicateHeader;\r
\r
DEBUG ((DEBUG_INFO, "MmEntryPoint ...\n"));\r
//\r
// Call platform hook before Mm Dispatch\r
//\r
- //PlatformHookBeforeMmDispatch ();\r
+ // PlatformHookBeforeMmDispatch ();\r
\r
//\r
// If a legacy boot has occurred, then make sure gMmCorePrivate is not accessed\r
// If CommunicationBuffer is not in valid address scope, return EFI_INVALID_PARAMETER\r
//\r
gMmCorePrivate->CommunicationBuffer = 0;\r
- gMmCorePrivate->ReturnStatus = EFI_INVALID_PARAMETER;\r
+ gMmCorePrivate->ReturnStatus = EFI_INVALID_PARAMETER;\r
} else {\r
- CommunicateHeader = (EFI_MM_COMMUNICATE_HEADER *)(UINTN)gMmCorePrivate->CommunicationBuffer;\r
+ CommunicateHeader = (EFI_MM_COMMUNICATE_HEADER *)(UINTN)gMmCorePrivate->CommunicationBuffer;\r
gMmCorePrivate->BufferSize -= OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);\r
- Status = MmiManage (\r
- &CommunicateHeader->HeaderGuid,\r
- NULL,\r
- CommunicateHeader->Data,\r
- (UINTN *)&gMmCorePrivate->BufferSize\r
- );\r
+ Status = MmiManage (\r
+ &CommunicateHeader->HeaderGuid,\r
+ NULL,\r
+ CommunicateHeader->Data,\r
+ (UINTN *)&gMmCorePrivate->BufferSize\r
+ );\r
//\r
// Update CommunicationBuffer, BufferSize and ReturnStatus\r
// Communicate service finished, reset the pointer to CommBuffer to NULL\r
//\r
- gMmCorePrivate->BufferSize += OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);\r
+ gMmCorePrivate->BufferSize += OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);\r
gMmCorePrivate->CommunicationBuffer = 0;\r
- gMmCorePrivate->ReturnStatus = (Status == EFI_SUCCESS) ? EFI_SUCCESS : EFI_NOT_FOUND;\r
+ gMmCorePrivate->ReturnStatus = (Status == EFI_SUCCESS) ? EFI_SUCCESS : EFI_NOT_FOUND;\r
}\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
MmConfigurationMmNotify (\r
- IN CONST EFI_GUID *Protocol,\r
- IN VOID *Interface,\r
+ IN CONST EFI_GUID *Protocol,\r
+ IN VOID *Interface,\r
IN EFI_HANDLE Handle\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
EFI_MM_CONFIGURATION_PROTOCOL *MmConfiguration;\r
\r
DEBUG ((DEBUG_INFO, "MmConfigurationMmNotify(%g) - %x\n", Protocol, Interface));\r
**/\r
UINTN\r
GetHobListSize (\r
- IN VOID *HobStart\r
+ IN VOID *HobStart\r
)\r
{\r
EFI_PEI_HOB_POINTERS Hob;\r
\r
ASSERT (HobStart != NULL);\r
\r
- Hob.Raw = (UINT8 *) HobStart;\r
+ Hob.Raw = (UINT8 *)HobStart;\r
while (!END_OF_HOB_LIST (Hob)) {\r
Hob.Raw = GET_NEXT_HOB (Hob);\r
}\r
+\r
//\r
// Need plus END_OF_HOB_LIST\r
//\r
// Allocate and zero memory for a MM_CORE_PRIVATE_DATA table and then\r
// initialise it\r
//\r
- gMmCorePrivate = (MM_CORE_PRIVATE_DATA *) AllocateRuntimePages(EFI_SIZE_TO_PAGES(sizeof (MM_CORE_PRIVATE_DATA)));\r
+ gMmCorePrivate = (MM_CORE_PRIVATE_DATA *)AllocateRuntimePages (EFI_SIZE_TO_PAGES (sizeof (MM_CORE_PRIVATE_DATA)));\r
SetMem ((VOID *)(UINTN)gMmCorePrivate, sizeof (MM_CORE_PRIVATE_DATA), 0);\r
- gMmCorePrivate->Signature = MM_CORE_PRIVATE_DATA_SIGNATURE;\r
+ gMmCorePrivate->Signature = MM_CORE_PRIVATE_DATA_SIGNATURE;\r
gMmCorePrivate->MmEntryPointRegistered = FALSE;\r
- gMmCorePrivate->InMm = FALSE;\r
- gMmCorePrivate->ReturnStatus = EFI_SUCCESS;\r
+ gMmCorePrivate->InMm = FALSE;\r
+ gMmCorePrivate->ReturnStatus = EFI_SUCCESS;\r
\r
//\r
// Extract the MMRAM ranges from the MMRAM descriptor HOB\r
//\r
MmramRangesHob = GetNextGuidHob (&gEfiMmPeiMmramMemoryReserveGuid, HobStart);\r
- if (MmramRangesHob == NULL)\r
+ if (MmramRangesHob == NULL) {\r
return EFI_UNSUPPORTED;\r
+ }\r
\r
MmramRangesHobData = GET_GUID_HOB_DATA (MmramRangesHob);\r
ASSERT (MmramRangesHobData != NULL);\r
- MmramRanges = MmramRangesHobData->Descriptor;\r
+ MmramRanges = MmramRangesHobData->Descriptor;\r
MmramRangeCount = (UINTN)MmramRangesHobData->NumberOfMmReservedRegions;\r
ASSERT (MmramRanges);\r
ASSERT (MmramRangeCount);\r
// code relies on them being present there\r
//\r
gMmCorePrivate->MmramRangeCount = (UINT64)MmramRangeCount;\r
- gMmCorePrivate->MmramRanges =\r
+ gMmCorePrivate->MmramRanges =\r
(EFI_PHYSICAL_ADDRESS)(UINTN)AllocatePool (MmramRangeCount * sizeof (EFI_MMRAM_DESCRIPTOR));\r
ASSERT (gMmCorePrivate->MmramRanges != 0);\r
CopyMem (\r
);\r
} else {\r
DataInHob = GET_GUID_HOB_DATA (GuidHob);\r
- gMmCorePrivate = (MM_CORE_PRIVATE_DATA *)(UINTN)DataInHob->Address;\r
+ gMmCorePrivate = (MM_CORE_PRIVATE_DATA *)(UINTN)DataInHob->Address;\r
MmramRanges = (EFI_MMRAM_DESCRIPTOR *)(UINTN)gMmCorePrivate->MmramRanges;\r
MmramRangeCount = (UINTN)gMmCorePrivate->MmramRangeCount;\r
}\r
//\r
DEBUG ((DEBUG_INFO, "MmramRangeCount - 0x%x\n", MmramRangeCount));\r
for (Index = 0; Index < MmramRangeCount; Index++) {\r
- DEBUG ((DEBUG_INFO, "MmramRanges[%d]: 0x%016lx - 0x%lx\n", Index,\r
- MmramRanges[Index].CpuStart,\r
- MmramRanges[Index].PhysicalSize));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "MmramRanges[%d]: 0x%016lx - 0x%lx\n",\r
+ Index,\r
+ MmramRanges[Index].CpuStart,\r
+ MmramRanges[Index].PhysicalSize\r
+ ));\r
}\r
\r
//\r
gMmCorePrivate->StandaloneBfvAddress = BfvHob->BaseAddress;\r
}\r
\r
- gMmCorePrivate->Mmst = (EFI_PHYSICAL_ADDRESS)(UINTN)&gMmCoreMmst;\r
+ gMmCorePrivate->Mmst = (EFI_PHYSICAL_ADDRESS)(UINTN)&gMmCoreMmst;\r
gMmCorePrivate->MmEntryPoint = (EFI_PHYSICAL_ADDRESS)(UINTN)MmEntryPoint;\r
\r
//\r
//\r
// Structure for recording the state of an MM Driver\r
//\r
-#define EFI_MM_DRIVER_ENTRY_SIGNATURE SIGNATURE_32('s', 'd','r','v')\r
+#define EFI_MM_DRIVER_ENTRY_SIGNATURE SIGNATURE_32('s', 'd','r','v')\r
\r
typedef struct {\r
- UINTN Signature;\r
- LIST_ENTRY Link; // mDriverList\r
+ UINTN Signature;\r
+ LIST_ENTRY Link; // mDriverList\r
\r
- LIST_ENTRY ScheduledLink; // mScheduledQueue\r
+ LIST_ENTRY ScheduledLink; // mScheduledQueue\r
\r
- EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader;\r
- EFI_GUID FileName;\r
- VOID *Pe32Data;\r
- UINTN Pe32DataSize;\r
+ EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader;\r
+ EFI_GUID FileName;\r
+ VOID *Pe32Data;\r
+ UINTN Pe32DataSize;\r
\r
- VOID *Depex;\r
- UINTN DepexSize;\r
+ VOID *Depex;\r
+ UINTN DepexSize;\r
\r
- BOOLEAN Before;\r
- BOOLEAN After;\r
- EFI_GUID BeforeAfterGuid;\r
+ BOOLEAN Before;\r
+ BOOLEAN After;\r
+ EFI_GUID BeforeAfterGuid;\r
\r
- BOOLEAN Dependent;\r
- BOOLEAN Scheduled;\r
- BOOLEAN Initialized;\r
- BOOLEAN DepexProtocolError;\r
+ BOOLEAN Dependent;\r
+ BOOLEAN Scheduled;\r
+ BOOLEAN Initialized;\r
+ BOOLEAN DepexProtocolError;\r
\r
- EFI_HANDLE ImageHandle;\r
- EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;\r
+ EFI_HANDLE ImageHandle;\r
+ EFI_LOADED_IMAGE_PROTOCOL *LoadedImage;\r
//\r
// Image EntryPoint in MMRAM\r
//\r
- PHYSICAL_ADDRESS ImageEntryPoint;\r
+ PHYSICAL_ADDRESS ImageEntryPoint;\r
//\r
// Image Buffer in MMRAM\r
//\r
- PHYSICAL_ADDRESS ImageBuffer;\r
+ PHYSICAL_ADDRESS ImageBuffer;\r
//\r
// Image Page Number\r
//\r
- UINTN NumberOfPage;\r
+ UINTN NumberOfPage;\r
} EFI_MM_DRIVER_ENTRY;\r
\r
-#define EFI_HANDLE_SIGNATURE SIGNATURE_32('h','n','d','l')\r
+#define EFI_HANDLE_SIGNATURE SIGNATURE_32('h','n','d','l')\r
\r
///\r
/// IHANDLE - contains a list of protocol handles\r
///\r
typedef struct {\r
- UINTN Signature;\r
+ UINTN Signature;\r
/// All handles list of IHANDLE\r
- LIST_ENTRY AllHandles;\r
+ LIST_ENTRY AllHandles;\r
/// List of PROTOCOL_INTERFACE's for this handle\r
- LIST_ENTRY Protocols;\r
- UINTN LocateRequest;\r
+ LIST_ENTRY Protocols;\r
+ UINTN LocateRequest;\r
} IHANDLE;\r
\r
#define ASSERT_IS_HANDLE(a) ASSERT((a)->Signature == EFI_HANDLE_SIGNATURE)\r
\r
-#define PROTOCOL_ENTRY_SIGNATURE SIGNATURE_32('p','r','t','e')\r
+#define PROTOCOL_ENTRY_SIGNATURE SIGNATURE_32('p','r','t','e')\r
\r
///\r
/// PROTOCOL_ENTRY - each different protocol has 1 entry in the protocol\r
/// with a list of registered notifies.\r
///\r
typedef struct {\r
- UINTN Signature;\r
+ UINTN Signature;\r
/// Link Entry inserted to mProtocolDatabase\r
- LIST_ENTRY AllEntries;\r
+ LIST_ENTRY AllEntries;\r
/// ID of the protocol\r
- EFI_GUID ProtocolID;\r
+ EFI_GUID ProtocolID;\r
/// All protocol interfaces\r
- LIST_ENTRY Protocols;\r
+ LIST_ENTRY Protocols;\r
/// Registered notification handlers\r
- LIST_ENTRY Notify;\r
+ LIST_ENTRY Notify;\r
} PROTOCOL_ENTRY;\r
\r
#define PROTOCOL_INTERFACE_SIGNATURE SIGNATURE_32('p','i','f','c')\r
/// with a protocol interface structure\r
///\r
typedef struct {\r
- UINTN Signature;\r
+ UINTN Signature;\r
/// Link on IHANDLE.Protocols\r
- LIST_ENTRY Link;\r
+ LIST_ENTRY Link;\r
/// Back pointer\r
- IHANDLE *Handle;\r
+ IHANDLE *Handle;\r
/// Link on PROTOCOL_ENTRY.Protocols\r
- LIST_ENTRY ByProtocol;\r
+ LIST_ENTRY ByProtocol;\r
/// The protocol ID\r
- PROTOCOL_ENTRY *Protocol;\r
+ PROTOCOL_ENTRY *Protocol;\r
/// The interface value\r
- VOID *Interface;\r
+ VOID *Interface;\r
} PROTOCOL_INTERFACE;\r
\r
-#define PROTOCOL_NOTIFY_SIGNATURE SIGNATURE_32('p','r','t','n')\r
+#define PROTOCOL_NOTIFY_SIGNATURE SIGNATURE_32('p','r','t','n')\r
\r
///\r
/// PROTOCOL_NOTIFY - used for each register notification for a protocol\r
/// All notifications for this protocol\r
LIST_ENTRY Link;\r
/// Notification function\r
- EFI_MM_NOTIFY_FN Function;\r
+ EFI_MM_NOTIFY_FN Function;\r
/// Last position notified\r
LIST_ENTRY *Position;\r
} PROTOCOL_NOTIFY;\r
EFIAPI\r
MmInstallConfigurationTable (\r
IN CONST EFI_MM_SYSTEM_TABLE *SystemTable,\r
- IN CONST EFI_GUID *Guid,\r
- IN VOID *Table,\r
- IN UINTN TableSize\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Table,\r
+ IN UINTN TableSize\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmInstallProtocolInterface (\r
- IN OUT EFI_HANDLE *UserHandle,\r
- IN EFI_GUID *Protocol,\r
- IN EFI_INTERFACE_TYPE InterfaceType,\r
- IN VOID *Interface\r
+ IN OUT EFI_HANDLE *UserHandle,\r
+ IN EFI_GUID *Protocol,\r
+ IN EFI_INTERFACE_TYPE InterfaceType,\r
+ IN VOID *Interface\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmAllocatePages (\r
- IN EFI_ALLOCATE_TYPE Type,\r
- IN EFI_MEMORY_TYPE MemoryType,\r
- IN UINTN NumberOfPages,\r
- OUT EFI_PHYSICAL_ADDRESS *Memory\r
+ IN EFI_ALLOCATE_TYPE Type,\r
+ IN EFI_MEMORY_TYPE MemoryType,\r
+ IN UINTN NumberOfPages,\r
+ OUT EFI_PHYSICAL_ADDRESS *Memory\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmInternalAllocatePages (\r
- IN EFI_ALLOCATE_TYPE Type,\r
- IN EFI_MEMORY_TYPE MemoryType,\r
- IN UINTN NumberOfPages,\r
- OUT EFI_PHYSICAL_ADDRESS *Memory\r
+ IN EFI_ALLOCATE_TYPE Type,\r
+ IN EFI_MEMORY_TYPE MemoryType,\r
+ IN UINTN NumberOfPages,\r
+ OUT EFI_PHYSICAL_ADDRESS *Memory\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmFreePages (\r
- IN EFI_PHYSICAL_ADDRESS Memory,\r
- IN UINTN NumberOfPages\r
+ IN EFI_PHYSICAL_ADDRESS Memory,\r
+ IN UINTN NumberOfPages\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmInternalFreePages (\r
- IN EFI_PHYSICAL_ADDRESS Memory,\r
- IN UINTN NumberOfPages\r
+ IN EFI_PHYSICAL_ADDRESS Memory,\r
+ IN UINTN NumberOfPages\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmAllocatePool (\r
- IN EFI_MEMORY_TYPE PoolType,\r
- IN UINTN Size,\r
- OUT VOID **Buffer\r
+ IN EFI_MEMORY_TYPE PoolType,\r
+ IN UINTN Size,\r
+ OUT VOID **Buffer\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmInternalAllocatePool (\r
- IN EFI_MEMORY_TYPE PoolType,\r
- IN UINTN Size,\r
- OUT VOID **Buffer\r
+ IN EFI_MEMORY_TYPE PoolType,\r
+ IN UINTN Size,\r
+ OUT VOID **Buffer\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmFreePool (\r
- IN VOID *Buffer\r
+ IN VOID *Buffer\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmInternalFreePool (\r
- IN VOID *Buffer\r
+ IN VOID *Buffer\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
MmInstallProtocolInterfaceNotify (\r
- IN OUT EFI_HANDLE *UserHandle,\r
- IN EFI_GUID *Protocol,\r
- IN EFI_INTERFACE_TYPE InterfaceType,\r
- IN VOID *Interface,\r
- IN BOOLEAN Notify\r
+ IN OUT EFI_HANDLE *UserHandle,\r
+ IN EFI_GUID *Protocol,\r
+ IN EFI_INTERFACE_TYPE InterfaceType,\r
+ IN VOID *Interface,\r
+ IN BOOLEAN Notify\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmUninstallProtocolInterface (\r
- IN EFI_HANDLE UserHandle,\r
- IN EFI_GUID *Protocol,\r
- IN VOID *Interface\r
+ IN EFI_HANDLE UserHandle,\r
+ IN EFI_GUID *Protocol,\r
+ IN VOID *Interface\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmHandleProtocol (\r
- IN EFI_HANDLE UserHandle,\r
- IN EFI_GUID *Protocol,\r
- OUT VOID **Interface\r
+ IN EFI_HANDLE UserHandle,\r
+ IN EFI_GUID *Protocol,\r
+ OUT VOID **Interface\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmRegisterProtocolNotify (\r
- IN CONST EFI_GUID *Protocol,\r
- IN EFI_MM_NOTIFY_FN Function,\r
- OUT VOID **Registration\r
+ IN CONST EFI_GUID *Protocol,\r
+ IN EFI_MM_NOTIFY_FN Function,\r
+ OUT VOID **Registration\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmLocateHandle (\r
- IN EFI_LOCATE_SEARCH_TYPE SearchType,\r
- IN EFI_GUID *Protocol OPTIONAL,\r
- IN VOID *SearchKey OPTIONAL,\r
- IN OUT UINTN *BufferSize,\r
- OUT EFI_HANDLE *Buffer\r
+ IN EFI_LOCATE_SEARCH_TYPE SearchType,\r
+ IN EFI_GUID *Protocol OPTIONAL,\r
+ IN VOID *SearchKey OPTIONAL,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT EFI_HANDLE *Buffer\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmiManage (\r
- IN CONST EFI_GUID *HandlerType,\r
- IN CONST VOID *Context OPTIONAL,\r
- IN OUT VOID *CommBuffer OPTIONAL,\r
- IN OUT UINTN *CommBufferSize OPTIONAL\r
+ IN CONST EFI_GUID *HandlerType,\r
+ IN CONST VOID *Context OPTIONAL,\r
+ IN OUT VOID *CommBuffer OPTIONAL,\r
+ IN OUT UINTN *CommBufferSize OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmiHandlerRegister (\r
- IN EFI_MM_HANDLER_ENTRY_POINT Handler,\r
- IN CONST EFI_GUID *HandlerType OPTIONAL,\r
- OUT EFI_HANDLE *DispatchHandle\r
+ IN EFI_MM_HANDLER_ENTRY_POINT Handler,\r
+ IN CONST EFI_GUID *HandlerType OPTIONAL,\r
+ OUT EFI_HANDLE *DispatchHandle\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmiHandlerUnRegister (\r
- IN EFI_HANDLE DispatchHandle\r
+ IN EFI_HANDLE DispatchHandle\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmDriverDispatchHandler (\r
- IN EFI_HANDLE DispatchHandle,\r
- IN CONST VOID *Context OPTIONAL,\r
- IN OUT VOID *CommBuffer OPTIONAL,\r
- IN OUT UINTN *CommBufferSize OPTIONAL\r
+ IN EFI_HANDLE DispatchHandle,\r
+ IN CONST VOID *Context OPTIONAL,\r
+ IN OUT VOID *CommBuffer OPTIONAL,\r
+ IN OUT UINTN *CommBufferSize OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmExitBootServiceHandler (\r
- IN EFI_HANDLE DispatchHandle,\r
- IN CONST VOID *Context OPTIONAL,\r
- IN OUT VOID *CommBuffer OPTIONAL,\r
- IN OUT UINTN *CommBufferSize OPTIONAL\r
+ IN EFI_HANDLE DispatchHandle,\r
+ IN CONST VOID *Context OPTIONAL,\r
+ IN OUT VOID *CommBuffer OPTIONAL,\r
+ IN OUT UINTN *CommBufferSize OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmReadyToBootHandler (\r
- IN EFI_HANDLE DispatchHandle,\r
- IN CONST VOID *Context OPTIONAL,\r
- IN OUT VOID *CommBuffer OPTIONAL,\r
- IN OUT UINTN *CommBufferSize OPTIONAL\r
+ IN EFI_HANDLE DispatchHandle,\r
+ IN CONST VOID *Context OPTIONAL,\r
+ IN OUT VOID *CommBuffer OPTIONAL,\r
+ IN OUT UINTN *CommBufferSize OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmReadyToLockHandler (\r
- IN EFI_HANDLE DispatchHandle,\r
- IN CONST VOID *Context OPTIONAL,\r
- IN OUT VOID *CommBuffer OPTIONAL,\r
- IN OUT UINTN *CommBufferSize OPTIONAL\r
+ IN EFI_HANDLE DispatchHandle,\r
+ IN CONST VOID *Context OPTIONAL,\r
+ IN OUT VOID *CommBuffer OPTIONAL,\r
+ IN OUT UINTN *CommBufferSize OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmEndOfDxeHandler (\r
- IN EFI_HANDLE DispatchHandle,\r
- IN CONST VOID *Context OPTIONAL,\r
- IN OUT VOID *CommBuffer OPTIONAL,\r
- IN OUT UINTN *CommBufferSize OPTIONAL\r
+ IN EFI_HANDLE DispatchHandle,\r
+ IN CONST VOID *Context OPTIONAL,\r
+ IN OUT VOID *CommBuffer OPTIONAL,\r
+ IN OUT UINTN *CommBufferSize OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
MmEfiNotAvailableYetArg5 (\r
- UINTN Arg1,\r
- UINTN Arg2,\r
- UINTN Arg3,\r
- UINTN Arg4,\r
- UINTN Arg5\r
+ UINTN Arg1,\r
+ UINTN Arg2,\r
+ UINTN Arg3,\r
+ UINTN Arg4,\r
+ UINTN Arg5\r
);\r
\r
//\r
-//Functions used during debug builds\r
+// Functions used during debug builds\r
//\r
\r
/**\r
**/\r
VOID\r
MmAddMemoryRegion (\r
- IN EFI_PHYSICAL_ADDRESS MemBase,\r
- IN UINT64 MemLength,\r
- IN EFI_MEMORY_TYPE Type,\r
- IN UINT64 Attributes\r
+ IN EFI_PHYSICAL_ADDRESS MemBase,\r
+ IN UINT64 MemLength,\r
+ IN EFI_MEMORY_TYPE Type,\r
+ IN UINT64 Attributes\r
);\r
\r
/**\r
**/\r
PROTOCOL_ENTRY *\r
MmFindProtocolEntry (\r
- IN EFI_GUID *Protocol,\r
- IN BOOLEAN Create\r
+ IN EFI_GUID *Protocol,\r
+ IN BOOLEAN Create\r
);\r
\r
/**\r
**/\r
VOID\r
MmNotifyProtocol (\r
- IN PROTOCOL_INTERFACE *Prot\r
+ IN PROTOCOL_INTERFACE *Prot\r
);\r
\r
/**\r
**/\r
PROTOCOL_INTERFACE *\r
MmFindProtocolInterface (\r
- IN IHANDLE *Handle,\r
- IN EFI_GUID *Protocol,\r
- IN VOID *Interface\r
+ IN IHANDLE *Handle,\r
+ IN EFI_GUID *Protocol,\r
+ IN VOID *Interface\r
);\r
\r
/**\r
**/\r
PROTOCOL_INTERFACE *\r
MmRemoveInterfaceFromProtocol (\r
- IN IHANDLE *Handle,\r
- IN EFI_GUID *Protocol,\r
- IN VOID *Interface\r
+ IN IHANDLE *Handle,\r
+ IN EFI_GUID *Protocol,\r
+ IN VOID *Interface\r
);\r
\r
/**\r
**/\r
BOOLEAN\r
MmIsSchedulable (\r
- IN EFI_MM_DRIVER_ENTRY *DriverEntry\r
+ IN EFI_MM_DRIVER_ENTRY *DriverEntry\r
);\r
\r
/**\r
VOID\r
);\r
\r
-extern UINTN mMmramRangeCount;\r
-extern EFI_MMRAM_DESCRIPTOR *mMmramRanges;\r
-extern EFI_SYSTEM_TABLE *mEfiSystemTable;\r
+extern UINTN mMmramRangeCount;\r
+extern EFI_MMRAM_DESCRIPTOR *mMmramRanges;\r
+extern EFI_SYSTEM_TABLE *mEfiSystemTable;\r
\r
#endif\r
//\r
\r
typedef struct {\r
- LIST_ENTRY Link;\r
- UINTN NumberOfPages;\r
+ LIST_ENTRY Link;\r
+ UINTN NumberOfPages;\r
} FREE_PAGE_LIST;\r
\r
extern LIST_ENTRY mMmMemoryMap;\r
#define MAX_POOL_INDEX (MAX_POOL_SHIFT - MIN_POOL_SHIFT + 1)\r
\r
typedef struct {\r
- UINTN Size;\r
- BOOLEAN Available;\r
+ UINTN Size;\r
+ BOOLEAN Available;\r
} POOL_HEADER;\r
\r
typedef struct {\r
- POOL_HEADER Header;\r
- LIST_ENTRY Link;\r
+ POOL_HEADER Header;\r
+ LIST_ENTRY Link;\r
} FREE_POOL_HEADER;\r
\r
extern LIST_ENTRY mMmPoolLists[MAX_POOL_INDEX];\r
#include <Base.h>\r
#include <Pi/PiMmCis.h>\r
\r
-\r
#include <Library/ArmSvcLib.h>\r
#include <Library/ArmLib.h>\r
#include <Library/BaseMemoryLib.h>\r
EFIAPI\r
MmFoundationEntryRegister (\r
IN CONST EFI_MM_CONFIGURATION_PROTOCOL *This,\r
- IN EFI_MM_ENTRY_POINT MmEntryPoint\r
+ IN EFI_MM_ENTRY_POINT MmEntryPoint\r
);\r
\r
//\r
// number of CPUs in the system are made known through the\r
// MP_INFORMATION_HOB_DATA.\r
//\r
-EFI_MM_COMMUNICATE_HEADER **PerCpuGuidedEventContext = NULL;\r
+EFI_MM_COMMUNICATE_HEADER **PerCpuGuidedEventContext = NULL;\r
\r
// Descriptor with whereabouts of memory used for communication with the normal world\r
EFI_MMRAM_DESCRIPTOR mNsCommBuffer;\r
\r
-MP_INFORMATION_HOB_DATA *mMpInformationHobData;\r
+MP_INFORMATION_HOB_DATA *mMpInformationHobData;\r
\r
-EFI_MM_CONFIGURATION_PROTOCOL mMmConfig = {\r
+EFI_MM_CONFIGURATION_PROTOCOL mMmConfig = {\r
0,\r
MmFoundationEntryRegister\r
};\r
\r
-STATIC EFI_MM_ENTRY_POINT mMmEntryPoint = NULL;\r
+STATIC EFI_MM_ENTRY_POINT mMmEntryPoint = NULL;\r
\r
/**\r
The PI Standalone MM entry point for the TF-A CPU driver.\r
**/\r
EFI_STATUS\r
PiMmStandaloneArmTfCpuDriverEntry (\r
- IN UINTN EventId,\r
- IN UINTN CpuNumber,\r
- IN UINTN NsCommBufferAddr\r
+ IN UINTN EventId,\r
+ IN UINTN CpuNumber,\r
+ IN UINTN NsCommBufferAddr\r
)\r
{\r
- EFI_MM_COMMUNICATE_HEADER *GuidedEventContext;\r
- EFI_MM_ENTRY_CONTEXT MmEntryPointContext;\r
- EFI_STATUS Status;\r
- UINTN NsCommBufferSize;\r
+ EFI_MM_COMMUNICATE_HEADER *GuidedEventContext;\r
+ EFI_MM_ENTRY_CONTEXT MmEntryPointContext;\r
+ EFI_STATUS Status;\r
+ UINTN NsCommBufferSize;\r
\r
DEBUG ((DEBUG_INFO, "Received event - 0x%x on cpu %d\n", EventId, CpuNumber));\r
\r
// between synchronous and asynchronous events.\r
//\r
if ((ARM_SMC_ID_MM_COMMUNICATE != EventId) &&\r
- (ARM_SVC_ID_FFA_MSG_SEND_DIRECT_REQ != EventId)) {\r
+ (ARM_SVC_ID_FFA_MSG_SEND_DIRECT_REQ != EventId))\r
+ {\r
DEBUG ((DEBUG_INFO, "UnRecognized Event - 0x%x\n", EventId));\r
return EFI_INVALID_PARAMETER;\r
}\r
}\r
\r
if ((NsCommBufferAddr + sizeof (EFI_MM_COMMUNICATE_HEADER)) >=\r
- (mNsCommBuffer.PhysicalStart + mNsCommBuffer.PhysicalSize)) {\r
+ (mNsCommBuffer.PhysicalStart + mNsCommBuffer.PhysicalSize))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
// Find out the size of the buffer passed\r
- NsCommBufferSize = ((EFI_MM_COMMUNICATE_HEADER *) NsCommBufferAddr)->MessageLength +\r
- sizeof (EFI_MM_COMMUNICATE_HEADER);\r
+ NsCommBufferSize = ((EFI_MM_COMMUNICATE_HEADER *)NsCommBufferAddr)->MessageLength +\r
+ sizeof (EFI_MM_COMMUNICATE_HEADER);\r
\r
// perform bounds check.\r
if (NsCommBufferAddr + NsCommBufferSize >=\r
- mNsCommBuffer.PhysicalStart + mNsCommBuffer.PhysicalSize) {\r
+ mNsCommBuffer.PhysicalStart + mNsCommBuffer.PhysicalSize)\r
+ {\r
return EFI_ACCESS_DENIED;\r
}\r
\r
Status = mMmst->MmAllocatePool (\r
EfiRuntimeServicesData,\r
NsCommBufferSize,\r
- (VOID **) &GuidedEventContext\r
+ (VOID **)&GuidedEventContext\r
);\r
\r
if (Status != EFI_SUCCESS) {\r
\r
// X1 contains the VA of the normal world memory accessible from\r
// S-EL0\r
- CopyMem (GuidedEventContext, (CONST VOID *) NsCommBufferAddr, NsCommBufferSize);\r
+ CopyMem (GuidedEventContext, (CONST VOID *)NsCommBufferAddr, NsCommBufferSize);\r
\r
// Stash the pointer to the allocated Event Context for this CPU\r
PerCpuGuidedEventContext[CpuNumber] = GuidedEventContext;\r
ZeroMem (&MmEntryPointContext, sizeof (EFI_MM_ENTRY_CONTEXT));\r
\r
MmEntryPointContext.CurrentlyExecutingCpu = CpuNumber;\r
- MmEntryPointContext.NumberOfCpus = mMpInformationHobData->NumberOfProcessors;\r
+ MmEntryPointContext.NumberOfCpus = mMpInformationHobData->NumberOfProcessors;\r
\r
// Populate the MM system table with MP and state information\r
mMmst->CurrentlyExecutingCpu = CpuNumber;\r
- mMmst->NumberOfCpus = mMpInformationHobData->NumberOfProcessors;\r
- mMmst->CpuSaveStateSize = 0;\r
- mMmst->CpuSaveState = NULL;\r
+ mMmst->NumberOfCpus = mMpInformationHobData->NumberOfProcessors;\r
+ mMmst->CpuSaveStateSize = 0;\r
+ mMmst->CpuSaveState = NULL;\r
\r
if (mMmEntryPoint == NULL) {\r
DEBUG ((DEBUG_INFO, "Mm Entry point Not Found\n"));\r
\r
// Free the memory allocation done earlier and reset the per-cpu context\r
ASSERT (GuidedEventContext);\r
- CopyMem ((VOID *)NsCommBufferAddr, (CONST VOID *) GuidedEventContext, NsCommBufferSize);\r
+ CopyMem ((VOID *)NsCommBufferAddr, (CONST VOID *)GuidedEventContext, NsCommBufferSize);\r
\r
- Status = mMmst->MmFreePool ((VOID *) GuidedEventContext);\r
+ Status = mMmst->MmFreePool ((VOID *)GuidedEventContext);\r
if (Status != EFI_SUCCESS) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
PerCpuGuidedEventContext[CpuNumber] = NULL;\r
\r
return Status;\r
EFIAPI\r
MmFoundationEntryRegister (\r
IN CONST EFI_MM_CONFIGURATION_PROTOCOL *This,\r
- IN EFI_MM_ENTRY_POINT MmEntryPoint\r
+ IN EFI_MM_ENTRY_POINT MmEntryPoint\r
)\r
{\r
// store the entry point in a global\r
EFI_STATUS\r
EFIAPI\r
PiMmCpuTpFwRootMmiHandler (\r
- IN EFI_HANDLE DispatchHandle,\r
- IN CONST VOID *Context OPTIONAL,\r
- IN OUT VOID *CommBuffer OPTIONAL,\r
- IN OUT UINTN *CommBufferSize OPTIONAL\r
+ IN EFI_HANDLE DispatchHandle,\r
+ IN CONST VOID *Context OPTIONAL,\r
+ IN OUT VOID *CommBuffer OPTIONAL,\r
+ IN OUT UINTN *CommBufferSize OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN CpuNumber;\r
+ EFI_STATUS Status;\r
+ UINTN CpuNumber;\r
\r
ASSERT (Context == NULL);\r
ASSERT (CommBuffer == NULL);\r
return EFI_NOT_FOUND;\r
}\r
\r
- DEBUG ((DEBUG_INFO, "CommBuffer - 0x%x, CommBufferSize - 0x%x\n",\r
- PerCpuGuidedEventContext[CpuNumber],\r
- PerCpuGuidedEventContext[CpuNumber]->MessageLength));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "CommBuffer - 0x%x, CommBufferSize - 0x%x\n",\r
+ PerCpuGuidedEventContext[CpuNumber],\r
+ PerCpuGuidedEventContext[CpuNumber]->MessageLength\r
+ ));\r
\r
Status = mMmst->MmiManage (\r
&PerCpuGuidedEventContext[CpuNumber]->HeaderGuid,\r
#include <Guid/ZeroGuid.h>\r
#include <Guid/MmramMemoryReserve.h>\r
\r
-\r
#include "StandaloneMmCpu.h"\r
\r
// GUID to identify HOB with whereabouts of communication buffer with Normal\r
// World\r
-extern EFI_GUID gEfiStandaloneMmNonSecureBufferGuid;\r
+extern EFI_GUID gEfiStandaloneMmNonSecureBufferGuid;\r
\r
// GUID to identify HOB where the entry point of this CPU driver will be\r
// populated to allow the entry point driver to invoke it upon receipt of an\r
// event\r
-extern EFI_GUID gEfiArmTfCpuDriverEpDescriptorGuid;\r
+extern EFI_GUID gEfiArmTfCpuDriverEpDescriptorGuid;\r
\r
//\r
// Private copy of the MM system table for future use\r
//\r
-EFI_MM_SYSTEM_TABLE *mMmst = NULL;\r
+EFI_MM_SYSTEM_TABLE *mMmst = NULL;\r
\r
//\r
// Globals used to initialize the protocol\r
//\r
-STATIC EFI_HANDLE mMmCpuHandle = NULL;\r
+STATIC EFI_HANDLE mMmCpuHandle = NULL;\r
\r
/** Returns the HOB data for the matching HOB GUID.\r
\r
**/\r
EFI_STATUS\r
GetGuidedHobData (\r
- IN VOID *HobList,\r
- IN CONST EFI_GUID *HobGuid,\r
- OUT VOID **HobData\r
+ IN VOID *HobList,\r
+ IN CONST EFI_GUID *HobGuid,\r
+ OUT VOID **HobData\r
)\r
{\r
- EFI_HOB_GUID_TYPE *Hob;\r
+ EFI_HOB_GUID_TYPE *Hob;\r
\r
if ((HobList == NULL) || (HobGuid == NULL) || (HobData == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
**/\r
EFI_STATUS\r
StandaloneMmCpuInitialize (\r
- IN EFI_HANDLE ImageHandle, // not actual imagehandle\r
- IN EFI_MM_SYSTEM_TABLE *SystemTable // not actual systemtable\r
+ IN EFI_HANDLE ImageHandle, // not actual imagehandle\r
+ IN EFI_MM_SYSTEM_TABLE *SystemTable // not actual systemtable\r
)\r
{\r
- ARM_TF_CPU_DRIVER_EP_DESCRIPTOR *CpuDriverEntryPointDesc;\r
- EFI_CONFIGURATION_TABLE *ConfigurationTable;\r
- MP_INFORMATION_HOB_DATA *MpInformationHobData;\r
- EFI_MMRAM_DESCRIPTOR *NsCommBufMmramRange;\r
+ ARM_TF_CPU_DRIVER_EP_DESCRIPTOR *CpuDriverEntryPointDesc;\r
+ EFI_CONFIGURATION_TABLE *ConfigurationTable;\r
+ MP_INFORMATION_HOB_DATA *MpInformationHobData;\r
+ EFI_MMRAM_DESCRIPTOR *NsCommBufMmramRange;\r
EFI_STATUS Status;\r
EFI_HANDLE DispatchHandle;\r
UINT32 MpInfoSize;\r
UINTN Index;\r
UINTN ArraySize;\r
- VOID *HobStart;\r
+ VOID *HobStart;\r
\r
ASSERT (SystemTable != NULL);\r
mMmst = SystemTable;\r
Status = GetGuidedHobData (\r
HobStart,\r
&gEfiArmTfCpuDriverEpDescriptorGuid,\r
- (VOID **) &CpuDriverEntryPointDesc\r
+ (VOID **)&CpuDriverEntryPointDesc\r
);\r
if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_INFO, "ArmTfCpuDriverEpDesc HOB data extraction failed - 0x%x\n", Status));\r
}\r
\r
// Share the entry point of the CPU driver\r
- DEBUG ((DEBUG_INFO, "Sharing Cpu Driver EP *0x%lx = 0x%lx\n",\r
- (UINTN) CpuDriverEntryPointDesc->ArmTfCpuDriverEpPtr,\r
- (UINTN) PiMmStandaloneArmTfCpuDriverEntry));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "Sharing Cpu Driver EP *0x%lx = 0x%lx\n",\r
+ (UINTN)CpuDriverEntryPointDesc->ArmTfCpuDriverEpPtr,\r
+ (UINTN)PiMmStandaloneArmTfCpuDriverEntry\r
+ ));\r
*(CpuDriverEntryPointDesc->ArmTfCpuDriverEpPtr) = PiMmStandaloneArmTfCpuDriverEntry;\r
\r
// Find the descriptor that contains the whereabouts of the buffer for\r
Status = GetGuidedHobData (\r
HobStart,\r
&gEfiStandaloneMmNonSecureBufferGuid,\r
- (VOID **) &NsCommBufMmramRange\r
+ (VOID **)&NsCommBufMmramRange\r
);\r
if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_INFO, "NsCommBufMmramRange HOB data extraction failed - 0x%x\n", Status));\r
return Status;\r
}\r
\r
- DEBUG ((DEBUG_INFO, "mNsCommBuffer.PhysicalStart - 0x%lx\n", (UINTN) NsCommBufMmramRange->PhysicalStart));\r
- DEBUG ((DEBUG_INFO, "mNsCommBuffer.PhysicalSize - 0x%lx\n", (UINTN) NsCommBufMmramRange->PhysicalSize));\r
+ DEBUG ((DEBUG_INFO, "mNsCommBuffer.PhysicalStart - 0x%lx\n", (UINTN)NsCommBufMmramRange->PhysicalStart));\r
+ DEBUG ((DEBUG_INFO, "mNsCommBuffer.PhysicalSize - 0x%lx\n", (UINTN)NsCommBufMmramRange->PhysicalSize));\r
\r
- CopyMem (&mNsCommBuffer, NsCommBufMmramRange, sizeof(EFI_MMRAM_DESCRIPTOR));\r
+ CopyMem (&mNsCommBuffer, NsCommBufMmramRange, sizeof (EFI_MMRAM_DESCRIPTOR));\r
DEBUG ((DEBUG_INFO, "mNsCommBuffer: 0x%016lx - 0x%lx\n", mNsCommBuffer.CpuStart, mNsCommBuffer.PhysicalSize));\r
\r
//\r
Status = GetGuidedHobData (\r
HobStart,\r
&gMpInformationHobGuid,\r
- (VOID **) &MpInformationHobData\r
+ (VOID **)&MpInformationHobData\r
);\r
if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_INFO, "MpInformationHob extraction failed - 0x%x\n", Status));\r
//\r
MpInfoSize = sizeof (MP_INFORMATION_HOB_DATA) +\r
(sizeof (EFI_PROCESSOR_INFORMATION) *\r
- MpInformationHobData->NumberOfProcessors);\r
+ MpInformationHobData->NumberOfProcessors);\r
Status = mMmst->MmAllocatePool (\r
EfiRuntimeServicesData,\r
MpInfoSize,\r
- (VOID **) &mMpInformationHobData\r
+ (VOID **)&mMpInformationHobData\r
);\r
if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_INFO, "mMpInformationHobData mem alloc failed - 0x%x\n", Status));\r
CopyMem (mMpInformationHobData, MpInformationHobData, MpInfoSize);\r
\r
// Print MP information\r
- DEBUG ((DEBUG_INFO, "mMpInformationHobData: 0x%016lx - 0x%lx\n",\r
- mMpInformationHobData->NumberOfProcessors,\r
- mMpInformationHobData->NumberOfEnabledProcessors));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "mMpInformationHobData: 0x%016lx - 0x%lx\n",\r
+ mMpInformationHobData->NumberOfProcessors,\r
+ mMpInformationHobData->NumberOfEnabledProcessors\r
+ ));\r
for (Index = 0; Index < mMpInformationHobData->NumberOfProcessors; Index++) {\r
- DEBUG ((DEBUG_INFO, "mMpInformationHobData[0x%lx]: %d, %d, %d\n",\r
- mMpInformationHobData->ProcessorInfoBuffer[Index].ProcessorId,\r
- mMpInformationHobData->ProcessorInfoBuffer[Index].Location.Package,\r
- mMpInformationHobData->ProcessorInfoBuffer[Index].Location.Core,\r
- mMpInformationHobData->ProcessorInfoBuffer[Index].Location.Thread));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "mMpInformationHobData[0x%lx]: %d, %d, %d\n",\r
+ mMpInformationHobData->ProcessorInfoBuffer[Index].ProcessorId,\r
+ mMpInformationHobData->ProcessorInfoBuffer[Index].Location.Package,\r
+ mMpInformationHobData->ProcessorInfoBuffer[Index].Location.Core,\r
+ mMpInformationHobData->ProcessorInfoBuffer[Index].Location.Thread\r
+ ));\r
}\r
\r
//\r
Status = mMmst->MmAllocatePool (\r
EfiRuntimeServicesData,\r
ArraySize,\r
- (VOID **) &PerCpuGuidedEventContext\r
+ (VOID **)&PerCpuGuidedEventContext\r
);\r
if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_INFO, "PerCpuGuidedEventContext mem alloc failed - 0x%x\n", Status));\r
return Status;\r
}\r
+\r
return Status;\r
}\r
//\r
// CPU driver initialization specific declarations\r
//\r
-extern EFI_MM_SYSTEM_TABLE *mMmst;\r
+extern EFI_MM_SYSTEM_TABLE *mMmst;\r
\r
//\r
// CPU State Save protocol specific declarations\r
//\r
-extern EFI_MM_CPU_PROTOCOL mMmCpuState;\r
+extern EFI_MM_CPU_PROTOCOL mMmCpuState;\r
\r
//\r
// MM event handling specific declarations\r
//\r
-extern EFI_MM_COMMUNICATE_HEADER **PerCpuGuidedEventContext;\r
-extern EFI_MMRAM_DESCRIPTOR mNsCommBuffer;\r
-extern MP_INFORMATION_HOB_DATA *mMpInformationHobData;\r
-extern EFI_MM_CONFIGURATION_PROTOCOL mMmConfig;\r
+extern EFI_MM_COMMUNICATE_HEADER **PerCpuGuidedEventContext;\r
+extern EFI_MMRAM_DESCRIPTOR mNsCommBuffer;\r
+extern MP_INFORMATION_HOB_DATA *mMpInformationHobData;\r
+extern EFI_MM_CONFIGURATION_PROTOCOL mMmConfig;\r
\r
/**\r
The PI Standalone MM entry point for the TF-A CPU driver.\r
**/\r
EFI_STATUS\r
PiMmStandaloneArmTfCpuDriverEntry (\r
- IN UINTN EventId,\r
- IN UINTN CpuNumber,\r
- IN UINTN NsCommBufferAddr\r
+ IN UINTN EventId,\r
+ IN UINTN CpuNumber,\r
+ IN UINTN NsCommBufferAddr\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
PiMmCpuTpFwRootMmiHandler (\r
- IN EFI_HANDLE DispatchHandle,\r
- IN CONST VOID *Context OPTIONAL,\r
- IN OUT VOID *CommBuffer OPTIONAL,\r
- IN OUT UINTN *CommBufferSize OPTIONAL\r
+ IN EFI_HANDLE DispatchHandle,\r
+ IN CONST VOID *Context OPTIONAL,\r
+ IN OUT VOID *CommBuffer OPTIONAL,\r
+ IN OUT UINTN *CommBufferSize OPTIONAL\r
);\r
\r
#endif\r
#define MM_CORE_DATA_HOB_GUID \\r
{ 0xa160bf99, 0x2aa4, 0x4d7d, { 0x99, 0x93, 0x89, 0x9c, 0xb1, 0x2d, 0xf3, 0x76 }}\r
\r
-extern EFI_GUID gMmCoreDataHobGuid;\r
+extern EFI_GUID gMmCoreDataHobGuid;\r
\r
typedef struct {\r
//\r
// Address pointer to MM_CORE_PRIVATE_DATA\r
//\r
- EFI_PHYSICAL_ADDRESS Address;\r
+ EFI_PHYSICAL_ADDRESS Address;\r
} MM_CORE_DATA_HOB_DATA;\r
\r
-\r
///\r
/// Define values for the communications buffer used when gEfiEventDxeDispatchGuid is\r
/// event signaled. This event is signaled by the DXE Core each time the DXE Core\r
/// thos structure.\r
///\r
typedef struct {\r
- UINT64 Signature;\r
+ UINT64 Signature;\r
\r
///\r
/// The number of MMRAM ranges passed from the MM IPL to the MM Core. The MM\r
/// Core uses these ranges of MMRAM to initialize the MM Core memory manager.\r
///\r
- UINT64 MmramRangeCount;\r
+ UINT64 MmramRangeCount;\r
\r
///\r
/// A table of MMRAM ranges passed from the MM IPL to the MM Core. The MM\r
/// Core uses these ranges of MMRAM to initialize the MM Core memory manager.\r
///\r
- EFI_PHYSICAL_ADDRESS MmramRanges;\r
+ EFI_PHYSICAL_ADDRESS MmramRanges;\r
\r
///\r
/// The MM Foundation Entry Point. The MM Core fills in this field when the\r
/// the MM Foundation Entry Point as soon as the MM Configuration Protocol is\r
/// available.\r
///\r
- EFI_PHYSICAL_ADDRESS MmEntryPoint;\r
+ EFI_PHYSICAL_ADDRESS MmEntryPoint;\r
\r
///\r
/// Boolean flag set to TRUE while an MMI is being processed by the MM Core.\r
///\r
- BOOLEAN MmEntryPointRegistered;\r
+ BOOLEAN MmEntryPointRegistered;\r
\r
///\r
/// Boolean flag set to TRUE while an MMI is being processed by the MM Core.\r
///\r
- BOOLEAN InMm;\r
+ BOOLEAN InMm;\r
\r
///\r
/// This field is set by the MM Core then the MM Core is initialized. This field is\r
/// used by the MM Base 2 Protocol and MM Communication Protocol implementations in\r
/// the MM IPL.\r
///\r
- EFI_PHYSICAL_ADDRESS Mmst;\r
+ EFI_PHYSICAL_ADDRESS Mmst;\r
\r
///\r
/// This field is used by the MM Communication Protocol to pass a buffer into\r
/// a software MMI handler and for the software MMI handler to pass a buffer back to\r
/// the caller of the MM Communication Protocol.\r
///\r
- EFI_PHYSICAL_ADDRESS CommunicationBuffer;\r
+ EFI_PHYSICAL_ADDRESS CommunicationBuffer;\r
\r
///\r
/// This field is used by the MM Communication Protocol to pass the size of a buffer,\r
/// in bytes, into a software MMI handler and for the software MMI handler to pass the\r
/// size, in bytes, of a buffer back to the caller of the MM Communication Protocol.\r
///\r
- UINT64 BufferSize;\r
+ UINT64 BufferSize;\r
\r
///\r
/// This field is used by the MM Communication Protocol to pass the return status from\r
/// a software MMI handler back to the caller of the MM Communication Protocol.\r
///\r
- UINT64 ReturnStatus;\r
+ UINT64 ReturnStatus;\r
\r
- EFI_PHYSICAL_ADDRESS MmCoreImageBase;\r
- UINT64 MmCoreImageSize;\r
- EFI_PHYSICAL_ADDRESS MmCoreEntryPoint;\r
+ EFI_PHYSICAL_ADDRESS MmCoreImageBase;\r
+ UINT64 MmCoreImageSize;\r
+ EFI_PHYSICAL_ADDRESS MmCoreEntryPoint;\r
\r
- EFI_PHYSICAL_ADDRESS StandaloneBfvAddress;\r
+ EFI_PHYSICAL_ADDRESS StandaloneBfvAddress;\r
} MM_CORE_PRIVATE_DATA;\r
\r
#endif\r
#define MM_FV_DISPATCH_GUID \\r
{ 0xb65694cc, 0x9e3, 0x4c3b, { 0xb5, 0xcd, 0x5, 0xf4, 0x4d, 0x3c, 0xdb, 0xff }}\r
\r
-extern EFI_GUID gMmFvDispatchGuid;\r
+extern EFI_GUID gMmFvDispatchGuid;\r
\r
#pragma pack(1)\r
\r
typedef struct {\r
- EFI_PHYSICAL_ADDRESS Address;\r
- UINT64 Size;\r
+ EFI_PHYSICAL_ADDRESS Address;\r
+ UINT64 Size;\r
} EFI_MM_COMMUNICATE_FV_DISPATCH_DATA;\r
\r
typedef struct {\r
- EFI_GUID HeaderGuid;\r
- UINTN MessageLength;\r
- EFI_MM_COMMUNICATE_FV_DISPATCH_DATA Data;\r
+ EFI_GUID HeaderGuid;\r
+ UINTN MessageLength;\r
+ EFI_MM_COMMUNICATE_FV_DISPATCH_DATA Data;\r
} EFI_MM_COMMUNICATE_FV_DISPATCH;\r
#pragma pack()\r
\r
/// In Framework MM CIS 0.91 specification, it defines the field type as UINTN.\r
/// However, HOBs are supposed to be CPU neutral, so UINT32 should be used instead.\r
///\r
- UINT32 NumberOfMmReservedRegions;\r
+ UINT32 NumberOfMmReservedRegions;\r
///\r
/// Used throughout this protocol to describe the candidate\r
/// regions for MMRAM that are supported by this platform.\r
///\r
- EFI_MMRAM_DESCRIPTOR Descriptor[1];\r
+ EFI_MMRAM_DESCRIPTOR Descriptor[1];\r
} EFI_MMRAM_HOB_DESCRIPTOR_BLOCK;\r
\r
-extern EFI_GUID gEfiMmPeiSmramMemoryReserveGuid;\r
+extern EFI_GUID gEfiMmPeiSmramMemoryReserveGuid;\r
\r
#endif\r
-\r
\r
#pragma pack(1)\r
typedef struct {\r
- UINT64 NumberOfProcessors;\r
- UINT64 NumberOfEnabledProcessors;\r
- EFI_PROCESSOR_INFORMATION ProcessorInfoBuffer[];\r
+ UINT64 NumberOfProcessors;\r
+ UINT64 NumberOfEnabledProcessors;\r
+ EFI_PROCESSOR_INFORMATION ProcessorInfoBuffer[];\r
} MP_INFORMATION_HOB_DATA;\r
#pragma pack()\r
\r
-extern EFI_GUID gMpInformationHobGuid;\r
+extern EFI_GUID gMpInformationHobGuid;\r
\r
#endif\r
#define CPU_INFO_FLAG_PRIMARY_CPU 0x00000001\r
\r
typedef struct {\r
- UINT8 Type; /* type of the structure */\r
- UINT8 Version; /* version of this structure */\r
- UINT16 Size; /* size of this structure in bytes */\r
- UINT32 Attr; /* attributes: unused bits SBZ */\r
+ UINT8 Type; /* type of the structure */\r
+ UINT8 Version; /* version of this structure */\r
+ UINT16 Size; /* size of this structure in bytes */\r
+ UINT32 Attr; /* attributes: unused bits SBZ */\r
} EFI_PARAM_HEADER;\r
\r
typedef struct {\r
- UINT64 Mpidr;\r
- UINT32 LinearId;\r
- UINT32 Flags;\r
+ UINT64 Mpidr;\r
+ UINT32 LinearId;\r
+ UINT32 Flags;\r
} EFI_SECURE_PARTITION_CPU_INFO;\r
\r
typedef struct {\r
- EFI_PARAM_HEADER Header;\r
- UINT64 SpMemBase;\r
- UINT64 SpMemLimit;\r
- UINT64 SpImageBase;\r
- UINT64 SpStackBase;\r
- UINT64 SpHeapBase;\r
- UINT64 SpNsCommBufBase;\r
- UINT64 SpSharedBufBase;\r
- UINT64 SpImageSize;\r
- UINT64 SpPcpuStackSize;\r
- UINT64 SpHeapSize;\r
- UINT64 SpNsCommBufSize;\r
- UINT64 SpPcpuSharedBufSize;\r
- UINT32 NumSpMemRegions;\r
- UINT32 NumCpus;\r
- EFI_SECURE_PARTITION_CPU_INFO *CpuInfo;\r
+ EFI_PARAM_HEADER Header;\r
+ UINT64 SpMemBase;\r
+ UINT64 SpMemLimit;\r
+ UINT64 SpImageBase;\r
+ UINT64 SpStackBase;\r
+ UINT64 SpHeapBase;\r
+ UINT64 SpNsCommBufBase;\r
+ UINT64 SpSharedBufBase;\r
+ UINT64 SpImageSize;\r
+ UINT64 SpPcpuStackSize;\r
+ UINT64 SpHeapSize;\r
+ UINT64 SpNsCommBufSize;\r
+ UINT64 SpPcpuSharedBufSize;\r
+ UINT32 NumSpMemRegions;\r
+ UINT32 NumCpus;\r
+ EFI_SECURE_PARTITION_CPU_INFO *CpuInfo;\r
} EFI_SECURE_PARTITION_BOOT_INFO;\r
\r
typedef\r
EFI_STATUS\r
(*PI_MM_ARM_TF_CPU_DRIVER_ENTRYPOINT) (\r
- IN UINTN EventId,\r
- IN UINTN CpuNumber,\r
- IN UINTN NsCommBufferAddr\r
+ IN UINTN EventId,\r
+ IN UINTN CpuNumber,\r
+ IN UINTN NsCommBufferAddr\r
);\r
\r
typedef struct {\r
- PI_MM_ARM_TF_CPU_DRIVER_ENTRYPOINT *ArmTfCpuDriverEpPtr;\r
+ PI_MM_ARM_TF_CPU_DRIVER_ENTRYPOINT *ArmTfCpuDriverEpPtr;\r
} ARM_TF_CPU_DRIVER_EP_DESCRIPTOR;\r
\r
typedef RETURN_STATUS (*REGION_PERMISSION_UPDATE_FUNC) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
UpdateMmFoundationPeCoffPermissions (\r
- IN CONST PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
- IN EFI_PHYSICAL_ADDRESS ImageBase,\r
- IN UINT32 SectionHeaderOffset,\r
- IN CONST UINT16 NumberOfSections,\r
- IN REGION_PERMISSION_UPDATE_FUNC TextUpdater,\r
- IN REGION_PERMISSION_UPDATE_FUNC ReadOnlyUpdater,\r
- IN REGION_PERMISSION_UPDATE_FUNC ReadWriteUpdater\r
+ IN CONST PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
+ IN EFI_PHYSICAL_ADDRESS ImageBase,\r
+ IN UINT32 SectionHeaderOffset,\r
+ IN CONST UINT16 NumberOfSections,\r
+ IN REGION_PERMISSION_UPDATE_FUNC TextUpdater,\r
+ IN REGION_PERMISSION_UPDATE_FUNC ReadOnlyUpdater,\r
+ IN REGION_PERMISSION_UPDATE_FUNC ReadWriteUpdater\r
);\r
\r
-\r
/**\r
Privileged firmware assigns RO & Executable attributes to all memory occupied\r
by the Boot Firmware Volume. This function locates the section information of\r
EFI_STATUS\r
EFIAPI\r
GetStandaloneMmCorePeCoffSections (\r
- IN VOID *TeData,\r
- IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
- OUT EFI_PHYSICAL_ADDRESS *ImageBase,\r
- IN OUT UINT32 *SectionHeaderOffset,\r
- IN OUT UINT16 *NumberOfSections\r
+ IN VOID *TeData,\r
+ IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
+ OUT EFI_PHYSICAL_ADDRESS *ImageBase,\r
+ IN OUT UINT32 *SectionHeaderOffset,\r
+ IN OUT UINT16 *NumberOfSections\r
);\r
\r
-\r
/**\r
Privileged firmware assigns RO & Executable attributes to all memory occupied\r
by the Boot Firmware Volume. This function locates the Standalone MM Core\r
EFI_STATUS\r
EFIAPI\r
LocateStandaloneMmCorePeCoffData (\r
- IN EFI_FIRMWARE_VOLUME_HEADER *BfvAddress,\r
- IN OUT VOID **TeData,\r
- IN OUT UINTN *TeDataSize\r
+ IN EFI_FIRMWARE_VOLUME_HEADER *BfvAddress,\r
+ IN OUT VOID **TeData,\r
+ IN OUT UINTN *TeDataSize\r
);\r
\r
-\r
/**\r
Use the boot information passed by privileged firmware to populate a HOB list\r
suitable for consumption by the MM Core and drivers.\r
VOID *\r
EFIAPI\r
CreateHobListFromBootInfo (\r
- IN OUT PI_MM_ARM_TF_CPU_DRIVER_ENTRYPOINT *CpuDriverEntryPoint,\r
- IN EFI_SECURE_PARTITION_BOOT_INFO *PayloadBootInfo\r
+ IN OUT PI_MM_ARM_TF_CPU_DRIVER_ENTRYPOINT *CpuDriverEntryPoint,\r
+ IN EFI_SECURE_PARTITION_BOOT_INFO *PayloadBootInfo\r
);\r
\r
-\r
/**\r
The entry point of Standalone MM Foundation.\r
\r
IN UINT64 cookie2\r
);\r
\r
-\r
/**\r
Auto generated function that calls the library constructors for all of the module's dependent libraries.\r
\r
VOID\r
EFIAPI\r
ProcessLibraryConstructorList (\r
- IN EFI_HANDLE ImageHandle,\r
+ IN EFI_HANDLE ImageHandle,\r
IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
);\r
\r
-\r
/**\r
Auto generated function that calls a set of module entry points.\r
\r
EFI_STATUS\r
EFIAPI\r
FfsFindSection (\r
- IN EFI_SECTION_TYPE SectionType,\r
- IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
- IN OUT EFI_COMMON_SECTION_HEADER **SectionHeader\r
+ IN EFI_SECTION_TYPE SectionType,\r
+ IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
+ IN OUT EFI_COMMON_SECTION_HEADER **SectionHeader\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
FindFfsSectionInSections (\r
- IN VOID *Sections,\r
- IN UINTN SizeOfSections,\r
- IN EFI_SECTION_TYPE SectionType,\r
- OUT EFI_COMMON_SECTION_HEADER **FoundSection\r
+ IN VOID *Sections,\r
+ IN UINTN SizeOfSections,\r
+ IN EFI_SECTION_TYPE SectionType,\r
+ OUT EFI_COMMON_SECTION_HEADER **FoundSection\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
FfsFindSectionData (\r
- IN EFI_SECTION_TYPE SectionType,\r
- IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
- OUT VOID **SectionData,\r
- OUT UINTN *SectionDataSize\r
+ IN EFI_SECTION_TYPE SectionType,\r
+ IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
+ OUT VOID **SectionData,\r
+ OUT UINTN *SectionDataSize\r
);\r
\r
#endif\r
///\r
extern VOID *gHobList;\r
\r
-\r
/**\r
The entry point of PE/COFF Image for the STANDALONE MM Core.\r
\r
IN VOID *HobStart\r
);\r
\r
-\r
/**\r
Required by the EBC compiler and identical in functionality to _ModuleEntryPoint().\r
\r
IN VOID *HobStart\r
);\r
\r
-\r
/**\r
Auto generated function that calls the library constructors for all of the module's dependent libraries.\r
\r
VOID\r
EFIAPI\r
ProcessLibraryConstructorList (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
);\r
\r
-\r
/**\r
Autogenerated function that calls a set of module entry points.\r
\r
\r
typedef\r
EFI_STATUS\r
-(EFIAPI *MM_IMAGE_ENTRY_POINT) (\r
+(EFIAPI *MM_IMAGE_ENTRY_POINT)(\r
IN EFI_HANDLE ImageHandle,\r
IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
);\r
\r
typedef\r
EFI_STATUS\r
-(EFIAPI *STANDALONE_MM_FOUNDATION_ENTRY_POINT) (\r
+(EFIAPI *STANDALONE_MM_FOUNDATION_ENTRY_POINT)(\r
IN VOID *HobStart\r
);\r
\r
FileState = FfsHeader->State;\r
\r
if (ErasePolarity != 0) {\r
- FileState = (EFI_FFS_FILE_STATE)~FileState;\r
+ FileState = (EFI_FFS_FILE_STATE) ~FileState;\r
}\r
\r
HighestBit = 0x80;\r
IN EFI_FFS_FILE_HEADER *FileHeader\r
)\r
{\r
- UINT8 *ptr;\r
- UINTN Index;\r
- UINT8 Sum;\r
+ UINT8 *ptr;\r
+ UINTN Index;\r
+ UINT8 Sum;\r
\r
Sum = 0;\r
- ptr = (UINT8 *) FileHeader;\r
+ ptr = (UINT8 *)FileHeader;\r
\r
for (Index = 0; Index < sizeof (EFI_FFS_FILE_HEADER) - 3; Index += 4) {\r
- Sum = (UINT8) (Sum + ptr[Index]);\r
- Sum = (UINT8) (Sum + ptr[Index + 1]);\r
- Sum = (UINT8) (Sum + ptr[Index + 2]);\r
- Sum = (UINT8) (Sum + ptr[Index + 3]);\r
+ Sum = (UINT8)(Sum + ptr[Index]);\r
+ Sum = (UINT8)(Sum + ptr[Index + 1]);\r
+ Sum = (UINT8)(Sum + ptr[Index + 2]);\r
+ Sum = (UINT8)(Sum + ptr[Index + 3]);\r
}\r
\r
- for (; Index < sizeof (EFI_FFS_FILE_HEADER); Index++) {\r
- Sum = (UINT8) (Sum + ptr[Index]);\r
+ for ( ; Index < sizeof (EFI_FFS_FILE_HEADER); Index++) {\r
+ Sum = (UINT8)(Sum + ptr[Index]);\r
}\r
+\r
//\r
// State field (since this indicates the different state of file).\r
//\r
- Sum = (UINT8) (Sum - FileHeader->State);\r
+ Sum = (UINT8)(Sum - FileHeader->State);\r
//\r
// Checksum field of the file is not part of the header checksum.\r
//\r
- Sum = (UINT8) (Sum - FileHeader->IntegrityCheck.Checksum.File);\r
+ Sum = (UINT8)(Sum - FileHeader->IntegrityCheck.Checksum.File);\r
\r
return Sum;\r
}\r
IN OUT EFI_FFS_FILE_HEADER **FileHeader\r
)\r
{\r
- EFI_FIRMWARE_VOLUME_EXT_HEADER *FvExtHeader;\r
+ EFI_FIRMWARE_VOLUME_EXT_HEADER *FvExtHeader;\r
\r
- EFI_FFS_FILE_HEADER *FfsFileHeader;\r
- UINT32 FileLength;\r
- UINT32 FileOccupiedSize;\r
- UINT32 FileOffset;\r
- UINT64 FvLength;\r
- UINT8 ErasePolarity;\r
- UINT8 FileState;\r
+ EFI_FFS_FILE_HEADER *FfsFileHeader;\r
+ UINT32 FileLength;\r
+ UINT32 FileOccupiedSize;\r
+ UINT32 FileOffset;\r
+ UINT64 FvLength;\r
+ UINT8 ErasePolarity;\r
+ UINT8 FileState;\r
\r
FvLength = FwVolHeader->FvLength;\r
if (FwVolHeader->Attributes & EFI_FVB2_ERASE_POLARITY) {\r
} else {\r
ErasePolarity = 0;\r
}\r
+\r
//\r
// If FileHeader is not specified (NULL) start with the first file in the\r
// firmware volume. Otherwise, start from the FileHeader.\r
//\r
if (*FileHeader == NULL) {\r
-\r
if (FwVolHeader->ExtHeaderOffset != 0) {\r
-\r
FvExtHeader = (EFI_FIRMWARE_VOLUME_EXT_HEADER *)((UINT8 *)FwVolHeader +\r
FwVolHeader->ExtHeaderOffset);\r
\r
FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FvExtHeader +\r
FvExtHeader->ExtHeaderSize);\r
-\r
} else {\r
-\r
FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FwVolHeader +\r
FwVolHeader->HeaderLength);\r
-\r
}\r
\r
FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINTN)FwVolHeader +\r
- ALIGN_VALUE((UINTN)FfsFileHeader -\r
- (UINTN)FwVolHeader, 8));\r
+ ALIGN_VALUE (\r
+ (UINTN)FfsFileHeader -\r
+ (UINTN)FwVolHeader,\r
+ 8\r
+ ));\r
} else {\r
//\r
// Length is 24 bits wide so mask upper 8 bits\r
// FileLength is adjusted to FileOccupiedSize as it is 8 byte aligned.\r
//\r
- FileLength = FFS_FILE_SIZE(*FileHeader);\r
- FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8);\r
- FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) *FileHeader + FileOccupiedSize);\r
+ FileLength = FFS_FILE_SIZE (*FileHeader);\r
+ FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8);\r
+ FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)*FileHeader + FileOccupiedSize);\r
}\r
\r
- FileOffset = (UINT32) ((UINT8 *) FfsFileHeader - (UINT8 *) FwVolHeader);\r
+ FileOffset = (UINT32)((UINT8 *)FfsFileHeader - (UINT8 *)FwVolHeader);\r
\r
while (FileOffset < (FvLength - sizeof (EFI_FFS_FILE_HEADER))) {\r
//\r
FileState = GetFileState (ErasePolarity, FfsFileHeader);\r
\r
switch (FileState) {\r
-\r
- case EFI_FILE_HEADER_INVALID:\r
- FileOffset += sizeof (EFI_FFS_FILE_HEADER);\r
- FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + sizeof (EFI_FFS_FILE_HEADER));\r
- break;\r
-\r
- case EFI_FILE_DATA_VALID:\r
- case EFI_FILE_MARKED_FOR_UPDATE:\r
- if (CalculateHeaderChecksum (FfsFileHeader) == 0) {\r
- FileLength = FFS_FILE_SIZE(FfsFileHeader);\r
- FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8);\r
-\r
- if ((SearchType == FfsFileHeader->Type) || (SearchType == EFI_FV_FILETYPE_ALL)) {\r
-\r
- *FileHeader = FfsFileHeader;\r
-\r
- return EFI_SUCCESS;\r
+ case EFI_FILE_HEADER_INVALID:\r
+ FileOffset += sizeof (EFI_FFS_FILE_HEADER);\r
+ FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FfsFileHeader + sizeof (EFI_FFS_FILE_HEADER));\r
+ break;\r
+\r
+ case EFI_FILE_DATA_VALID:\r
+ case EFI_FILE_MARKED_FOR_UPDATE:\r
+ if (CalculateHeaderChecksum (FfsFileHeader) == 0) {\r
+ FileLength = FFS_FILE_SIZE (FfsFileHeader);\r
+ FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8);\r
+\r
+ if ((SearchType == FfsFileHeader->Type) || (SearchType == EFI_FV_FILETYPE_ALL)) {\r
+ *FileHeader = FfsFileHeader;\r
+\r
+ return EFI_SUCCESS;\r
+ }\r
+\r
+ FileOffset += FileOccupiedSize;\r
+ FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FfsFileHeader + FileOccupiedSize);\r
+ } else {\r
+ return EFI_NOT_FOUND;\r
}\r
\r
- FileOffset += FileOccupiedSize;\r
- FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + FileOccupiedSize);\r
- } else {\r
- return EFI_NOT_FOUND;\r
- }\r
- break;\r
-\r
- case EFI_FILE_DELETED:\r
- FileLength = FFS_FILE_SIZE(FfsFileHeader);\r
- FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8);\r
- FileOffset += FileOccupiedSize;\r
- FfsFileHeader = (EFI_FFS_FILE_HEADER *) ((UINT8 *) FfsFileHeader + FileOccupiedSize);\r
- break;\r
+ break;\r
\r
- default:\r
- return EFI_NOT_FOUND;\r
+ case EFI_FILE_DELETED:\r
+ FileLength = FFS_FILE_SIZE (FfsFileHeader);\r
+ FileOccupiedSize = GET_OCCUPIED_SIZE (FileLength, 8);\r
+ FileOffset += FileOccupiedSize;\r
+ FfsFileHeader = (EFI_FFS_FILE_HEADER *)((UINT8 *)FfsFileHeader + FileOccupiedSize);\r
+ break;\r
\r
+ default:\r
+ return EFI_NOT_FOUND;\r
}\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
FindFfsSectionInSections (\r
- IN VOID *Sections,\r
- IN UINTN SizeOfSections,\r
- IN EFI_SECTION_TYPE SectionType,\r
- OUT EFI_COMMON_SECTION_HEADER **FoundSection\r
+ IN VOID *Sections,\r
+ IN UINTN SizeOfSections,\r
+ IN EFI_SECTION_TYPE SectionType,\r
+ OUT EFI_COMMON_SECTION_HEADER **FoundSection\r
)\r
{\r
- EFI_PHYSICAL_ADDRESS CurrentAddress;\r
- UINT32 Size;\r
- EFI_PHYSICAL_ADDRESS EndOfSections;\r
- EFI_COMMON_SECTION_HEADER *Section;\r
- EFI_PHYSICAL_ADDRESS EndOfSection;\r
+ EFI_PHYSICAL_ADDRESS CurrentAddress;\r
+ UINT32 Size;\r
+ EFI_PHYSICAL_ADDRESS EndOfSections;\r
+ EFI_COMMON_SECTION_HEADER *Section;\r
+ EFI_PHYSICAL_ADDRESS EndOfSection;\r
\r
//\r
// Loop through the FFS file sections\r
//\r
- EndOfSection = (EFI_PHYSICAL_ADDRESS)(UINTN) Sections;\r
+ EndOfSection = (EFI_PHYSICAL_ADDRESS)(UINTN)Sections;\r
EndOfSections = EndOfSection + SizeOfSections;\r
- for (;;) {\r
+ for ( ; ;) {\r
if (EndOfSection == EndOfSections) {\r
break;\r
}\r
+\r
CurrentAddress = EndOfSection;\r
\r
- Section = (EFI_COMMON_SECTION_HEADER*)(UINTN) CurrentAddress;\r
+ Section = (EFI_COMMON_SECTION_HEADER *)(UINTN)CurrentAddress;\r
\r
Size = SECTION_SIZE (Section);\r
if (Size < sizeof (*Section)) {\r
if (EndOfSection > EndOfSections) {\r
return EFI_VOLUME_CORRUPTED;\r
}\r
+\r
Size = GET_OCCUPIED_SIZE (Size, 4);\r
\r
//\r
EFI_STATUS\r
EFIAPI\r
FfsFindSection (\r
- IN EFI_SECTION_TYPE SectionType,\r
- IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
- IN OUT EFI_COMMON_SECTION_HEADER **SectionHeader\r
+ IN EFI_SECTION_TYPE SectionType,\r
+ IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
+ IN OUT EFI_COMMON_SECTION_HEADER **SectionHeader\r
)\r
{\r
- UINT32 FileSize;\r
- EFI_COMMON_SECTION_HEADER *Section;\r
- EFI_STATUS Status;\r
+ UINT32 FileSize;\r
+ EFI_COMMON_SECTION_HEADER *Section;\r
+ EFI_STATUS Status;\r
\r
//\r
// Size is 24 bits wide so mask upper 8 bits.\r
// Does not include FfsFileHeader header size\r
// FileSize is adjusted to FileOccupiedSize as it is 8 byte aligned.\r
//\r
- Section = (EFI_COMMON_SECTION_HEADER *) (FfsFileHeader + 1);\r
- FileSize = FFS_FILE_SIZE(FfsFileHeader);\r
+ Section = (EFI_COMMON_SECTION_HEADER *)(FfsFileHeader + 1);\r
+ FileSize = FFS_FILE_SIZE (FfsFileHeader);\r
FileSize -= sizeof (EFI_FFS_FILE_HEADER);\r
\r
Status = FindFfsSectionInSections (\r
EFI_STATUS\r
EFIAPI\r
FfsFindSectionData (\r
- IN EFI_SECTION_TYPE SectionType,\r
- IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
- IN OUT VOID **SectionData,\r
- IN OUT UINTN *SectionDataSize\r
+ IN EFI_SECTION_TYPE SectionType,\r
+ IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
+ IN OUT VOID **SectionData,\r
+ IN OUT UINTN *SectionDataSize\r
)\r
{\r
- UINT32 FileSize;\r
- EFI_COMMON_SECTION_HEADER *Section;\r
- UINT32 SectionLength;\r
- UINT32 ParsedLength;\r
+ UINT32 FileSize;\r
+ EFI_COMMON_SECTION_HEADER *Section;\r
+ UINT32 SectionLength;\r
+ UINT32 ParsedLength;\r
\r
//\r
// Size is 24 bits wide so mask upper 8 bits.\r
// Does not include FfsFileHeader header size\r
// FileSize is adjusted to FileOccupiedSize as it is 8 byte aligned.\r
//\r
- Section = (EFI_COMMON_SECTION_HEADER *) (FfsFileHeader + 1);\r
- FileSize = FFS_FILE_SIZE(FfsFileHeader);\r
+ Section = (EFI_COMMON_SECTION_HEADER *)(FfsFileHeader + 1);\r
+ FileSize = FFS_FILE_SIZE (FfsFileHeader);\r
FileSize -= sizeof (EFI_FFS_FILE_HEADER);\r
\r
- *SectionData = NULL;\r
- ParsedLength = 0;\r
+ *SectionData = NULL;\r
+ ParsedLength = 0;\r
while (ParsedLength < FileSize) {\r
if (Section->Type == SectionType) {\r
- *SectionData = (VOID *) (Section + 1);\r
- *SectionDataSize = SECTION_SIZE(Section);\r
+ *SectionData = (VOID *)(Section + 1);\r
+ *SectionDataSize = SECTION_SIZE (Section);\r
return EFI_SUCCESS;\r
}\r
+\r
//\r
// Size is 24 bits wide so mask upper 8 bits.\r
// SectionLength is adjusted it is 4 byte aligned.\r
// Go to the next section\r
//\r
- SectionLength = SECTION_SIZE(Section);\r
+ SectionLength = SECTION_SIZE (Section);\r
SectionLength = GET_OCCUPIED_SIZE (SectionLength, 4);\r
\r
ParsedLength += SectionLength;\r
- Section = (EFI_COMMON_SECTION_HEADER *) ((UINT8 *) Section + SectionLength);\r
+ Section = (EFI_COMMON_SECTION_HEADER *)((UINT8 *)Section + SectionLength);\r
}\r
\r
return EFI_NOT_FOUND;\r
\r
**/\r
\r
-\r
#include <PiMm.h>\r
\r
#include <PiPei.h>\r
\r
#include <IndustryStandard/ArmStdSmc.h>\r
\r
-extern EFI_HOB_HANDOFF_INFO_TABLE*\r
+extern EFI_HOB_HANDOFF_INFO_TABLE *\r
HobConstructor (\r
IN VOID *EfiMemoryBegin,\r
IN UINTN EfiMemoryLength,\r
\r
// GUID to identify HOB with whereabouts of communication buffer with Normal\r
// World\r
-extern EFI_GUID gEfiStandaloneMmNonSecureBufferGuid;\r
+extern EFI_GUID gEfiStandaloneMmNonSecureBufferGuid;\r
\r
// GUID to identify HOB where the entry point of the CPU driver will be\r
// populated to allow this entry point driver to invoke it upon receipt of an\r
// event\r
-extern EFI_GUID gEfiArmTfCpuDriverEpDescriptorGuid;\r
+extern EFI_GUID gEfiArmTfCpuDriverEpDescriptorGuid;\r
\r
/**\r
Use the boot information passed by privileged firmware to populate a HOB list\r
**/\r
VOID *\r
CreateHobListFromBootInfo (\r
- IN OUT PI_MM_ARM_TF_CPU_DRIVER_ENTRYPOINT *CpuDriverEntryPoint,\r
- IN EFI_SECURE_PARTITION_BOOT_INFO *PayloadBootInfo\r
-)\r
+ IN OUT PI_MM_ARM_TF_CPU_DRIVER_ENTRYPOINT *CpuDriverEntryPoint,\r
+ IN EFI_SECURE_PARTITION_BOOT_INFO *PayloadBootInfo\r
+ )\r
{\r
- EFI_HOB_HANDOFF_INFO_TABLE *HobStart;\r
- EFI_RESOURCE_ATTRIBUTE_TYPE Attributes;\r
- UINT32 Index;\r
- UINT32 BufferSize;\r
- UINT32 Flags;\r
- EFI_MMRAM_HOB_DESCRIPTOR_BLOCK *MmramRangesHob;\r
- EFI_MMRAM_DESCRIPTOR *MmramRanges;\r
- EFI_MMRAM_DESCRIPTOR *NsCommBufMmramRange;\r
- MP_INFORMATION_HOB_DATA *MpInformationHobData;\r
- EFI_PROCESSOR_INFORMATION *ProcInfoBuffer;\r
- EFI_SECURE_PARTITION_CPU_INFO *CpuInfo;\r
- ARM_TF_CPU_DRIVER_EP_DESCRIPTOR *CpuDriverEntryPointDesc;\r
+ EFI_HOB_HANDOFF_INFO_TABLE *HobStart;\r
+ EFI_RESOURCE_ATTRIBUTE_TYPE Attributes;\r
+ UINT32 Index;\r
+ UINT32 BufferSize;\r
+ UINT32 Flags;\r
+ EFI_MMRAM_HOB_DESCRIPTOR_BLOCK *MmramRangesHob;\r
+ EFI_MMRAM_DESCRIPTOR *MmramRanges;\r
+ EFI_MMRAM_DESCRIPTOR *NsCommBufMmramRange;\r
+ MP_INFORMATION_HOB_DATA *MpInformationHobData;\r
+ EFI_PROCESSOR_INFORMATION *ProcInfoBuffer;\r
+ EFI_SECURE_PARTITION_CPU_INFO *CpuInfo;\r
+ ARM_TF_CPU_DRIVER_EP_DESCRIPTOR *CpuDriverEntryPointDesc;\r
\r
// Create a hoblist with a PHIT and EOH\r
HobStart = HobConstructor (\r
- (VOID *) (UINTN) PayloadBootInfo->SpMemBase,\r
- (UINTN) PayloadBootInfo->SpMemLimit - PayloadBootInfo->SpMemBase,\r
- (VOID *) (UINTN) PayloadBootInfo->SpHeapBase,\r
- (VOID *) (UINTN) (PayloadBootInfo->SpHeapBase + PayloadBootInfo->SpHeapSize)\r
+ (VOID *)(UINTN)PayloadBootInfo->SpMemBase,\r
+ (UINTN)PayloadBootInfo->SpMemLimit - PayloadBootInfo->SpMemBase,\r
+ (VOID *)(UINTN)PayloadBootInfo->SpHeapBase,\r
+ (VOID *)(UINTN)(PayloadBootInfo->SpHeapBase + PayloadBootInfo->SpHeapSize)\r
);\r
\r
// Check that the Hoblist starts at the bottom of the Heap\r
- ASSERT (HobStart == (VOID *) (UINTN) PayloadBootInfo->SpHeapBase);\r
+ ASSERT (HobStart == (VOID *)(UINTN)PayloadBootInfo->SpHeapBase);\r
\r
// Build a Boot Firmware Volume HOB\r
BuildFvHob (PayloadBootInfo->SpImageBase, PayloadBootInfo->SpImageSize);\r
// Build a resource descriptor Hob that describes the available physical\r
// memory range\r
Attributes = (\r
- EFI_RESOURCE_ATTRIBUTE_PRESENT |\r
- EFI_RESOURCE_ATTRIBUTE_INITIALIZED |\r
- EFI_RESOURCE_ATTRIBUTE_TESTED |\r
- EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE\r
- );\r
+ EFI_RESOURCE_ATTRIBUTE_PRESENT |\r
+ EFI_RESOURCE_ATTRIBUTE_INITIALIZED |\r
+ EFI_RESOURCE_ATTRIBUTE_TESTED |\r
+ EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |\r
+ EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |\r
+ EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |\r
+ EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE\r
+ );\r
\r
BuildResourceDescriptorHob (\r
EFI_RESOURCE_SYSTEM_MEMORY,\r
Attributes,\r
- (UINTN) PayloadBootInfo->SpMemBase,\r
+ (UINTN)PayloadBootInfo->SpMemBase,\r
PayloadBootInfo->SpMemLimit - PayloadBootInfo->SpMemBase\r
);\r
\r
// Find the size of the GUIDed HOB with MP information\r
- BufferSize = sizeof (MP_INFORMATION_HOB_DATA);\r
+ BufferSize = sizeof (MP_INFORMATION_HOB_DATA);\r
BufferSize += sizeof (EFI_PROCESSOR_INFORMATION) * PayloadBootInfo->NumCpus;\r
\r
// Create a Guided MP information HOB to enable the ARM TF CPU driver to\r
\r
// Populate the MP information HOB with the topology information passed by\r
// privileged firmware\r
- MpInformationHobData->NumberOfProcessors = PayloadBootInfo->NumCpus;\r
+ MpInformationHobData->NumberOfProcessors = PayloadBootInfo->NumCpus;\r
MpInformationHobData->NumberOfEnabledProcessors = PayloadBootInfo->NumCpus;\r
- ProcInfoBuffer = MpInformationHobData->ProcessorInfoBuffer;\r
- CpuInfo = PayloadBootInfo->CpuInfo;\r
+ ProcInfoBuffer = MpInformationHobData->ProcessorInfoBuffer;\r
+ CpuInfo = PayloadBootInfo->CpuInfo;\r
\r
for (Index = 0; Index < PayloadBootInfo->NumCpus; Index++) {\r
ProcInfoBuffer[Index].ProcessorId = CpuInfo[Index].Mpidr;\r
- ProcInfoBuffer[Index].Location.Package = GET_CLUSTER_ID(CpuInfo[Index].Mpidr);\r
- ProcInfoBuffer[Index].Location.Core = GET_CORE_ID(CpuInfo[Index].Mpidr);\r
- ProcInfoBuffer[Index].Location.Thread = GET_CORE_ID(CpuInfo[Index].Mpidr);\r
+ ProcInfoBuffer[Index].Location.Package = GET_CLUSTER_ID (CpuInfo[Index].Mpidr);\r
+ ProcInfoBuffer[Index].Location.Core = GET_CORE_ID (CpuInfo[Index].Mpidr);\r
+ ProcInfoBuffer[Index].Location.Thread = GET_CORE_ID (CpuInfo[Index].Mpidr);\r
\r
Flags = PROCESSOR_ENABLED_BIT | PROCESSOR_HEALTH_STATUS_BIT;\r
if (CpuInfo[Index].Flags & CPU_INFO_FLAG_PRIMARY_CPU) {\r
Flags |= PROCESSOR_AS_BSP_BIT;\r
}\r
+\r
ProcInfoBuffer[Index].StatusFlag = Flags;\r
}\r
\r
// Create a Guided HOB to tell the ARM TF CPU driver the location and length\r
// of the communication buffer shared with the Normal world.\r
- NsCommBufMmramRange = (EFI_MMRAM_DESCRIPTOR *) BuildGuidHob (\r
- &gEfiStandaloneMmNonSecureBufferGuid,\r
- sizeof (EFI_MMRAM_DESCRIPTOR)\r
- );\r
+ NsCommBufMmramRange = (EFI_MMRAM_DESCRIPTOR *)BuildGuidHob (\r
+ &gEfiStandaloneMmNonSecureBufferGuid,\r
+ sizeof (EFI_MMRAM_DESCRIPTOR)\r
+ );\r
NsCommBufMmramRange->PhysicalStart = PayloadBootInfo->SpNsCommBufBase;\r
NsCommBufMmramRange->CpuStart = PayloadBootInfo->SpNsCommBufBase;\r
NsCommBufMmramRange->PhysicalSize = PayloadBootInfo->SpNsCommBufSize;\r
\r
// Create a Guided HOB to enable the ARM TF CPU driver to share its entry\r
// point and populate it with the address of the shared buffer\r
- CpuDriverEntryPointDesc = (ARM_TF_CPU_DRIVER_EP_DESCRIPTOR *) BuildGuidHob (\r
- &gEfiArmTfCpuDriverEpDescriptorGuid,\r
- sizeof (ARM_TF_CPU_DRIVER_EP_DESCRIPTOR)\r
- );\r
+ CpuDriverEntryPointDesc = (ARM_TF_CPU_DRIVER_EP_DESCRIPTOR *)BuildGuidHob (\r
+ &gEfiArmTfCpuDriverEpDescriptorGuid,\r
+ sizeof (ARM_TF_CPU_DRIVER_EP_DESCRIPTOR)\r
+ );\r
\r
- *CpuDriverEntryPoint = NULL;\r
+ *CpuDriverEntryPoint = NULL;\r
CpuDriverEntryPointDesc->ArmTfCpuDriverEpPtr = CpuDriverEntryPoint;\r
\r
// Find the size of the GUIDed HOB with SRAM ranges\r
- BufferSize = sizeof (EFI_MMRAM_HOB_DESCRIPTOR_BLOCK);\r
+ BufferSize = sizeof (EFI_MMRAM_HOB_DESCRIPTOR_BLOCK);\r
BufferSize += PayloadBootInfo->NumSpMemRegions * sizeof (EFI_MMRAM_DESCRIPTOR);\r
\r
// Create a GUIDed HOB with SRAM ranges\r
MmramRanges[3].RegionState = EFI_CACHEABLE | EFI_ALLOCATED;\r
\r
// Base and size of heap memory shared by all cpus\r
- MmramRanges[4].PhysicalStart = (EFI_PHYSICAL_ADDRESS) (UINTN) HobStart;\r
- MmramRanges[4].CpuStart = (EFI_PHYSICAL_ADDRESS) (UINTN) HobStart;\r
- MmramRanges[4].PhysicalSize = HobStart->EfiFreeMemoryBottom - (EFI_PHYSICAL_ADDRESS) (UINTN) HobStart;\r
+ MmramRanges[4].PhysicalStart = (EFI_PHYSICAL_ADDRESS)(UINTN)HobStart;\r
+ MmramRanges[4].CpuStart = (EFI_PHYSICAL_ADDRESS)(UINTN)HobStart;\r
+ MmramRanges[4].PhysicalSize = HobStart->EfiFreeMemoryBottom - (EFI_PHYSICAL_ADDRESS)(UINTN)HobStart;\r
MmramRanges[4].RegionState = EFI_CACHEABLE | EFI_ALLOCATED;\r
\r
// Base and size of heap memory shared by all cpus\r
\r
**/\r
\r
-\r
#include <PiMm.h>\r
\r
#include <PiPei.h>\r
EFI_STATUS\r
EFIAPI\r
UpdateMmFoundationPeCoffPermissions (\r
- IN CONST PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
- IN EFI_PHYSICAL_ADDRESS ImageBase,\r
- IN UINT32 SectionHeaderOffset,\r
- IN CONST UINT16 NumberOfSections,\r
- IN REGION_PERMISSION_UPDATE_FUNC TextUpdater,\r
- IN REGION_PERMISSION_UPDATE_FUNC ReadOnlyUpdater,\r
- IN REGION_PERMISSION_UPDATE_FUNC ReadWriteUpdater\r
+ IN CONST PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
+ IN EFI_PHYSICAL_ADDRESS ImageBase,\r
+ IN UINT32 SectionHeaderOffset,\r
+ IN CONST UINT16 NumberOfSections,\r
+ IN REGION_PERMISSION_UPDATE_FUNC TextUpdater,\r
+ IN REGION_PERMISSION_UPDATE_FUNC ReadOnlyUpdater,\r
+ IN REGION_PERMISSION_UPDATE_FUNC ReadWriteUpdater\r
)\r
{\r
- EFI_IMAGE_SECTION_HEADER SectionHeader;\r
- RETURN_STATUS Status;\r
- EFI_PHYSICAL_ADDRESS Base;\r
- UINTN Size;\r
- UINTN ReadSize;\r
- UINTN Index;\r
+ EFI_IMAGE_SECTION_HEADER SectionHeader;\r
+ RETURN_STATUS Status;\r
+ EFI_PHYSICAL_ADDRESS Base;\r
+ UINTN Size;\r
+ UINTN ReadSize;\r
+ UINTN Index;\r
\r
ASSERT (ImageContext != NULL);\r
\r
//\r
// Read section header from file\r
//\r
- Size = sizeof (EFI_IMAGE_SECTION_HEADER);\r
+ Size = sizeof (EFI_IMAGE_SECTION_HEADER);\r
ReadSize = Size;\r
- Status = ImageContext->ImageRead (\r
- ImageContext->Handle,\r
- SectionHeaderOffset,\r
- &Size,\r
- &SectionHeader\r
- );\r
+ Status = ImageContext->ImageRead (\r
+ ImageContext->Handle,\r
+ SectionHeaderOffset,\r
+ &Size,\r
+ &SectionHeader\r
+ );\r
\r
if (RETURN_ERROR (Status) || (Size != ReadSize)) {\r
- DEBUG ((DEBUG_ERROR,\r
- "%a: ImageContext->ImageRead () failed (Status = %r)\n",\r
- __FUNCTION__, Status));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "%a: ImageContext->ImageRead () failed (Status = %r)\n",\r
+ __FUNCTION__,\r
+ Status\r
+ ));\r
return Status;\r
}\r
\r
- DEBUG ((DEBUG_INFO,\r
- "%a: Section %d of image at 0x%lx has 0x%x permissions\n",\r
- __FUNCTION__, Index, ImageContext->ImageAddress, SectionHeader.Characteristics));\r
- DEBUG ((DEBUG_INFO,\r
- "%a: Section %d of image at 0x%lx has %a name\n",\r
- __FUNCTION__, Index, ImageContext->ImageAddress, SectionHeader.Name));\r
- DEBUG ((DEBUG_INFO,\r
- "%a: Section %d of image at 0x%lx has 0x%x address\n",\r
- __FUNCTION__, Index, ImageContext->ImageAddress,\r
- ImageContext->ImageAddress + SectionHeader.VirtualAddress));\r
- DEBUG ((DEBUG_INFO,\r
- "%a: Section %d of image at 0x%lx has 0x%x data\n",\r
- __FUNCTION__, Index, ImageContext->ImageAddress, SectionHeader.PointerToRawData));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: Section %d of image at 0x%lx has 0x%x permissions\n",\r
+ __FUNCTION__,\r
+ Index,\r
+ ImageContext->ImageAddress,\r
+ SectionHeader.Characteristics\r
+ ));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: Section %d of image at 0x%lx has %a name\n",\r
+ __FUNCTION__,\r
+ Index,\r
+ ImageContext->ImageAddress,\r
+ SectionHeader.Name\r
+ ));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: Section %d of image at 0x%lx has 0x%x address\n",\r
+ __FUNCTION__,\r
+ Index,\r
+ ImageContext->ImageAddress,\r
+ ImageContext->ImageAddress + SectionHeader.VirtualAddress\r
+ ));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: Section %d of image at 0x%lx has 0x%x data\n",\r
+ __FUNCTION__,\r
+ Index,\r
+ ImageContext->ImageAddress,\r
+ SectionHeader.PointerToRawData\r
+ ));\r
\r
//\r
// If the section is marked as XN then remove the X attribute. Furthermore,\r
\r
if ((SectionHeader.Characteristics & EFI_IMAGE_SCN_MEM_WRITE) != 0) {\r
ReadWriteUpdater (Base, SectionHeader.Misc.VirtualSize);\r
- DEBUG ((DEBUG_INFO,\r
- "%a: Mapping section %d of image at 0x%lx with RW-XN permissions\n",\r
- __FUNCTION__, Index, ImageContext->ImageAddress));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: Mapping section %d of image at 0x%lx with RW-XN permissions\n",\r
+ __FUNCTION__,\r
+ Index,\r
+ ImageContext->ImageAddress\r
+ ));\r
} else {\r
- DEBUG ((DEBUG_INFO,\r
- "%a: Mapping section %d of image at 0x%lx with RO-XN permissions\n",\r
- __FUNCTION__, Index, ImageContext->ImageAddress));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: Mapping section %d of image at 0x%lx with RO-XN permissions\n",\r
+ __FUNCTION__,\r
+ Index,\r
+ ImageContext->ImageAddress\r
+ ));\r
}\r
} else {\r
- DEBUG ((DEBUG_INFO,\r
- "%a: Ignoring section %d of image at 0x%lx with 0x%x permissions\n",\r
- __FUNCTION__, Index, ImageContext->ImageAddress, SectionHeader.Characteristics));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: Ignoring section %d of image at 0x%lx with 0x%x permissions\n",\r
+ __FUNCTION__,\r
+ Index,\r
+ ImageContext->ImageAddress,\r
+ SectionHeader.Characteristics\r
+ ));\r
}\r
+\r
SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER);\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
LocateStandaloneMmCorePeCoffData (\r
- IN EFI_FIRMWARE_VOLUME_HEADER *BfvAddress,\r
- IN OUT VOID **TeData,\r
- IN OUT UINTN *TeDataSize\r
+ IN EFI_FIRMWARE_VOLUME_HEADER *BfvAddress,\r
+ IN OUT VOID **TeData,\r
+ IN OUT UINTN *TeDataSize\r
)\r
{\r
- EFI_FFS_FILE_HEADER *FileHeader;\r
- EFI_STATUS Status;\r
+ EFI_FFS_FILE_HEADER *FileHeader;\r
+ EFI_STATUS Status;\r
\r
FileHeader = NULL;\r
- Status = FfsFindNextFile (\r
- EFI_FV_FILETYPE_SECURITY_CORE,\r
- BfvAddress,\r
- &FileHeader\r
- );\r
+ Status = FfsFindNextFile (\r
+ EFI_FV_FILETYPE_SECURITY_CORE,\r
+ BfvAddress,\r
+ &FileHeader\r
+ );\r
\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_ERROR, "Unable to locate Standalone MM FFS file - 0x%x\n",\r
- Status));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "Unable to locate Standalone MM FFS file - 0x%x\n",\r
+ Status\r
+ ));\r
return Status;\r
}\r
\r
if (EFI_ERROR (Status)) {\r
Status = FfsFindSectionData (EFI_SECTION_TE, FileHeader, TeData, TeDataSize);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_ERROR, "Unable to locate Standalone MM Section data - %r\n",\r
- Status));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "Unable to locate Standalone MM Section data - %r\n",\r
+ Status\r
+ ));\r
return Status;\r
}\r
}\r
STATIC\r
EFI_STATUS\r
GetPeCoffSectionInformation (\r
- IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
- OUT EFI_PHYSICAL_ADDRESS *ImageBase,\r
- OUT UINT32 *SectionHeaderOffset,\r
- OUT UINT16 *NumberOfSections\r
+ IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
+ OUT EFI_PHYSICAL_ADDRESS *ImageBase,\r
+ OUT UINT32 *SectionHeaderOffset,\r
+ OUT UINT16 *NumberOfSections\r
)\r
{\r
- RETURN_STATUS Status;\r
- EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr;\r
- EFI_IMAGE_OPTIONAL_HEADER_UNION HdrData;\r
- UINTN Size;\r
- UINTN ReadSize;\r
+ RETURN_STATUS Status;\r
+ EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr;\r
+ EFI_IMAGE_OPTIONAL_HEADER_UNION HdrData;\r
+ UINTN Size;\r
+ UINTN ReadSize;\r
\r
ASSERT (ImageContext != NULL);\r
ASSERT (SectionHeaderOffset != NULL);\r
\r
Status = PeCoffLoaderGetImageInfo (ImageContext);\r
if (RETURN_ERROR (Status)) {\r
- DEBUG ((DEBUG_ERROR,\r
- "%a: PeCoffLoaderGetImageInfo () failed (Status == %r)\n",\r
- __FUNCTION__, Status));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "%a: PeCoffLoaderGetImageInfo () failed (Status == %r)\n",\r
+ __FUNCTION__,\r
+ Status\r
+ ));\r
return Status;\r
}\r
\r
// granularity at which we can tighten permissions.\r
//\r
if (!ImageContext->IsTeImage) {\r
- DEBUG ((DEBUG_WARN,\r
- "%a: non-TE Image at 0x%lx has SectionAlignment < 4 KB (%lu)\n",\r
- __FUNCTION__, ImageContext->ImageAddress, ImageContext->SectionAlignment));\r
+ DEBUG ((\r
+ DEBUG_WARN,\r
+ "%a: non-TE Image at 0x%lx has SectionAlignment < 4 KB (%lu)\n",\r
+ __FUNCTION__,\r
+ ImageContext->ImageAddress,\r
+ ImageContext->SectionAlignment\r
+ ));\r
return RETURN_UNSUPPORTED;\r
}\r
+\r
ImageContext->SectionAlignment = EFI_PAGE_SIZE;\r
}\r
\r
// location in both images.\r
//\r
Hdr.Union = &HdrData;\r
- Size = sizeof (EFI_IMAGE_OPTIONAL_HEADER_UNION);\r
- ReadSize = Size;\r
- Status = ImageContext->ImageRead (\r
- ImageContext->Handle,\r
- ImageContext->PeCoffHeaderOffset,\r
- &Size,\r
- Hdr.Pe32\r
- );\r
+ Size = sizeof (EFI_IMAGE_OPTIONAL_HEADER_UNION);\r
+ ReadSize = Size;\r
+ Status = ImageContext->ImageRead (\r
+ ImageContext->Handle,\r
+ ImageContext->PeCoffHeaderOffset,\r
+ &Size,\r
+ Hdr.Pe32\r
+ );\r
\r
if (RETURN_ERROR (Status) || (Size != ReadSize)) {\r
- DEBUG ((DEBUG_ERROR,\r
- "%a: TmpContext->ImageRead () failed (Status = %r)\n",\r
- __FUNCTION__, Status));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "%a: TmpContext->ImageRead () failed (Status = %r)\n",\r
+ __FUNCTION__,\r
+ Status\r
+ ));\r
return Status;\r
}\r
\r
ASSERT (Hdr.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE);\r
\r
*SectionHeaderOffset = ImageContext->PeCoffHeaderOffset + sizeof (UINT32) +\r
- sizeof (EFI_IMAGE_FILE_HEADER);\r
- *NumberOfSections = Hdr.Pe32->FileHeader.NumberOfSections;\r
+ sizeof (EFI_IMAGE_FILE_HEADER);\r
+ *NumberOfSections = Hdr.Pe32->FileHeader.NumberOfSections;\r
\r
switch (Hdr.Pe32->OptionalHeader.Magic) {\r
- case EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r
- *SectionHeaderOffset += Hdr.Pe32->FileHeader.SizeOfOptionalHeader;\r
- break;\r
- case EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r
- *SectionHeaderOffset += Hdr.Pe32Plus->FileHeader.SizeOfOptionalHeader;\r
- break;\r
- default:\r
- ASSERT (FALSE);\r
+ case EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r
+ *SectionHeaderOffset += Hdr.Pe32->FileHeader.SizeOfOptionalHeader;\r
+ break;\r
+ case EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC:\r
+ *SectionHeaderOffset += Hdr.Pe32Plus->FileHeader.SizeOfOptionalHeader;\r
+ break;\r
+ default:\r
+ ASSERT (FALSE);\r
}\r
} else {\r
*SectionHeaderOffset = (UINTN)(sizeof (EFI_TE_IMAGE_HEADER));\r
- *NumberOfSections = Hdr.Te->NumberOfSections;\r
- *ImageBase -= (UINT32)Hdr.Te->StrippedSize - sizeof (EFI_TE_IMAGE_HEADER);\r
+ *NumberOfSections = Hdr.Te->NumberOfSections;\r
+ *ImageBase -= (UINT32)Hdr.Te->StrippedSize - sizeof (EFI_TE_IMAGE_HEADER);\r
}\r
+\r
return RETURN_SUCCESS;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
GetStandaloneMmCorePeCoffSections (\r
- IN VOID *TeData,\r
- IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
- OUT EFI_PHYSICAL_ADDRESS *ImageBase,\r
- IN OUT UINT32 *SectionHeaderOffset,\r
- IN OUT UINT16 *NumberOfSections\r
+ IN VOID *TeData,\r
+ IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
+ OUT EFI_PHYSICAL_ADDRESS *ImageBase,\r
+ IN OUT UINT32 *SectionHeaderOffset,\r
+ IN OUT UINT16 *NumberOfSections\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
// Initialize the Image Context\r
ZeroMem (ImageContext, sizeof (PE_COFF_LOADER_IMAGE_CONTEXT));\r
\r
DEBUG ((DEBUG_INFO, "Found Standalone MM PE data - 0x%x\n", TeData));\r
\r
- Status = GetPeCoffSectionInformation (ImageContext, ImageBase,\r
- SectionHeaderOffset, NumberOfSections);\r
+ Status = GetPeCoffSectionInformation (\r
+ ImageContext,\r
+ ImageBase,\r
+ SectionHeaderOffset,\r
+ NumberOfSections\r
+ );\r
if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_ERROR, "Unable to locate Standalone MM Core PE-COFF Section information - %r\n", Status));\r
return Status;\r
}\r
\r
- DEBUG ((DEBUG_INFO, "Standalone MM Core PE-COFF SectionHeaderOffset - 0x%x, NumberOfSections - %d\n",\r
- *SectionHeaderOffset, *NumberOfSections));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "Standalone MM Core PE-COFF SectionHeaderOffset - 0x%x, NumberOfSections - %d\n",\r
+ *SectionHeaderOffset,\r
+ *NumberOfSections\r
+ ));\r
\r
return Status;\r
}\r
\r
**/\r
\r
-\r
#include <PiMm.h>\r
\r
#include <Library/Arm/StandaloneMmCoreEntryPoint.h>\r
#include <IndustryStandard/ArmMmSvc.h>\r
#include <IndustryStandard/ArmFfaSvc.h>\r
\r
-#define SPM_MAJOR_VER_MASK 0xFFFF0000\r
-#define SPM_MINOR_VER_MASK 0x0000FFFF\r
-#define SPM_MAJOR_VER_SHIFT 16\r
-#define FFA_NOT_SUPPORTED -1\r
+#define SPM_MAJOR_VER_MASK 0xFFFF0000\r
+#define SPM_MINOR_VER_MASK 0x0000FFFF\r
+#define SPM_MAJOR_VER_SHIFT 16\r
+#define FFA_NOT_SUPPORTED -1\r
\r
-STATIC CONST UINT32 mSpmMajorVer = SPM_MAJOR_VERSION;\r
-STATIC CONST UINT32 mSpmMinorVer = SPM_MINOR_VERSION;\r
+STATIC CONST UINT32 mSpmMajorVer = SPM_MAJOR_VERSION;\r
+STATIC CONST UINT32 mSpmMinorVer = SPM_MINOR_VERSION;\r
\r
-STATIC CONST UINT32 mSpmMajorVerFfa = SPM_MAJOR_VERSION_FFA;\r
-STATIC CONST UINT32 mSpmMinorVerFfa = SPM_MINOR_VERSION_FFA;\r
+STATIC CONST UINT32 mSpmMajorVerFfa = SPM_MAJOR_VERSION_FFA;\r
+STATIC CONST UINT32 mSpmMinorVerFfa = SPM_MINOR_VERSION_FFA;\r
\r
-#define BOOT_PAYLOAD_VERSION 1\r
+#define BOOT_PAYLOAD_VERSION 1\r
\r
-PI_MM_ARM_TF_CPU_DRIVER_ENTRYPOINT CpuDriverEntryPoint = NULL;\r
+PI_MM_ARM_TF_CPU_DRIVER_ENTRYPOINT CpuDriverEntryPoint = NULL;\r
\r
/**\r
Retrieve a pointer to and print the boot information passed by privileged\r
**/\r
EFI_SECURE_PARTITION_BOOT_INFO *\r
GetAndPrintBootinformation (\r
- IN VOID *SharedBufAddress\r
-)\r
+ IN VOID *SharedBufAddress\r
+ )\r
{\r
- EFI_SECURE_PARTITION_BOOT_INFO *PayloadBootInfo;\r
- EFI_SECURE_PARTITION_CPU_INFO *PayloadCpuInfo;\r
- UINTN Index;\r
+ EFI_SECURE_PARTITION_BOOT_INFO *PayloadBootInfo;\r
+ EFI_SECURE_PARTITION_CPU_INFO *PayloadCpuInfo;\r
+ UINTN Index;\r
\r
- PayloadBootInfo = (EFI_SECURE_PARTITION_BOOT_INFO *) SharedBufAddress;\r
+ PayloadBootInfo = (EFI_SECURE_PARTITION_BOOT_INFO *)SharedBufAddress;\r
\r
if (PayloadBootInfo == NULL) {\r
DEBUG ((DEBUG_ERROR, "PayloadBootInfo NULL\n"));\r
}\r
\r
if (PayloadBootInfo->Header.Version != BOOT_PAYLOAD_VERSION) {\r
- DEBUG ((DEBUG_ERROR, "Boot Information Version Mismatch. Current=0x%x, Expected=0x%x.\n",\r
- PayloadBootInfo->Header.Version, BOOT_PAYLOAD_VERSION));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "Boot Information Version Mismatch. Current=0x%x, Expected=0x%x.\n",\r
+ PayloadBootInfo->Header.Version,\r
+ BOOT_PAYLOAD_VERSION\r
+ ));\r
return NULL;\r
}\r
\r
DEBUG ((DEBUG_INFO, "NumCpus - 0x%x\n", PayloadBootInfo->NumCpus));\r
DEBUG ((DEBUG_INFO, "CpuInfo - 0x%p\n", PayloadBootInfo->CpuInfo));\r
\r
- PayloadCpuInfo = (EFI_SECURE_PARTITION_CPU_INFO *) PayloadBootInfo->CpuInfo;\r
+ PayloadCpuInfo = (EFI_SECURE_PARTITION_CPU_INFO *)PayloadBootInfo->CpuInfo;\r
\r
if (PayloadCpuInfo == NULL) {\r
DEBUG ((DEBUG_ERROR, "PayloadCpuInfo NULL\n"));\r
VOID\r
EFIAPI\r
DelegatedEventLoop (\r
- IN ARM_SVC_ARGS *EventCompleteSvcArgs\r
+ IN ARM_SVC_ARGS *EventCompleteSvcArgs\r
)\r
{\r
- BOOLEAN FfaEnabled;\r
- EFI_STATUS Status;\r
- UINTN SvcStatus;\r
+ BOOLEAN FfaEnabled;\r
+ EFI_STATUS Status;\r
+ UINTN SvcStatus;\r
\r
while (TRUE) {\r
ArmCallSvc (EventCompleteSvcArgs);\r
\r
DEBUG ((DEBUG_INFO, "Received delegated event\n"));\r
- DEBUG ((DEBUG_INFO, "X0 : 0x%x\n", (UINT32) EventCompleteSvcArgs->Arg0));\r
- DEBUG ((DEBUG_INFO, "X1 : 0x%x\n", (UINT32) EventCompleteSvcArgs->Arg1));\r
- DEBUG ((DEBUG_INFO, "X2 : 0x%x\n", (UINT32) EventCompleteSvcArgs->Arg2));\r
- DEBUG ((DEBUG_INFO, "X3 : 0x%x\n", (UINT32) EventCompleteSvcArgs->Arg3));\r
- DEBUG ((DEBUG_INFO, "X4 : 0x%x\n", (UINT32) EventCompleteSvcArgs->Arg4));\r
- DEBUG ((DEBUG_INFO, "X5 : 0x%x\n", (UINT32) EventCompleteSvcArgs->Arg5));\r
- DEBUG ((DEBUG_INFO, "X6 : 0x%x\n", (UINT32) EventCompleteSvcArgs->Arg6));\r
- DEBUG ((DEBUG_INFO, "X7 : 0x%x\n", (UINT32) EventCompleteSvcArgs->Arg7));\r
+ DEBUG ((DEBUG_INFO, "X0 : 0x%x\n", (UINT32)EventCompleteSvcArgs->Arg0));\r
+ DEBUG ((DEBUG_INFO, "X1 : 0x%x\n", (UINT32)EventCompleteSvcArgs->Arg1));\r
+ DEBUG ((DEBUG_INFO, "X2 : 0x%x\n", (UINT32)EventCompleteSvcArgs->Arg2));\r
+ DEBUG ((DEBUG_INFO, "X3 : 0x%x\n", (UINT32)EventCompleteSvcArgs->Arg3));\r
+ DEBUG ((DEBUG_INFO, "X4 : 0x%x\n", (UINT32)EventCompleteSvcArgs->Arg4));\r
+ DEBUG ((DEBUG_INFO, "X5 : 0x%x\n", (UINT32)EventCompleteSvcArgs->Arg5));\r
+ DEBUG ((DEBUG_INFO, "X6 : 0x%x\n", (UINT32)EventCompleteSvcArgs->Arg6));\r
+ DEBUG ((DEBUG_INFO, "X7 : 0x%x\n", (UINT32)EventCompleteSvcArgs->Arg7));\r
\r
FfaEnabled = FeaturePcdGet (PcdFfaEnable);\r
if (FfaEnabled) {\r
EventCompleteSvcArgs->Arg3\r
);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_ERROR, "Failed delegated event 0x%x, Status 0x%x\n",\r
- EventCompleteSvcArgs->Arg3, Status));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "Failed delegated event 0x%x, Status 0x%x\n",\r
+ EventCompleteSvcArgs->Arg3,\r
+ Status\r
+ ));\r
}\r
} else {\r
Status = CpuDriverEntryPoint (\r
EventCompleteSvcArgs->Arg1\r
);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((DEBUG_ERROR, "Failed delegated event 0x%x, Status 0x%x\n",\r
- EventCompleteSvcArgs->Arg0, Status));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "Failed delegated event 0x%x, Status 0x%x\n",\r
+ EventCompleteSvcArgs->Arg0,\r
+ Status\r
+ ));\r
}\r
}\r
\r
switch (Status) {\r
- case EFI_SUCCESS:\r
- SvcStatus = ARM_SVC_SPM_RET_SUCCESS;\r
- break;\r
- case EFI_INVALID_PARAMETER:\r
- SvcStatus = ARM_SVC_SPM_RET_INVALID_PARAMS;\r
- break;\r
- case EFI_ACCESS_DENIED:\r
- SvcStatus = ARM_SVC_SPM_RET_DENIED;\r
- break;\r
- case EFI_OUT_OF_RESOURCES:\r
- SvcStatus = ARM_SVC_SPM_RET_NO_MEMORY;\r
- break;\r
- case EFI_UNSUPPORTED:\r
- SvcStatus = ARM_SVC_SPM_RET_NOT_SUPPORTED;\r
- break;\r
- default:\r
- SvcStatus = ARM_SVC_SPM_RET_NOT_SUPPORTED;\r
- break;\r
+ case EFI_SUCCESS:\r
+ SvcStatus = ARM_SVC_SPM_RET_SUCCESS;\r
+ break;\r
+ case EFI_INVALID_PARAMETER:\r
+ SvcStatus = ARM_SVC_SPM_RET_INVALID_PARAMS;\r
+ break;\r
+ case EFI_ACCESS_DENIED:\r
+ SvcStatus = ARM_SVC_SPM_RET_DENIED;\r
+ break;\r
+ case EFI_OUT_OF_RESOURCES:\r
+ SvcStatus = ARM_SVC_SPM_RET_NO_MEMORY;\r
+ break;\r
+ case EFI_UNSUPPORTED:\r
+ SvcStatus = ARM_SVC_SPM_RET_NOT_SUPPORTED;\r
+ break;\r
+ default:\r
+ SvcStatus = ARM_SVC_SPM_RET_NOT_SUPPORTED;\r
+ break;\r
}\r
\r
if (FfaEnabled) {\r
**/\r
STATIC\r
EFI_STATUS\r
-GetSpmVersion (VOID)\r
+GetSpmVersion (\r
+ VOID\r
+ )\r
{\r
- EFI_STATUS Status;\r
- UINT16 CalleeSpmMajorVer;\r
- UINT16 CallerSpmMajorVer;\r
- UINT16 CalleeSpmMinorVer;\r
- UINT16 CallerSpmMinorVer;\r
- UINT32 SpmVersion;\r
- ARM_SVC_ARGS SpmVersionArgs;\r
+ EFI_STATUS Status;\r
+ UINT16 CalleeSpmMajorVer;\r
+ UINT16 CallerSpmMajorVer;\r
+ UINT16 CalleeSpmMinorVer;\r
+ UINT16 CallerSpmMinorVer;\r
+ UINT32 SpmVersion;\r
+ ARM_SVC_ARGS SpmVersionArgs;\r
\r
if (FeaturePcdGet (PcdFfaEnable)) {\r
- SpmVersionArgs.Arg0 = ARM_SVC_ID_FFA_VERSION_AARCH32;\r
- SpmVersionArgs.Arg1 = mSpmMajorVerFfa << SPM_MAJOR_VER_SHIFT;\r
+ SpmVersionArgs.Arg0 = ARM_SVC_ID_FFA_VERSION_AARCH32;\r
+ SpmVersionArgs.Arg1 = mSpmMajorVerFfa << SPM_MAJOR_VER_SHIFT;\r
SpmVersionArgs.Arg1 |= mSpmMinorVerFfa;\r
- CallerSpmMajorVer = mSpmMajorVerFfa;\r
- CallerSpmMinorVer = mSpmMinorVerFfa;\r
+ CallerSpmMajorVer = mSpmMajorVerFfa;\r
+ CallerSpmMinorVer = mSpmMinorVerFfa;\r
} else {\r
SpmVersionArgs.Arg0 = ARM_SVC_ID_SPM_VERSION_AARCH32;\r
- CallerSpmMajorVer = mSpmMajorVer;\r
- CallerSpmMinorVer = mSpmMinorVer;\r
+ CallerSpmMajorVer = mSpmMajorVer;\r
+ CallerSpmMinorVer = mSpmMinorVer;\r
}\r
\r
ArmCallSvc (&SpmVersionArgs);\r
if ((CalleeSpmMajorVer == CallerSpmMajorVer) &&\r
(CalleeSpmMinorVer >= CallerSpmMinorVer))\r
{\r
- DEBUG ((DEBUG_INFO, "SPM Version: Major=0x%x, Minor=0x%x\n",\r
- CalleeSpmMajorVer, CalleeSpmMinorVer));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "SPM Version: Major=0x%x, Minor=0x%x\n",\r
+ CalleeSpmMajorVer,\r
+ CalleeSpmMinorVer\r
+ ));\r
Status = EFI_SUCCESS;\r
- }\r
- else\r
- {\r
- DEBUG ((DEBUG_INFO, "Incompatible SPM Versions.\n Callee Version: Major=0x%x, Minor=0x%x.\n Caller: Major=0x%x, Minor>=0x%x.\n",\r
- CalleeSpmMajorVer, CalleeSpmMinorVer, CallerSpmMajorVer, CallerSpmMinorVer));\r
+ } else {\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "Incompatible SPM Versions.\n Callee Version: Major=0x%x, Minor=0x%x.\n Caller: Major=0x%x, Minor>=0x%x.\n",\r
+ CalleeSpmMajorVer,\r
+ CalleeSpmMinorVer,\r
+ CallerSpmMajorVer,\r
+ CallerSpmMinorVer\r
+ ));\r
Status = EFI_UNSUPPORTED;\r
}\r
\r
STATIC\r
VOID\r
InitArmSvcArgs (\r
- OUT ARM_SVC_ARGS *InitMmFoundationSvcArgs,\r
- OUT INT32 *Ret\r
+ OUT ARM_SVC_ARGS *InitMmFoundationSvcArgs,\r
+ OUT INT32 *Ret\r
)\r
{\r
if (FeaturePcdGet (PcdFfaEnable)) {\r
IN UINT64 cookie2\r
)\r
{\r
- PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;\r
- EFI_SECURE_PARTITION_BOOT_INFO *PayloadBootInfo;\r
- ARM_SVC_ARGS InitMmFoundationSvcArgs;\r
- EFI_STATUS Status;\r
- INT32 Ret;\r
- UINT32 SectionHeaderOffset;\r
- UINT16 NumberOfSections;\r
- VOID *HobStart;\r
- VOID *TeData;\r
- UINTN TeDataSize;\r
- EFI_PHYSICAL_ADDRESS ImageBase;\r
+ PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;\r
+ EFI_SECURE_PARTITION_BOOT_INFO *PayloadBootInfo;\r
+ ARM_SVC_ARGS InitMmFoundationSvcArgs;\r
+ EFI_STATUS Status;\r
+ INT32 Ret;\r
+ UINT32 SectionHeaderOffset;\r
+ UINT16 NumberOfSections;\r
+ VOID *HobStart;\r
+ VOID *TeData;\r
+ UINTN TeDataSize;\r
+ EFI_PHYSICAL_ADDRESS ImageBase;\r
\r
// Get Secure Partition Manager Version Information\r
Status = GetSpmVersion ();\r
\r
// Locate PE/COFF File information for the Standalone MM core module\r
Status = LocateStandaloneMmCorePeCoffData (\r
- (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) PayloadBootInfo->SpImageBase,\r
+ (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)PayloadBootInfo->SpImageBase,\r
&TeData,\r
&TeDataSize\r
);\r
//\r
ProcessModuleEntryPointList (HobStart);\r
\r
- DEBUG ((DEBUG_INFO, "Shared Cpu Driver EP %p\n", (VOID *) CpuDriverEntryPoint));\r
+ DEBUG ((DEBUG_INFO, "Shared Cpu Driver EP %p\n", (VOID *)CpuDriverEntryPoint));\r
\r
finish:\r
if (Status == RETURN_UNSUPPORTED) {\r
} else {\r
Ret = 0;\r
}\r
- ZeroMem (&InitMmFoundationSvcArgs, sizeof(InitMmFoundationSvcArgs));\r
+\r
+ ZeroMem (&InitMmFoundationSvcArgs, sizeof (InitMmFoundationSvcArgs));\r
InitArmSvcArgs (&InitMmFoundationSvcArgs, &Ret);\r
DelegatedEventLoop (&InitMmFoundationSvcArgs);\r
}\r
\r
**/\r
\r
-\r
#include <PiMm.h>\r
\r
#include <Library/StandaloneMmCoreEntryPoint.h>\r
//\r
// Cache copy of HobList pointer.\r
//\r
-VOID *gHobList = NULL;\r
+VOID *gHobList = NULL;\r
\r
/**\r
The entry point of PE/COFF Image for the STANDALONE MM Core.\r
//\r
}\r
\r
-\r
/**\r
Required by the EBC compiler and identical in functionality to _ModuleEntryPoint().\r
\r
//\r
// Cache copy of HobList pointer.\r
//\r
-VOID *gHobList = NULL;\r
+VOID *gHobList = NULL;\r
\r
VOID *\r
CreateHob (\r
- IN UINT16 HobType,\r
- IN UINT16 HobLength\r
+ IN UINT16 HobType,\r
+ IN UINT16 HobLength\r
)\r
{\r
EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob;\r
return NULL;\r
}\r
\r
- Hob = (VOID*) (UINTN) HandOffHob->EfiEndOfHobList;\r
- ((EFI_HOB_GENERIC_HEADER*) Hob)->HobType = HobType;\r
- ((EFI_HOB_GENERIC_HEADER*) Hob)->HobLength = HobLength;\r
- ((EFI_HOB_GENERIC_HEADER*) Hob)->Reserved = 0;\r
+ Hob = (VOID *)(UINTN)HandOffHob->EfiEndOfHobList;\r
+ ((EFI_HOB_GENERIC_HEADER *)Hob)->HobType = HobType;\r
+ ((EFI_HOB_GENERIC_HEADER *)Hob)->HobLength = HobLength;\r
+ ((EFI_HOB_GENERIC_HEADER *)Hob)->Reserved = 0;\r
\r
- HobEnd = (EFI_HOB_GENERIC_HEADER*) ((UINTN)Hob + HobLength);\r
- HandOffHob->EfiEndOfHobList = (EFI_PHYSICAL_ADDRESS) (UINTN) HobEnd;\r
+ HobEnd = (EFI_HOB_GENERIC_HEADER *)((UINTN)Hob + HobLength);\r
+ HandOffHob->EfiEndOfHobList = (EFI_PHYSICAL_ADDRESS)(UINTN)HobEnd;\r
\r
HobEnd->HobType = EFI_HOB_TYPE_END_OF_HOB_LIST;\r
HobEnd->HobLength = sizeof (EFI_HOB_GENERIC_HEADER);\r
HobEnd->Reserved = 0;\r
HobEnd++;\r
- HandOffHob->EfiFreeMemoryBottom = (EFI_PHYSICAL_ADDRESS) (UINTN) HobEnd;\r
+ HandOffHob->EfiFreeMemoryBottom = (EFI_PHYSICAL_ADDRESS)(UINTN)HobEnd;\r
\r
return Hob;\r
}\r
VOID\r
EFIAPI\r
BuildModuleHob (\r
- IN CONST EFI_GUID *ModuleName,\r
- IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule,\r
- IN UINT64 ModuleLength,\r
- IN EFI_PHYSICAL_ADDRESS EntryPoint\r
+ IN CONST EFI_GUID *ModuleName,\r
+ IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule,\r
+ IN UINT64 ModuleLength,\r
+ IN EFI_PHYSICAL_ADDRESS EntryPoint\r
)\r
{\r
EFI_HOB_MEMORY_ALLOCATION_MODULE *Hob;\r
\r
- ASSERT (((MemoryAllocationModule & (EFI_PAGE_SIZE - 1)) == 0) &&\r
- ((ModuleLength & (EFI_PAGE_SIZE - 1)) == 0));\r
+ ASSERT (\r
+ ((MemoryAllocationModule & (EFI_PAGE_SIZE - 1)) == 0) &&\r
+ ((ModuleLength & (EFI_PAGE_SIZE - 1)) == 0)\r
+ );\r
\r
Hob = CreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, sizeof (EFI_HOB_MEMORY_ALLOCATION_MODULE));\r
\r
VOID *\r
EFIAPI\r
BuildGuidHob (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN DataLength\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN DataLength\r
)\r
{\r
- EFI_HOB_GUID_TYPE *Hob;\r
+ EFI_HOB_GUID_TYPE *Hob;\r
\r
//\r
// Make sure that data length is not too long.\r
//\r
ASSERT (DataLength <= (0xffff - sizeof (EFI_HOB_GUID_TYPE)));\r
\r
- Hob = CreateHob (EFI_HOB_TYPE_GUID_EXTENSION, (UINT16) (sizeof (EFI_HOB_GUID_TYPE) + DataLength));\r
+ Hob = CreateHob (EFI_HOB_TYPE_GUID_EXTENSION, (UINT16)(sizeof (EFI_HOB_GUID_TYPE) + DataLength));\r
CopyGuid (&Hob->Name, Guid);\r
return Hob + 1;\r
}\r
\r
-\r
/**\r
Copies a data buffer to a newly-built HOB.\r
\r
VOID *\r
EFIAPI\r
BuildGuidDataHob (\r
- IN CONST EFI_GUID *Guid,\r
- IN VOID *Data,\r
- IN UINTN DataLength\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Data,\r
+ IN UINTN DataLength\r
)\r
{\r
VOID *HobData;\r
VOID\r
EFIAPI\r
BuildFvHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length\r
)\r
{\r
EFI_HOB_FIRMWARE_VOLUME *Hob;\r
Hob->Length = Length;\r
}\r
\r
-\r
/**\r
Builds a EFI_HOB_TYPE_FV2 HOB.\r
\r
VOID\r
EFIAPI\r
BuildFv2Hob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN CONST EFI_GUID *FvName,\r
- IN CONST EFI_GUID *FileName\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN CONST EFI_GUID *FvName,\r
+ IN CONST EFI_GUID *FileName\r
)\r
{\r
EFI_HOB_FIRMWARE_VOLUME2 *Hob;\r
CopyGuid (&Hob->FileName, FileName);\r
}\r
\r
-\r
/**\r
Builds a HOB for the CPU.\r
\r
VOID\r
EFIAPI\r
BuildCpuHob (\r
- IN UINT8 SizeOfMemorySpace,\r
- IN UINT8 SizeOfIoSpace\r
+ IN UINT8 SizeOfMemorySpace,\r
+ IN UINT8 SizeOfIoSpace\r
)\r
{\r
EFI_HOB_CPU *Hob;\r
VOID\r
EFIAPI\r
BuildMemoryAllocationHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN EFI_MEMORY_TYPE MemoryType\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN EFI_MEMORY_TYPE MemoryType\r
)\r
{\r
EFI_HOB_MEMORY_ALLOCATION *Hob;\r
\r
- ASSERT (((BaseAddress & (EFI_PAGE_SIZE - 1)) == 0) &&\r
- ((Length & (EFI_PAGE_SIZE - 1)) == 0));\r
+ ASSERT (\r
+ ((BaseAddress & (EFI_PAGE_SIZE - 1)) == 0) &&\r
+ ((Length & (EFI_PAGE_SIZE - 1)) == 0)\r
+ );\r
\r
Hob = CreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, sizeof (EFI_HOB_MEMORY_ALLOCATION));\r
\r
//\r
// Cache copy of HobList pointer.\r
//\r
-extern VOID *gHobList;\r
+extern VOID *gHobList;\r
\r
-EFI_HOB_HANDOFF_INFO_TABLE*\r
+EFI_HOB_HANDOFF_INFO_TABLE *\r
HobConstructor (\r
IN VOID *EfiMemoryBegin,\r
IN UINTN EfiMemoryLength,\r
Hob = EfiFreeMemoryBottom;\r
HobEnd = (EFI_HOB_GENERIC_HEADER *)(Hob+1);\r
\r
- Hob->Header.HobType = EFI_HOB_TYPE_HANDOFF;\r
- Hob->Header.HobLength = sizeof (EFI_HOB_HANDOFF_INFO_TABLE);\r
- Hob->Header.Reserved = 0;\r
+ Hob->Header.HobType = EFI_HOB_TYPE_HANDOFF;\r
+ Hob->Header.HobLength = sizeof (EFI_HOB_HANDOFF_INFO_TABLE);\r
+ Hob->Header.Reserved = 0;\r
\r
- HobEnd->HobType = EFI_HOB_TYPE_END_OF_HOB_LIST;\r
- HobEnd->HobLength = sizeof (EFI_HOB_GENERIC_HEADER);\r
- HobEnd->Reserved = 0;\r
+ HobEnd->HobType = EFI_HOB_TYPE_END_OF_HOB_LIST;\r
+ HobEnd->HobLength = sizeof (EFI_HOB_GENERIC_HEADER);\r
+ HobEnd->Reserved = 0;\r
\r
- Hob->Version = EFI_HOB_HANDOFF_TABLE_VERSION;\r
- Hob->BootMode = BOOT_WITH_FULL_CONFIGURATION;\r
+ Hob->Version = EFI_HOB_HANDOFF_TABLE_VERSION;\r
+ Hob->BootMode = BOOT_WITH_FULL_CONFIGURATION;\r
\r
Hob->EfiMemoryTop = (UINTN)EfiMemoryBegin + EfiMemoryLength;\r
Hob->EfiMemoryBottom = (UINTN)EfiMemoryBegin;\r
VOID *\r
EFIAPI\r
GetNextHob (\r
- IN UINT16 Type,\r
- IN CONST VOID *HobStart\r
+ IN UINT16 Type,\r
+ IN CONST VOID *HobStart\r
)\r
{\r
EFI_PEI_HOB_POINTERS Hob;\r
\r
ASSERT (HobStart != NULL);\r
\r
- Hob.Raw = (UINT8 *) HobStart;\r
+ Hob.Raw = (UINT8 *)HobStart;\r
//\r
// Parse the HOB list until end of list or matching type is found.\r
//\r
if (Hob.Header->HobType == Type) {\r
return Hob.Raw;\r
}\r
+\r
Hob.Raw = GET_NEXT_HOB (Hob);\r
}\r
+\r
return NULL;\r
}\r
\r
VOID *\r
EFIAPI\r
GetFirstHob (\r
- IN UINT16 Type\r
+ IN UINT16 Type\r
)\r
{\r
- VOID *HobList;\r
+ VOID *HobList;\r
\r
HobList = GetHobList ();\r
return GetNextHob (Type, HobList);\r
VOID *\r
EFIAPI\r
GetNextGuidHob (\r
- IN CONST EFI_GUID *Guid,\r
- IN CONST VOID *HobStart\r
+ IN CONST EFI_GUID *Guid,\r
+ IN CONST VOID *HobStart\r
)\r
{\r
EFI_PEI_HOB_POINTERS GuidHob;\r
\r
- GuidHob.Raw = (UINT8 *) HobStart;\r
+ GuidHob.Raw = (UINT8 *)HobStart;\r
while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {\r
if (CompareGuid (Guid, &GuidHob.Guid->Name)) {\r
break;\r
}\r
+\r
GuidHob.Raw = GET_NEXT_HOB (GuidHob);\r
}\r
+\r
return GuidHob.Raw;\r
}\r
\r
VOID *\r
EFIAPI\r
GetFirstGuidHob (\r
- IN CONST EFI_GUID *Guid\r
+ IN CONST EFI_GUID *Guid\r
)\r
{\r
- VOID *HobList;\r
+ VOID *HobList;\r
\r
HobList = GetHobList ();\r
return GetNextGuidHob (Guid, HobList);\r
VOID\r
)\r
{\r
- EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob;\r
+ EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob;\r
\r
- HandOffHob = (EFI_HOB_HANDOFF_INFO_TABLE *) GetHobList ();\r
+ HandOffHob = (EFI_HOB_HANDOFF_INFO_TABLE *)GetHobList ();\r
\r
return HandOffHob->BootMode;\r
}\r
\r
-\r
/**\r
Builds a HOB that describes a chunk of system memory with Owner GUID.\r
\r
VOID\r
EFIAPI\r
BuildCvHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length\r
)\r
{\r
ASSERT (FALSE);\r
}\r
\r
-\r
/**\r
Builds a HOB for the BSP store.\r
\r
VOID\r
EFIAPI\r
BuildBspStoreHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN EFI_MEMORY_TYPE MemoryType\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN EFI_MEMORY_TYPE MemoryType\r
)\r
{\r
ASSERT (FALSE);\r
VOID\r
EFIAPI\r
BuildStackHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length\r
)\r
{\r
ASSERT (FALSE);\r
VOID\r
EFIAPI\r
BuildModuleHob (\r
- IN CONST EFI_GUID *ModuleName,\r
- IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule,\r
- IN UINT64 ModuleLength,\r
- IN EFI_PHYSICAL_ADDRESS EntryPoint\r
+ IN CONST EFI_GUID *ModuleName,\r
+ IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule,\r
+ IN UINT64 ModuleLength,\r
+ IN EFI_PHYSICAL_ADDRESS EntryPoint\r
)\r
{\r
//\r
VOID *\r
EFIAPI\r
BuildGuidHob (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN DataLength\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN DataLength\r
)\r
{\r
//\r
VOID *\r
EFIAPI\r
BuildGuidDataHob (\r
- IN CONST EFI_GUID *Guid,\r
- IN VOID *Data,\r
- IN UINTN DataLength\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Data,\r
+ IN UINTN DataLength\r
)\r
{\r
//\r
VOID\r
EFIAPI\r
BuildFvHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length\r
)\r
{\r
//\r
VOID\r
EFIAPI\r
BuildFv2Hob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN CONST EFI_GUID *FvName,\r
- IN CONST EFI_GUID *FileName\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN CONST EFI_GUID *FvName,\r
+ IN CONST EFI_GUID *FileName\r
)\r
{\r
ASSERT (FALSE);\r
VOID\r
EFIAPI\r
BuildFv3Hob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN UINT32 AuthenticationStatus,\r
- IN BOOLEAN ExtractedFv,\r
- IN CONST EFI_GUID *FvName OPTIONAL,\r
- IN CONST EFI_GUID *FileName OPTIONAL\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN UINT32 AuthenticationStatus,\r
+ IN BOOLEAN ExtractedFv,\r
+ IN CONST EFI_GUID *FvName OPTIONAL,\r
+ IN CONST EFI_GUID *FileName OPTIONAL\r
)\r
{\r
ASSERT (FALSE);\r
VOID\r
EFIAPI\r
BuildCpuHob (\r
- IN UINT8 SizeOfMemorySpace,\r
- IN UINT8 SizeOfIoSpace\r
+ IN UINT8 SizeOfMemorySpace,\r
+ IN UINT8 SizeOfIoSpace\r
)\r
{\r
//\r
VOID\r
EFIAPI\r
BuildMemoryAllocationHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN EFI_MEMORY_TYPE MemoryType\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN EFI_MEMORY_TYPE MemoryType\r
)\r
{\r
//\r
#include <Library/HobLib.h>\r
#include "StandaloneMmCoreMemoryAllocationServices.h"\r
\r
-EFI_MM_SYSTEM_TABLE *gMmst = NULL;\r
+EFI_MM_SYSTEM_TABLE *gMmst = NULL;\r
\r
/**\r
Allocates one or more 4KB pages of a certain memory type.\r
if (EFI_ERROR (Status)) {\r
return NULL;\r
}\r
- return (VOID *) (UINTN) Memory;\r
+\r
+ return (VOID *)(UINTN)Memory;\r
}\r
\r
/**\r
EFI_STATUS Status;\r
\r
ASSERT (Pages != 0);\r
- Status = gMmst->MmFreePages ((EFI_PHYSICAL_ADDRESS) (UINTN) Buffer, Pages);\r
+ Status = gMmst->MmFreePages ((EFI_PHYSICAL_ADDRESS)(UINTN)Buffer, Pages);\r
ASSERT_EFI_ERROR (Status);\r
}\r
\r
if (Pages == 0) {\r
return NULL;\r
}\r
+\r
if (Alignment > EFI_PAGE_SIZE) {\r
//\r
// Calculate the total number of pages since alignment is larger than page size.\r
//\r
- AlignmentMask = Alignment - 1;\r
- RealPages = Pages + EFI_SIZE_TO_PAGES (Alignment);\r
+ AlignmentMask = Alignment - 1;\r
+ RealPages = Pages + EFI_SIZE_TO_PAGES (Alignment);\r
//\r
// Make sure that Pages plus EFI_SIZE_TO_PAGES (Alignment) does not overflow.\r
//\r
if (EFI_ERROR (Status)) {\r
return NULL;\r
}\r
- AlignedMemory = ((UINTN) Memory + AlignmentMask) & ~AlignmentMask;\r
- UnalignedPages = EFI_SIZE_TO_PAGES (AlignedMemory - (UINTN) Memory);\r
+\r
+ AlignedMemory = ((UINTN)Memory + AlignmentMask) & ~AlignmentMask;\r
+ UnalignedPages = EFI_SIZE_TO_PAGES (AlignedMemory - (UINTN)Memory);\r
if (UnalignedPages > 0) {\r
//\r
// Free first unaligned page(s).\r
Status = gMmst->MmFreePages (Memory, UnalignedPages);\r
ASSERT_EFI_ERROR (Status);\r
}\r
- Memory = (EFI_PHYSICAL_ADDRESS) (AlignedMemory + EFI_PAGES_TO_SIZE (Pages));\r
+\r
+ Memory = (EFI_PHYSICAL_ADDRESS)(AlignedMemory + EFI_PAGES_TO_SIZE (Pages));\r
UnalignedPages = RealPages - Pages - UnalignedPages;\r
if (UnalignedPages > 0) {\r
//\r
if (EFI_ERROR (Status)) {\r
return NULL;\r
}\r
- AlignedMemory = (UINTN) Memory;\r
+\r
+ AlignedMemory = (UINTN)Memory;\r
}\r
- return (VOID *) AlignedMemory;\r
+\r
+ return (VOID *)AlignedMemory;\r
}\r
\r
/**\r
EFI_STATUS Status;\r
\r
ASSERT (Pages != 0);\r
- Status = gMmst->MmFreePages ((EFI_PHYSICAL_ADDRESS) (UINTN) Buffer, Pages);\r
+ Status = gMmst->MmFreePages ((EFI_PHYSICAL_ADDRESS)(UINTN)Buffer, Pages);\r
ASSERT_EFI_ERROR (Status);\r
}\r
\r
if (EFI_ERROR (Status)) {\r
Memory = NULL;\r
}\r
+\r
return Memory;\r
}\r
\r
if (Memory != NULL) {\r
Memory = ZeroMem (Memory, AllocationSize);\r
}\r
+\r
return Memory;\r
}\r
\r
VOID *Memory;\r
\r
ASSERT (Buffer != NULL);\r
- ASSERT (AllocationSize <= (MAX_ADDRESS - (UINTN) Buffer + 1));\r
+ ASSERT (AllocationSize <= (MAX_ADDRESS - (UINTN)Buffer + 1));\r
\r
Memory = InternalAllocatePool (PoolType, AllocationSize);\r
if (Memory != NULL) {\r
Memory = CopyMem (Memory, Buffer, AllocationSize);\r
}\r
+\r
return Memory;\r
}\r
\r
VOID *NewBuffer;\r
\r
NewBuffer = InternalAllocateZeroPool (PoolType, NewSize);\r
- if (NewBuffer != NULL && OldBuffer != NULL) {\r
+ if ((NewBuffer != NULL) && (OldBuffer != NULL)) {\r
CopyMem (NewBuffer, OldBuffer, MIN (OldSize, NewSize));\r
FreePool (OldBuffer);\r
}\r
+\r
return NewBuffer;\r
}\r
\r
VOID\r
EFIAPI\r
FreePool (\r
- IN VOID *Buffer\r
+ IN VOID *Buffer\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
Status = gMmst->MmFreePool (Buffer);\r
ASSERT_EFI_ERROR (Status);\r
EFI_STATUS\r
EFIAPI\r
MemoryAllocationLibConstructor (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
)\r
{\r
- MM_CORE_PRIVATE_DATA *MmCorePrivate;\r
+ MM_CORE_PRIVATE_DATA *MmCorePrivate;\r
EFI_HOB_GUID_TYPE *GuidHob;\r
- MM_CORE_DATA_HOB_DATA *DataInHob;\r
+ MM_CORE_DATA_HOB_DATA *DataInHob;\r
VOID *HobStart;\r
EFI_MMRAM_HOB_DESCRIPTOR_BLOCK *MmramRangesHobData;\r
EFI_MMRAM_DESCRIPTOR *MmramRanges;\r
- UINTN MmramRangeCount;\r
+ UINTN MmramRangeCount;\r
EFI_HOB_GUID_TYPE *MmramRangesHob;\r
\r
HobStart = GetHobList ();\r
return EFI_UNSUPPORTED;\r
}\r
\r
- MmramRangeCount = (UINTN) MmramRangesHobData->NumberOfMmReservedRegions;\r
+ MmramRangeCount = (UINTN)MmramRangesHobData->NumberOfMmReservedRegions;\r
if (MmramRanges == NULL) {\r
return EFI_UNSUPPORTED;\r
}\r
-\r
} else {\r
- DataInHob = GET_GUID_HOB_DATA (GuidHob);\r
- MmCorePrivate = (MM_CORE_PRIVATE_DATA *)(UINTN)DataInHob->Address;\r
+ DataInHob = GET_GUID_HOB_DATA (GuidHob);\r
+ MmCorePrivate = (MM_CORE_PRIVATE_DATA *)(UINTN)DataInHob->Address;\r
MmramRanges = (EFI_MMRAM_DESCRIPTOR *)(UINTN)MmCorePrivate->MmramRanges;\r
- MmramRangeCount = (UINTN) MmCorePrivate->MmramRangeCount;\r
+ MmramRangeCount = (UINTN)MmCorePrivate->MmramRangeCount;\r
}\r
\r
{\r
- UINTN Index;\r
+ UINTN Index;\r
\r
DEBUG ((DEBUG_INFO, "MmramRangeCount - 0x%x\n", MmramRangeCount));\r
for (Index = 0; Index < MmramRangeCount; Index++) {\r
- DEBUG ((DEBUG_INFO, "MmramRanges[%d]: 0x%016lx - 0x%016lx\n",\r
- Index, MmramRanges[Index].CpuStart, MmramRanges[Index].PhysicalSize));\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "MmramRanges[%d]: 0x%016lx - 0x%016lx\n",\r
+ Index,\r
+ MmramRanges[Index].CpuStart,\r
+ MmramRanges[Index].PhysicalSize\r
+ ));\r
}\r
}\r
\r
//\r
// Cache copy of HobList pointer.\r
//\r
-STATIC VOID *gHobList = NULL;\r
+STATIC VOID *gHobList = NULL;\r
\r
/**\r
The constructor function caches the pointer to HOB list.\r
EFI_STATUS\r
EFIAPI\r
HobLibConstructor (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
)\r
{\r
- UINTN Index;\r
+ UINTN Index;\r
\r
for (Index = 0; Index < gMmst->NumberOfTableEntries; Index++) {\r
if (CompareGuid (&gEfiHobListGuid, &gMmst->MmConfigurationTable[Index].VendorGuid)) {\r
break;\r
}\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
VOID\r
)\r
{\r
- UINTN Index;\r
+ UINTN Index;\r
\r
if (gHobList == NULL) {\r
for (Index = 0; Index < gMmst->NumberOfTableEntries; Index++) {\r
}\r
}\r
}\r
+\r
ASSERT (gHobList != NULL);\r
return gHobList;\r
}\r
VOID *\r
EFIAPI\r
GetNextHob (\r
- IN UINT16 Type,\r
- IN CONST VOID *HobStart\r
+ IN UINT16 Type,\r
+ IN CONST VOID *HobStart\r
)\r
{\r
EFI_PEI_HOB_POINTERS Hob;\r
\r
ASSERT (HobStart != NULL);\r
\r
- Hob.Raw = (UINT8 *) HobStart;\r
+ Hob.Raw = (UINT8 *)HobStart;\r
//\r
// Parse the HOB list until end of list or matching type is found.\r
//\r
if (Hob.Header->HobType == Type) {\r
return Hob.Raw;\r
}\r
+\r
Hob.Raw = GET_NEXT_HOB (Hob);\r
}\r
+\r
return NULL;\r
}\r
\r
VOID *\r
EFIAPI\r
GetFirstHob (\r
- IN UINT16 Type\r
+ IN UINT16 Type\r
)\r
{\r
- VOID *HobList;\r
+ VOID *HobList;\r
\r
HobList = GetHobList ();\r
return GetNextHob (Type, HobList);\r
VOID *\r
EFIAPI\r
GetNextGuidHob (\r
- IN CONST EFI_GUID *Guid,\r
- IN CONST VOID *HobStart\r
+ IN CONST EFI_GUID *Guid,\r
+ IN CONST VOID *HobStart\r
)\r
{\r
EFI_PEI_HOB_POINTERS GuidHob;\r
\r
- GuidHob.Raw = (UINT8 *) HobStart;\r
+ GuidHob.Raw = (UINT8 *)HobStart;\r
while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {\r
if (CompareGuid (Guid, &GuidHob.Guid->Name)) {\r
break;\r
}\r
+\r
GuidHob.Raw = GET_NEXT_HOB (GuidHob);\r
}\r
+\r
return GuidHob.Raw;\r
}\r
\r
VOID *\r
EFIAPI\r
GetFirstGuidHob (\r
- IN CONST EFI_GUID *Guid\r
+ IN CONST EFI_GUID *Guid\r
)\r
{\r
- VOID *HobList;\r
+ VOID *HobList;\r
\r
HobList = GetHobList ();\r
return GetNextGuidHob (Guid, HobList);\r
VOID\r
)\r
{\r
- EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob;\r
+ EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob;\r
\r
- HandOffHob = (EFI_HOB_HANDOFF_INFO_TABLE *) GetHobList ();\r
+ HandOffHob = (EFI_HOB_HANDOFF_INFO_TABLE *)GetHobList ();\r
\r
- return HandOffHob->BootMode;\r
+ return HandOffHob->BootMode;\r
}\r
\r
VOID *\r
CreateHob (\r
- IN UINT16 HobType,\r
- IN UINT16 HobLength\r
+ IN UINT16 HobType,\r
+ IN UINT16 HobLength\r
)\r
{\r
EFI_HOB_HANDOFF_INFO_TABLE *HandOffHob;\r
FreeMemory = HandOffHob->EfiFreeMemoryTop - HandOffHob->EfiFreeMemoryBottom;\r
\r
if (FreeMemory < HobLength) {\r
- return NULL;\r
+ return NULL;\r
}\r
\r
- Hob = (VOID*) (UINTN) HandOffHob->EfiEndOfHobList;\r
- ((EFI_HOB_GENERIC_HEADER*) Hob)->HobType = HobType;\r
- ((EFI_HOB_GENERIC_HEADER*) Hob)->HobLength = HobLength;\r
- ((EFI_HOB_GENERIC_HEADER*) Hob)->Reserved = 0;\r
+ Hob = (VOID *)(UINTN)HandOffHob->EfiEndOfHobList;\r
+ ((EFI_HOB_GENERIC_HEADER *)Hob)->HobType = HobType;\r
+ ((EFI_HOB_GENERIC_HEADER *)Hob)->HobLength = HobLength;\r
+ ((EFI_HOB_GENERIC_HEADER *)Hob)->Reserved = 0;\r
\r
- HobEnd = (EFI_HOB_GENERIC_HEADER*) ((UINTN)Hob + HobLength);\r
- HandOffHob->EfiEndOfHobList = (EFI_PHYSICAL_ADDRESS) (UINTN) HobEnd;\r
+ HobEnd = (EFI_HOB_GENERIC_HEADER *)((UINTN)Hob + HobLength);\r
+ HandOffHob->EfiEndOfHobList = (EFI_PHYSICAL_ADDRESS)(UINTN)HobEnd;\r
\r
HobEnd->HobType = EFI_HOB_TYPE_END_OF_HOB_LIST;\r
- HobEnd->HobLength = sizeof(EFI_HOB_GENERIC_HEADER);\r
+ HobEnd->HobLength = sizeof (EFI_HOB_GENERIC_HEADER);\r
HobEnd->Reserved = 0;\r
HobEnd++;\r
- HandOffHob->EfiFreeMemoryBottom = (EFI_PHYSICAL_ADDRESS) (UINTN) HobEnd;\r
+ HandOffHob->EfiFreeMemoryBottom = (EFI_PHYSICAL_ADDRESS)(UINTN)HobEnd;\r
\r
return Hob;\r
}\r
VOID\r
EFIAPI\r
BuildModuleHob (\r
- IN CONST EFI_GUID *ModuleName,\r
- IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule,\r
- IN UINT64 ModuleLength,\r
- IN EFI_PHYSICAL_ADDRESS EntryPoint\r
+ IN CONST EFI_GUID *ModuleName,\r
+ IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule,\r
+ IN UINT64 ModuleLength,\r
+ IN EFI_PHYSICAL_ADDRESS EntryPoint\r
)\r
{\r
EFI_HOB_MEMORY_ALLOCATION_MODULE *Hob;\r
\r
- ASSERT (((MemoryAllocationModule & (EFI_PAGE_SIZE - 1)) == 0) &&\r
- ((ModuleLength & (EFI_PAGE_SIZE - 1)) == 0));\r
+ ASSERT (\r
+ ((MemoryAllocationModule & (EFI_PAGE_SIZE - 1)) == 0) &&\r
+ ((ModuleLength & (EFI_PAGE_SIZE - 1)) == 0)\r
+ );\r
\r
Hob = CreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, sizeof (EFI_HOB_MEMORY_ALLOCATION_MODULE));\r
\r
EFI_HOB_RESOURCE_DESCRIPTOR *Hob;\r
\r
Hob = CreateHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, sizeof (EFI_HOB_RESOURCE_DESCRIPTOR));\r
- ASSERT(Hob != NULL);\r
+ ASSERT (Hob != NULL);\r
\r
Hob->ResourceType = ResourceType;\r
Hob->ResourceAttribute = ResourceAttribute;\r
VOID *\r
EFIAPI\r
BuildGuidHob (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN DataLength\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN DataLength\r
)\r
{\r
- EFI_HOB_GUID_TYPE *Hob;\r
+ EFI_HOB_GUID_TYPE *Hob;\r
\r
//\r
// Make sure that data length is not too long.\r
//\r
ASSERT (DataLength <= (0xffff - sizeof (EFI_HOB_GUID_TYPE)));\r
\r
- Hob = CreateHob (EFI_HOB_TYPE_GUID_EXTENSION, (UINT16) (sizeof (EFI_HOB_GUID_TYPE) + DataLength));\r
+ Hob = CreateHob (EFI_HOB_TYPE_GUID_EXTENSION, (UINT16)(sizeof (EFI_HOB_GUID_TYPE) + DataLength));\r
CopyGuid (&Hob->Name, Guid);\r
return Hob + 1;\r
}\r
\r
-\r
/**\r
Copies a data buffer to a newly-built HOB.\r
\r
VOID *\r
EFIAPI\r
BuildGuidDataHob (\r
- IN CONST EFI_GUID *Guid,\r
- IN VOID *Data,\r
- IN UINTN DataLength\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Data,\r
+ IN UINTN DataLength\r
)\r
{\r
VOID *HobData;\r
VOID\r
EFIAPI\r
BuildFvHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length\r
)\r
{\r
EFI_HOB_FIRMWARE_VOLUME *Hob;\r
Hob->Length = Length;\r
}\r
\r
-\r
/**\r
Builds a EFI_HOB_TYPE_FV2 HOB.\r
\r
VOID\r
EFIAPI\r
BuildFv2Hob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN CONST EFI_GUID *FvName,\r
- IN CONST EFI_GUID *FileName\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN CONST EFI_GUID *FvName,\r
+ IN CONST EFI_GUID *FileName\r
)\r
{\r
EFI_HOB_FIRMWARE_VOLUME2 *Hob;\r
CopyGuid (&Hob->FileName, FileName);\r
}\r
\r
-\r
/**\r
Builds a HOB for the CPU.\r
\r
VOID\r
EFIAPI\r
BuildCpuHob (\r
- IN UINT8 SizeOfMemorySpace,\r
- IN UINT8 SizeOfIoSpace\r
+ IN UINT8 SizeOfMemorySpace,\r
+ IN UINT8 SizeOfIoSpace\r
)\r
{\r
EFI_HOB_CPU *Hob;\r
VOID\r
EFIAPI\r
BuildMemoryAllocationHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN EFI_MEMORY_TYPE MemoryType\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN EFI_MEMORY_TYPE MemoryType\r
)\r
{\r
EFI_HOB_MEMORY_ALLOCATION *Hob;\r
\r
- ASSERT (((BaseAddress & (EFI_PAGE_SIZE - 1)) == 0) &&\r
- ((Length & (EFI_PAGE_SIZE - 1)) == 0));\r
+ ASSERT (\r
+ ((BaseAddress & (EFI_PAGE_SIZE - 1)) == 0) &&\r
+ ((Length & (EFI_PAGE_SIZE - 1)) == 0)\r
+ );\r
\r
Hob = CreateHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, sizeof (EFI_HOB_MEMORY_ALLOCATION));\r
\r
VOID\r
EFIAPI\r
BuildCvHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length\r
)\r
{\r
ASSERT (FALSE);\r
}\r
\r
-\r
/**\r
Builds a HOB for the BSP store.\r
\r
VOID\r
EFIAPI\r
BuildBspStoreHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN EFI_MEMORY_TYPE MemoryType\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN EFI_MEMORY_TYPE MemoryType\r
)\r
{\r
ASSERT (FALSE);\r
VOID\r
EFIAPI\r
BuildStackHob (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length\r
)\r
{\r
ASSERT (FALSE);\r
extern EFI_PHYSICAL_ADDRESS mMmMemLibInternalMaximumSupportAddress;\r
\r
#ifdef MDE_CPU_AARCH64\r
-#define ARM_PHYSICAL_ADDRESS_BITS 36\r
+#define ARM_PHYSICAL_ADDRESS_BITS 36\r
#endif\r
#ifdef MDE_CPU_ARM\r
-#define ARM_PHYSICAL_ADDRESS_BITS 32\r
+#define ARM_PHYSICAL_ADDRESS_BITS 32\r
#endif\r
\r
/**\r
VOID\r
)\r
{\r
- UINT8 PhysicalAddressBits;\r
+ UINT8 PhysicalAddressBits;\r
\r
PhysicalAddressBits = ARM_PHYSICAL_ADDRESS_BITS;\r
\r
{\r
// Not implemented for AARCH64.\r
}\r
-\r
\r
**/\r
\r
-\r
#include <PiMm.h>\r
\r
#include <Library/BaseLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/DebugLib.h>\r
\r
-EFI_MMRAM_DESCRIPTOR *mMmMemLibInternalMmramRanges;\r
-UINTN mMmMemLibInternalMmramCount;\r
+EFI_MMRAM_DESCRIPTOR *mMmMemLibInternalMmramRanges;\r
+UINTN mMmMemLibInternalMmramCount;\r
\r
//\r
// Maximum support address used to check input buffer\r
//\r
if ((Length > mMmMemLibInternalMaximumSupportAddress) ||\r
(Buffer > mMmMemLibInternalMaximumSupportAddress) ||\r
- ((Length != 0) && (Buffer > (mMmMemLibInternalMaximumSupportAddress - (Length - 1)))) ) {\r
+ ((Length != 0) && (Buffer > (mMmMemLibInternalMaximumSupportAddress - (Length - 1)))))\r
+ {\r
//\r
// Overflow happen\r
//\r
return FALSE;\r
}\r
\r
- for (Index = 0; Index < mMmMemLibInternalMmramCount; Index ++) {\r
+ for (Index = 0; Index < mMmMemLibInternalMmramCount; Index++) {\r
if (((Buffer >= mMmMemLibInternalMmramRanges[Index].CpuStart) &&\r
(Buffer < mMmMemLibInternalMmramRanges[Index].CpuStart + mMmMemLibInternalMmramRanges[Index].PhysicalSize)) ||\r
((mMmMemLibInternalMmramRanges[Index].CpuStart >= Buffer) &&\r
- (mMmMemLibInternalMmramRanges[Index].CpuStart < Buffer + Length))) {\r
+ (mMmMemLibInternalMmramRanges[Index].CpuStart < Buffer + Length)))\r
+ {\r
DEBUG ((\r
DEBUG_ERROR,\r
"MmIsBufferOutsideMmValid: Overlap: Buffer (0x%lx) - Length (0x%lx), ",\r
DEBUG ((DEBUG_ERROR, "MmCopyMemToMmram: Security Violation: Source (0x%x), Length (0x%x)\n", SourceBuffer, Length));\r
return EFI_SECURITY_VIOLATION;\r
}\r
+\r
CopyMem (DestinationBuffer, SourceBuffer, Length);\r
return EFI_SUCCESS;\r
}\r
)\r
{\r
if (!MmIsBufferOutsideMmValid ((EFI_PHYSICAL_ADDRESS)(UINTN)DestinationBuffer, Length)) {\r
- DEBUG ((DEBUG_ERROR, "MmCopyMemFromMmram: Security Violation: Destination (0x%x), Length (0x%x)\n",\r
- DestinationBuffer, Length));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "MmCopyMemFromMmram: Security Violation: Destination (0x%x), Length (0x%x)\n",\r
+ DestinationBuffer,\r
+ Length\r
+ ));\r
return EFI_SECURITY_VIOLATION;\r
}\r
+\r
CopyMem (DestinationBuffer, SourceBuffer, Length);\r
return EFI_SUCCESS;\r
}\r
)\r
{\r
if (!MmIsBufferOutsideMmValid ((EFI_PHYSICAL_ADDRESS)(UINTN)DestinationBuffer, Length)) {\r
- DEBUG ((DEBUG_ERROR, "MmCopyMem: Security Violation: Destination (0x%x), Length (0x%x)\n",\r
- DestinationBuffer, Length));\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "MmCopyMem: Security Violation: Destination (0x%x), Length (0x%x)\n",\r
+ DestinationBuffer,\r
+ Length\r
+ ));\r
return EFI_SECURITY_VIOLATION;\r
}\r
+\r
if (!MmIsBufferOutsideMmValid ((EFI_PHYSICAL_ADDRESS)(UINTN)SourceBuffer, Length)) {\r
DEBUG ((DEBUG_ERROR, "MmCopyMem: Security Violation: Source (0x%x), Length (0x%x)\n", SourceBuffer, Length));\r
return EFI_SECURITY_VIOLATION;\r
}\r
+\r
CopyMem (DestinationBuffer, SourceBuffer, Length);\r
return EFI_SUCCESS;\r
}\r
DEBUG ((DEBUG_ERROR, "MmSetMem: Security Violation: Source (0x%x), Length (0x%x)\n", Buffer, Length));\r
return EFI_SECURITY_VIOLATION;\r
}\r
+\r
SetMem (Buffer, Length, Value);\r
return EFI_SUCCESS;\r
}\r
EFI_STATUS\r
EFIAPI\r
MemLibConstructor (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// Calculate and save maximum support address\r
EFI_STATUS\r
EFIAPI\r
MemLibDestructor (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable\r
)\r
{\r
-\r
//\r
// Deinitialize cached Mmram Ranges.\r
//\r
// Maximum support address used to check input buffer\r
//\r
extern EFI_PHYSICAL_ADDRESS mMmMemLibInternalMaximumSupportAddress;\r
-extern EFI_MMRAM_DESCRIPTOR *mMmMemLibInternalMmramRanges;\r
+extern EFI_MMRAM_DESCRIPTOR *mMmMemLibInternalMmramRanges;\r
extern UINTN mMmMemLibInternalMmramCount;\r
\r
/**\r
VOID\r
)\r
{\r
- VOID *Hob;\r
- UINT32 RegEax;\r
- UINT8 PhysicalAddressBits;\r
+ VOID *Hob;\r
+ UINT32 RegEax;\r
+ UINT8 PhysicalAddressBits;\r
\r
//\r
// Get physical address bits supported.\r
//\r
Hob = GetFirstHob (EFI_HOB_TYPE_CPU);\r
if (Hob != NULL) {\r
- PhysicalAddressBits = ((EFI_HOB_CPU *) Hob)->SizeOfMemorySpace;\r
+ PhysicalAddressBits = ((EFI_HOB_CPU *)Hob)->SizeOfMemorySpace;\r
} else {\r
AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
if (RegEax >= 0x80000008) {\r
AsmCpuid (0x80000008, &RegEax, NULL, NULL, NULL);\r
- PhysicalAddressBits = (UINT8) RegEax;\r
+ PhysicalAddressBits = (UINT8)RegEax;\r
} else {\r
PhysicalAddressBits = 36;\r
}\r
}\r
+\r
//\r
// IA-32e paging translates 48-bit linear addresses to 52-bit physical addresses.\r
//\r
}\r
\r
MmramRangesHobData = GET_GUID_HOB_DATA (MmramRangesHob);\r
- if (MmramRangesHobData == NULL || MmramRangesHobData->Descriptor == NULL) {\r
+ if ((MmramRangesHobData == NULL) || (MmramRangesHobData->Descriptor == NULL)) {\r
return EFI_UNSUPPORTED;\r
}\r
\r
mMmMemLibInternalMmramCount = MmramRangesHobData->NumberOfMmReservedRegions;\r
- MmramDescriptors = MmramRangesHobData->Descriptor;\r
+ MmramDescriptors = MmramRangesHobData->Descriptor;\r
} else {\r
DataInHob = GET_GUID_HOB_DATA (GuidHob);\r
if (DataInHob == NULL) {\r
return EFI_UNSUPPORTED;\r
}\r
\r
- MmCorePrivateData = (MM_CORE_PRIVATE_DATA *) (UINTN) DataInHob->Address;\r
- if (MmCorePrivateData == NULL || MmCorePrivateData->MmramRanges == 0) {\r
+ MmCorePrivateData = (MM_CORE_PRIVATE_DATA *)(UINTN)DataInHob->Address;\r
+ if ((MmCorePrivateData == NULL) || (MmCorePrivateData->MmramRanges == 0)) {\r
return EFI_UNSUPPORTED;\r
}\r
\r
- mMmMemLibInternalMmramCount = (UINTN) MmCorePrivateData->MmramRangeCount;\r
- MmramDescriptors = (EFI_MMRAM_DESCRIPTOR *) (UINTN) MmCorePrivateData->MmramRanges;\r
+ mMmMemLibInternalMmramCount = (UINTN)MmCorePrivateData->MmramRangeCount;\r
+ MmramDescriptors = (EFI_MMRAM_DESCRIPTOR *)(UINTN)MmCorePrivateData->MmramRanges;\r
}\r
\r
mMmMemLibInternalMmramRanges = AllocatePool (mMmMemLibInternalMmramCount * sizeof (EFI_MMRAM_DESCRIPTOR));\r
if (mMmMemLibInternalMmramRanges) {\r
- CopyMem (mMmMemLibInternalMmramRanges,\r
- MmramDescriptors,\r
- mMmMemLibInternalMmramCount * sizeof (EFI_MMRAM_DESCRIPTOR));\r
+ CopyMem (\r
+ mMmMemLibInternalMmramRanges,\r
+ MmramDescriptors,\r
+ mMmMemLibInternalMmramCount * sizeof (EFI_MMRAM_DESCRIPTOR)\r
+ );\r
}\r
\r
return EFI_SUCCESS;\r
FreePool (mMmMemLibInternalMmramRanges);\r
}\r
}\r
-\r
if (EFI_ERROR (Status)) {\r
return NULL;\r
}\r
+\r
return (VOID *)(UINTN)Memory;\r
}\r
\r
EFI_STATUS Status;\r
\r
ASSERT (Pages != 0);\r
- Status = gMmst->MmFreePages ((EFI_PHYSICAL_ADDRESS) (UINTN)Buffer, Pages);\r
+ Status = gMmst->MmFreePages ((EFI_PHYSICAL_ADDRESS)(UINTN)Buffer, Pages);\r
ASSERT_EFI_ERROR (Status);\r
}\r
\r
if (Pages == 0) {\r
return NULL;\r
}\r
+\r
if (Alignment > EFI_PAGE_SIZE) {\r
//\r
// Calculate the total number of pages since alignment is larger than page size.\r
//\r
- AlignmentMask = Alignment - 1;\r
- RealPages = Pages + EFI_SIZE_TO_PAGES (Alignment);\r
+ AlignmentMask = Alignment - 1;\r
+ RealPages = Pages + EFI_SIZE_TO_PAGES (Alignment);\r
//\r
// Make sure that Pages plus EFI_SIZE_TO_PAGES (Alignment) does not overflow.\r
//\r
ASSERT (RealPages > Pages);\r
\r
- Status = gMmst->MmAllocatePages (AllocateAnyPages, MemoryType, RealPages, &Memory);\r
+ Status = gMmst->MmAllocatePages (AllocateAnyPages, MemoryType, RealPages, &Memory);\r
if (EFI_ERROR (Status)) {\r
return NULL;\r
}\r
+\r
AlignedMemory = ((UINTN)Memory + AlignmentMask) & ~AlignmentMask;\r
- UnalignedPages = EFI_SIZE_TO_PAGES (AlignedMemory - (UINTN) Memory);\r
+ UnalignedPages = EFI_SIZE_TO_PAGES (AlignedMemory - (UINTN)Memory);\r
if (UnalignedPages > 0) {\r
//\r
// Free first unaligned page(s).\r
Status = gMmst->MmFreePages (Memory, UnalignedPages);\r
ASSERT_EFI_ERROR (Status);\r
}\r
+\r
Memory = (EFI_PHYSICAL_ADDRESS)(AlignedMemory + EFI_PAGES_TO_SIZE (Pages));\r
UnalignedPages = RealPages - Pages - UnalignedPages;\r
if (UnalignedPages > 0) {\r
if (EFI_ERROR (Status)) {\r
return NULL;\r
}\r
- AlignedMemory = (UINTN) Memory;\r
+\r
+ AlignedMemory = (UINTN)Memory;\r
}\r
- return (VOID *) AlignedMemory;\r
+\r
+ return (VOID *)AlignedMemory;\r
}\r
\r
/**\r
if (EFI_ERROR (Status)) {\r
Memory = NULL;\r
}\r
+\r
return Memory;\r
}\r
\r
if (Memory != NULL) {\r
Memory = ZeroMem (Memory, AllocationSize);\r
}\r
+\r
return Memory;\r
}\r
\r
VOID *Memory;\r
\r
ASSERT (Buffer != NULL);\r
- ASSERT (AllocationSize <= (MAX_ADDRESS - (UINTN) Buffer + 1));\r
+ ASSERT (AllocationSize <= (MAX_ADDRESS - (UINTN)Buffer + 1));\r
\r
Memory = InternalAllocatePool (PoolType, AllocationSize);\r
if (Memory != NULL) {\r
- Memory = CopyMem (Memory, Buffer, AllocationSize);\r
+ Memory = CopyMem (Memory, Buffer, AllocationSize);\r
}\r
+\r
return Memory;\r
}\r
\r
VOID *NewBuffer;\r
\r
NewBuffer = InternalAllocateZeroPool (PoolType, NewSize);\r
- if (NewBuffer != NULL && OldBuffer != NULL) {\r
+ if ((NewBuffer != NULL) && (OldBuffer != NULL)) {\r
CopyMem (NewBuffer, OldBuffer, MIN (OldSize, NewSize));\r
FreePool (OldBuffer);\r
}\r
+\r
return NewBuffer;\r
}\r
\r
VOID\r
EFIAPI\r
FreePool (\r
- IN VOID *Buffer\r
+ IN VOID *Buffer\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
Status = gMmst->MmFreePool (Buffer);\r
ASSERT_EFI_ERROR (Status);\r
#include <Library/PeCoffExtraActionLib.h>\r
\r
typedef RETURN_STATUS (*REGION_PERMISSION_UPDATE_FUNC) (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length\r
);\r
\r
STATIC\r
RETURN_STATUS\r
UpdatePeCoffPermissions (\r
- IN CONST PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
- IN REGION_PERMISSION_UPDATE_FUNC NoExecUpdater,\r
- IN REGION_PERMISSION_UPDATE_FUNC ReadOnlyUpdater\r
+ IN CONST PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext,\r
+ IN REGION_PERMISSION_UPDATE_FUNC NoExecUpdater,\r
+ IN REGION_PERMISSION_UPDATE_FUNC ReadOnlyUpdater\r
)\r
{\r
- RETURN_STATUS Status;\r
- EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr;\r
- EFI_IMAGE_OPTIONAL_HEADER_UNION HdrData;\r
- UINTN Size;\r
- UINTN ReadSize;\r
- UINT32 SectionHeaderOffset;\r
- UINTN NumberOfSections;\r
- UINTN Index;\r
- EFI_IMAGE_SECTION_HEADER SectionHeader;\r
- PE_COFF_LOADER_IMAGE_CONTEXT TmpContext;\r
- EFI_PHYSICAL_ADDRESS Base;\r
+ RETURN_STATUS Status;\r
+ EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr;\r
+ EFI_IMAGE_OPTIONAL_HEADER_UNION HdrData;\r
+ UINTN Size;\r
+ UINTN ReadSize;\r
+ UINT32 SectionHeaderOffset;\r
+ UINTN NumberOfSections;\r
+ UINTN Index;\r
+ EFI_IMAGE_SECTION_HEADER SectionHeader;\r
+ PE_COFF_LOADER_IMAGE_CONTEXT TmpContext;\r
+ EFI_PHYSICAL_ADDRESS Base;\r
\r
//\r
// We need to copy ImageContext since PeCoffLoaderGetImageInfo ()\r
if (TmpContext.PeCoffHeaderOffset == 0) {\r
Status = PeCoffLoaderGetImageInfo (&TmpContext);\r
if (RETURN_ERROR (Status)) {\r
- DEBUG ((DEBUG_ERROR,\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
"%a: PeCoffLoaderGetImageInfo () failed (Status = %r)\n",\r
- __FUNCTION__, Status));\r
+ __FUNCTION__,\r
+ Status\r
+ ));\r
return Status;\r
}\r
}\r
\r
if (TmpContext.IsTeImage &&\r
- TmpContext.ImageAddress == ImageContext->ImageAddress) {\r
- DEBUG ((DEBUG_INFO, "%a: ignoring XIP TE image at 0x%lx\n", __FUNCTION__,\r
- ImageContext->ImageAddress));\r
+ (TmpContext.ImageAddress == ImageContext->ImageAddress))\r
+ {\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: ignoring XIP TE image at 0x%lx\n",\r
+ __FUNCTION__,\r
+ ImageContext->ImageAddress\r
+ ));\r
return RETURN_SUCCESS;\r
}\r
\r
// noexec permissions on the entire region.\r
//\r
if (!TmpContext.IsTeImage) {\r
- DEBUG ((DEBUG_WARN,\r
+ DEBUG ((\r
+ DEBUG_WARN,\r
"%a: non-TE Image at 0x%lx has SectionAlignment < 4 KB (%lu)\n",\r
- __FUNCTION__, ImageContext->ImageAddress, TmpContext.SectionAlignment));\r
+ __FUNCTION__,\r
+ ImageContext->ImageAddress,\r
+ TmpContext.SectionAlignment\r
+ ));\r
}\r
+\r
Base = ImageContext->ImageAddress & ~(EFI_PAGE_SIZE - 1);\r
Size = ImageContext->ImageAddress - Base + ImageContext->ImageSize;\r
return NoExecUpdater (Base, ALIGN_VALUE (Size, EFI_PAGE_SIZE));\r
// location in both images.\r
//\r
Hdr.Union = &HdrData;\r
- Size = sizeof (EFI_IMAGE_OPTIONAL_HEADER_UNION);\r
- ReadSize = Size;\r
- Status = TmpContext.ImageRead (TmpContext.Handle,\r
- TmpContext.PeCoffHeaderOffset, &Size, Hdr.Pe32);\r
+ Size = sizeof (EFI_IMAGE_OPTIONAL_HEADER_UNION);\r
+ ReadSize = Size;\r
+ Status = TmpContext.ImageRead (\r
+ TmpContext.Handle,\r
+ TmpContext.PeCoffHeaderOffset,\r
+ &Size,\r
+ Hdr.Pe32\r
+ );\r
if (RETURN_ERROR (Status) || (Size != ReadSize)) {\r
- DEBUG ((DEBUG_ERROR,\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
"%a: TmpContext.ImageRead () failed (Status = %r)\n",\r
- __FUNCTION__, Status));\r
+ __FUNCTION__,\r
+ Status\r
+ ));\r
return Status;\r
}\r
\r
\r
SectionHeaderOffset = TmpContext.PeCoffHeaderOffset + sizeof (UINT32) +\r
sizeof (EFI_IMAGE_FILE_HEADER);\r
- NumberOfSections = (UINTN)(Hdr.Pe32->FileHeader.NumberOfSections);\r
+ NumberOfSections = (UINTN)(Hdr.Pe32->FileHeader.NumberOfSections);\r
\r
switch (Hdr.Pe32->OptionalHeader.Magic) {\r
case EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC:\r
//\r
// Read section header from file\r
//\r
- Size = sizeof (EFI_IMAGE_SECTION_HEADER);\r
+ Size = sizeof (EFI_IMAGE_SECTION_HEADER);\r
ReadSize = Size;\r
- Status = TmpContext.ImageRead (TmpContext.Handle, SectionHeaderOffset,\r
- &Size, &SectionHeader);\r
+ Status = TmpContext.ImageRead (\r
+ TmpContext.Handle,\r
+ SectionHeaderOffset,\r
+ &Size,\r
+ &SectionHeader\r
+ );\r
if (RETURN_ERROR (Status) || (Size != ReadSize)) {\r
- DEBUG ((DEBUG_ERROR,\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
"%a: TmpContext.ImageRead () failed (Status = %r)\n",\r
- __FUNCTION__, Status));\r
+ __FUNCTION__,\r
+ Status\r
+ ));\r
return Status;\r
}\r
\r
Base = TmpContext.ImageAddress + SectionHeader.VirtualAddress;\r
\r
if ((SectionHeader.Characteristics & EFI_IMAGE_SCN_MEM_EXECUTE) == 0) {\r
-\r
if ((SectionHeader.Characteristics & EFI_IMAGE_SCN_MEM_WRITE) == 0) {\r
-\r
- DEBUG ((DEBUG_INFO,\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
"%a: Mapping section %d of image at 0x%lx with RO-XN permissions and size 0x%x\n",\r
- __FUNCTION__, Index, Base, SectionHeader.Misc.VirtualSize));\r
+ __FUNCTION__,\r
+ Index,\r
+ Base,\r
+ SectionHeader.Misc.VirtualSize\r
+ ));\r
ReadOnlyUpdater (Base, SectionHeader.Misc.VirtualSize);\r
} else {\r
- DEBUG ((DEBUG_WARN,\r
+ DEBUG ((\r
+ DEBUG_WARN,\r
"%a: Mapping section %d of image at 0x%lx with RW-XN permissions and size 0x%x\n",\r
- __FUNCTION__, Index, Base, SectionHeader.Misc.VirtualSize));\r
+ __FUNCTION__,\r
+ Index,\r
+ Base,\r
+ SectionHeader.Misc.VirtualSize\r
+ ));\r
}\r
} else {\r
- DEBUG ((DEBUG_INFO,\r
- "%a: Mapping section %d of image at 0x%lx with RO-X permissions and size 0x%x\n",\r
- __FUNCTION__, Index, Base, SectionHeader.Misc.VirtualSize));\r
- ReadOnlyUpdater (Base, SectionHeader.Misc.VirtualSize);\r
- NoExecUpdater (Base, SectionHeader.Misc.VirtualSize);\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: Mapping section %d of image at 0x%lx with RO-X permissions and size 0x%x\n",\r
+ __FUNCTION__,\r
+ Index,\r
+ Base,\r
+ SectionHeader.Misc.VirtualSize\r
+ ));\r
+ ReadOnlyUpdater (Base, SectionHeader.Misc.VirtualSize);\r
+ NoExecUpdater (Base, SectionHeader.Misc.VirtualSize);\r
}\r
\r
SectionHeaderOffset += sizeof (EFI_IMAGE_SECTION_HEADER);\r
}\r
+\r
return RETURN_SUCCESS;\r
}\r
\r
);\r
}\r
\r
-\r
-\r
/**\r
Performs additional actions just before a PE/COFF image is unloaded. Any resources\r
that were allocated by PeCoffLoaderRelocateImageExtraAction() must be freed.\r
EFI_STATUS\r
EFIAPI\r
VariableMmDependencyLibConstructor (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_HANDLE Handle;\r
+ EFI_STATUS Status;\r
+ EFI_HANDLE Handle;\r
\r
Handle = NULL;\r
Status = gBS->InstallMultipleProtocolInterfaces (\r