X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=IntelFsp2WrapperPkg%2FLibrary%2FPeiFspWrapperHobProcessLibSample%2FFspWrapperHobProcessLibSample.c;fp=IntelFsp2WrapperPkg%2FLibrary%2FPeiFspWrapperHobProcessLibSample%2FFspWrapperHobProcessLibSample.c;h=84360ac6e3a95f66cad570db3ecf7767c9e4350e;hp=48f4b0295a30d1830ac4aa69e0f2efe009d27cbf;hb=7c7184e201a90a1d2376e615e55e3f4074731468;hpb=111f2228ddf487b0ac3491e416bb3dcdcfa4f979 diff --git a/IntelFsp2WrapperPkg/Library/PeiFspWrapperHobProcessLibSample/FspWrapperHobProcessLibSample.c b/IntelFsp2WrapperPkg/Library/PeiFspWrapperHobProcessLibSample/FspWrapperHobProcessLibSample.c index 48f4b0295a..84360ac6e3 100644 --- a/IntelFsp2WrapperPkg/Library/PeiFspWrapperHobProcessLibSample/FspWrapperHobProcessLibSample.c +++ b/IntelFsp2WrapperPkg/Library/PeiFspWrapperHobProcessLibSample/FspWrapperHobProcessLibSample.c @@ -26,7 +26,7 @@ // Additional pages are used by DXE memory manager. // It should be consistent between RetrieveRequiredMemorySize() and GetPeiMemSize() // -#define PEI_ADDITIONAL_MEMORY_SIZE (16 * EFI_PAGE_SIZE) +#define PEI_ADDITIONAL_MEMORY_SIZE (16 * EFI_PAGE_SIZE) /** Get the mem size in memory type information table. @@ -37,22 +37,23 @@ **/ UINT64 GetMemorySizeInMemoryTypeInformation ( - IN EFI_PEI_SERVICES **PeiServices + IN EFI_PEI_SERVICES **PeiServices ) { - EFI_STATUS Status; - EFI_PEI_HOB_POINTERS Hob; - EFI_MEMORY_TYPE_INFORMATION *MemoryData; - UINT8 Index; - UINTN TempPageNum; + EFI_STATUS Status; + EFI_PEI_HOB_POINTERS Hob; + EFI_MEMORY_TYPE_INFORMATION *MemoryData; + UINT8 Index; + UINTN TempPageNum; MemoryData = NULL; - Status = (*PeiServices)->GetHobList ((CONST EFI_PEI_SERVICES**)PeiServices, (VOID **) &Hob.Raw); + Status = (*PeiServices)->GetHobList ((CONST EFI_PEI_SERVICES **)PeiServices, (VOID **)&Hob.Raw); ASSERT_EFI_ERROR (Status); while (!END_OF_HOB_LIST (Hob)) { - if (Hob.Header->HobType == EFI_HOB_TYPE_GUID_EXTENSION && - CompareGuid (&Hob.Guid->Name, &gEfiMemoryTypeInformationGuid)) { - MemoryData = (EFI_MEMORY_TYPE_INFORMATION *) (Hob.Raw + sizeof (EFI_HOB_GENERIC_HEADER) + sizeof (EFI_GUID)); + if ((Hob.Header->HobType == EFI_HOB_TYPE_GUID_EXTENSION) && + CompareGuid (&Hob.Guid->Name, &gEfiMemoryTypeInformationGuid)) + { + MemoryData = (EFI_MEMORY_TYPE_INFORMATION *)(Hob.Raw + sizeof (EFI_HOB_GENERIC_HEADER) + sizeof (EFI_GUID)); break; } @@ -83,10 +84,10 @@ GetMemorySizeInMemoryTypeInformation ( **/ UINT64 RetrieveRequiredMemorySize ( - IN EFI_PEI_SERVICES **PeiServices + IN EFI_PEI_SERVICES **PeiServices ) { - UINT64 Size; + UINT64 Size; Size = GetMemorySizeInMemoryTypeInformation (PeiServices); return Size + PEI_ADDITIONAL_MEMORY_SIZE; @@ -102,12 +103,12 @@ RetrieveRequiredMemorySize ( **/ UINT64 GetPeiMemSize ( - IN EFI_PEI_SERVICES **PeiServices, - IN UINT32 BootMode + IN EFI_PEI_SERVICES **PeiServices, + IN UINT32 BootMode ) { - UINT64 Size; - UINT64 MinSize; + UINT64 Size; + UINT64 MinSize; if (BootMode == BOOT_IN_RECOVERY_MODE) { return PcdGet32 (PcdPeiRecoveryMinMemSize); @@ -137,34 +138,34 @@ GetPeiMemSize ( EFI_STATUS EFIAPI PostFspmHobProcess ( - IN VOID *FspHobList + IN VOID *FspHobList ) { - EFI_PEI_HOB_POINTERS Hob; - UINT64 LowMemorySize; - UINT64 FspMemorySize; - EFI_PHYSICAL_ADDRESS FspMemoryBase; - UINT64 PeiMemSize; - EFI_PHYSICAL_ADDRESS PeiMemBase; - UINT64 S3PeiMemSize; - EFI_PHYSICAL_ADDRESS S3PeiMemBase; - BOOLEAN FoundFspMemHob; - EFI_STATUS Status; - EFI_BOOT_MODE BootMode; - EFI_PEI_CAPSULE_PPI *Capsule; - VOID *CapsuleBuffer; - UINTN CapsuleBufferLength; - UINT64 RequiredMemSize; - EFI_PEI_SERVICES **PeiServices; + EFI_PEI_HOB_POINTERS Hob; + UINT64 LowMemorySize; + UINT64 FspMemorySize; + EFI_PHYSICAL_ADDRESS FspMemoryBase; + UINT64 PeiMemSize; + EFI_PHYSICAL_ADDRESS PeiMemBase; + UINT64 S3PeiMemSize; + EFI_PHYSICAL_ADDRESS S3PeiMemBase; + BOOLEAN FoundFspMemHob; + EFI_STATUS Status; + EFI_BOOT_MODE BootMode; + EFI_PEI_CAPSULE_PPI *Capsule; + VOID *CapsuleBuffer; + UINTN CapsuleBufferLength; + UINT64 RequiredMemSize; + EFI_PEI_SERVICES **PeiServices; PeiServices = (EFI_PEI_SERVICES **)GetPeiServicesTablePointer (); PeiServicesGetBootMode (&BootMode); - PeiMemBase = 0; - LowMemorySize = 0; - FspMemorySize = 0; - FspMemoryBase = 0; + PeiMemBase = 0; + LowMemorySize = 0; + FspMemorySize = 0; + FspMemoryBase = 0; FoundFspMemHob = FALSE; // @@ -172,34 +173,37 @@ PostFspmHobProcess ( // Report all the resource hob except the memory between 1M and 4G // Hob.Raw = (UINT8 *)(UINTN)FspHobList; - DEBUG((DEBUG_INFO, "FspHobList - 0x%x\n", FspHobList)); + DEBUG ((DEBUG_INFO, "FspHobList - 0x%x\n", FspHobList)); while ((Hob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, Hob.Raw)) != NULL) { - DEBUG((DEBUG_INFO, "\nResourceType: 0x%x\n", Hob.ResourceDescriptor->ResourceType)); + DEBUG ((DEBUG_INFO, "\nResourceType: 0x%x\n", Hob.ResourceDescriptor->ResourceType)); if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) || - (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED)) { - DEBUG((DEBUG_INFO, "ResourceAttribute: 0x%x\n", Hob.ResourceDescriptor->ResourceAttribute)); - DEBUG((DEBUG_INFO, "PhysicalStart: 0x%x\n", Hob.ResourceDescriptor->PhysicalStart)); - DEBUG((DEBUG_INFO, "ResourceLength: 0x%x\n", Hob.ResourceDescriptor->ResourceLength)); - DEBUG((DEBUG_INFO, "Owner: %g\n\n", &Hob.ResourceDescriptor->Owner)); + (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED)) + { + DEBUG ((DEBUG_INFO, "ResourceAttribute: 0x%x\n", Hob.ResourceDescriptor->ResourceAttribute)); + DEBUG ((DEBUG_INFO, "PhysicalStart: 0x%x\n", Hob.ResourceDescriptor->PhysicalStart)); + DEBUG ((DEBUG_INFO, "ResourceLength: 0x%x\n", Hob.ResourceDescriptor->ResourceLength)); + DEBUG ((DEBUG_INFO, "Owner: %g\n\n", &Hob.ResourceDescriptor->Owner)); } - if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) // Found the low memory length below 4G - && (Hob.ResourceDescriptor->PhysicalStart >= BASE_1MB) - && (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= BASE_4GB)) { - LowMemorySize += Hob.ResourceDescriptor->ResourceLength; - Hob.Raw = GET_NEXT_HOB (Hob); + if ( (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) // Found the low memory length below 4G + && (Hob.ResourceDescriptor->PhysicalStart >= BASE_1MB) + && (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= BASE_4GB)) + { + LowMemorySize += Hob.ResourceDescriptor->ResourceLength; + Hob.Raw = GET_NEXT_HOB (Hob); continue; } - if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED) // Found the low memory length below 4G - && (Hob.ResourceDescriptor->PhysicalStart >= BASE_1MB) - && (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= BASE_4GB) - && (CompareGuid (&Hob.ResourceDescriptor->Owner, &gFspReservedMemoryResourceHobGuid))) { + if ( (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED) // Found the low memory length below 4G + && (Hob.ResourceDescriptor->PhysicalStart >= BASE_1MB) + && (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= BASE_4GB) + && (CompareGuid (&Hob.ResourceDescriptor->Owner, &gFspReservedMemoryResourceHobGuid))) + { FoundFspMemHob = TRUE; - FspMemoryBase = Hob.ResourceDescriptor->PhysicalStart; - FspMemorySize = Hob.ResourceDescriptor->ResourceLength; - DEBUG((DEBUG_INFO, "Find fsp mem hob, base 0x%x, len 0x%x\n", FspMemoryBase, FspMemorySize)); + FspMemoryBase = Hob.ResourceDescriptor->PhysicalStart; + FspMemorySize = Hob.ResourceDescriptor->ResourceLength; + DEBUG ((DEBUG_INFO, "Find fsp mem hob, base 0x%x, len 0x%x\n", FspMemoryBase, FspMemorySize)); } // @@ -216,25 +220,25 @@ PostFspmHobProcess ( } if (!FoundFspMemHob) { - DEBUG((DEBUG_INFO, "Didn't find the fsp used memory information.\n")); - //ASSERT(FALSE); + DEBUG ((DEBUG_INFO, "Didn't find the fsp used memory information.\n")); + // ASSERT(FALSE); } - DEBUG((DEBUG_INFO, "LowMemorySize: 0x%x.\n", LowMemorySize)); - DEBUG((DEBUG_INFO, "FspMemoryBase: 0x%x.\n", FspMemoryBase)); - DEBUG((DEBUG_INFO, "FspMemorySize: 0x%x.\n", FspMemorySize)); + DEBUG ((DEBUG_INFO, "LowMemorySize: 0x%x.\n", LowMemorySize)); + DEBUG ((DEBUG_INFO, "FspMemoryBase: 0x%x.\n", FspMemoryBase)); + DEBUG ((DEBUG_INFO, "FspMemorySize: 0x%x.\n", FspMemorySize)); if (BootMode == BOOT_ON_S3_RESUME) { BuildResourceDescriptorHob ( EFI_RESOURCE_SYSTEM_MEMORY, ( - EFI_RESOURCE_ATTRIBUTE_PRESENT | - EFI_RESOURCE_ATTRIBUTE_INITIALIZED | - // EFI_RESOURCE_ATTRIBUTE_TESTED | - EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE + EFI_RESOURCE_ATTRIBUTE_PRESENT | + EFI_RESOURCE_ATTRIBUTE_INITIALIZED | + // EFI_RESOURCE_ATTRIBUTE_TESTED | + EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE ), BASE_1MB, LowMemorySize @@ -242,9 +246,9 @@ PostFspmHobProcess ( S3PeiMemBase = 0; S3PeiMemSize = 0; - Status = GetS3MemoryInfo (&S3PeiMemSize, &S3PeiMemBase); + Status = GetS3MemoryInfo (&S3PeiMemSize, &S3PeiMemBase); ASSERT_EFI_ERROR (Status); - DEBUG((DEBUG_INFO, "S3 memory %Xh - %Xh bytes\n", S3PeiMemBase, S3PeiMemSize)); + DEBUG ((DEBUG_INFO, "S3 memory %Xh - %Xh bytes\n", S3PeiMemBase, S3PeiMemSize)); // // Make sure Stack and PeiMemory are not overlap @@ -257,20 +261,20 @@ PostFspmHobProcess ( ASSERT_EFI_ERROR (Status); } else { PeiMemSize = GetPeiMemSize (PeiServices, BootMode); - DEBUG((DEBUG_INFO, "PEI memory size = %Xh bytes\n", PeiMemSize)); + DEBUG ((DEBUG_INFO, "PEI memory size = %Xh bytes\n", PeiMemSize)); // // Capsule mode // - Capsule = NULL; - CapsuleBuffer = NULL; + Capsule = NULL; + CapsuleBuffer = NULL; CapsuleBufferLength = 0; if (BootMode == BOOT_ON_FLASH_UPDATE) { Status = PeiServicesLocatePpi ( &gEfiPeiCapsulePpiGuid, 0, NULL, - (VOID **) &Capsule + (VOID **)&Capsule ); ASSERT_EFI_ERROR (Status); @@ -278,7 +282,7 @@ PostFspmHobProcess ( // // Make sure Stack and CapsuleBuffer are not overlap // - CapsuleBuffer = (VOID *)(UINTN)BASE_1MB; + CapsuleBuffer = (VOID *)(UINTN)BASE_1MB; CapsuleBufferLength = (UINTN)(LowMemorySize - PeiMemSize); // // Call the Capsule PPI Coalesce function to coalesce the capsule data. @@ -288,7 +292,7 @@ PostFspmHobProcess ( } RequiredMemSize = RetrieveRequiredMemorySize (PeiServices); - DEBUG((DEBUG_INFO, "Required memory size = %Xh bytes\n", RequiredMemSize)); + DEBUG ((DEBUG_INFO, "Required memory size = %Xh bytes\n", RequiredMemSize)); // // Report the main memory @@ -296,13 +300,13 @@ PostFspmHobProcess ( BuildResourceDescriptorHob ( EFI_RESOURCE_SYSTEM_MEMORY, ( - EFI_RESOURCE_ATTRIBUTE_PRESENT | - EFI_RESOURCE_ATTRIBUTE_INITIALIZED | - EFI_RESOURCE_ATTRIBUTE_TESTED | - EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | - EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE + EFI_RESOURCE_ATTRIBUTE_PRESENT | + EFI_RESOURCE_ATTRIBUTE_INITIALIZED | + EFI_RESOURCE_ATTRIBUTE_TESTED | + EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | + EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE ), BASE_1MB, LowMemorySize @@ -316,10 +320,10 @@ PostFspmHobProcess ( // Install efi memory // PeiMemBase = BASE_1MB + LowMemorySize - PeiMemSize; - Status = PeiServicesInstallPeiMemory ( - PeiMemBase, - PeiMemSize - RequiredMemSize - ); + Status = PeiServicesInstallPeiMemory ( + PeiMemBase, + PeiMemSize - RequiredMemSize + ); ASSERT_EFI_ERROR (Status); if (Capsule != NULL) { @@ -338,7 +342,7 @@ PostFspmHobProcess ( **/ VOID ProcessFspHobList ( - IN VOID *FspHobList + IN VOID *FspHobList ) { EFI_PEI_HOB_POINTERS FspHob; @@ -353,14 +357,15 @@ ProcessFspHobList ( // // Skip FSP binary creates PcdDataBaseHobGuid // - if (!CompareGuid(&FspHob.Guid->Name, &gPcdDataBaseHobGuid)) { + if (!CompareGuid (&FspHob.Guid->Name, &gPcdDataBaseHobGuid)) { BuildGuidDataHob ( &FspHob.Guid->Name, - GET_GUID_HOB_DATA(FspHob), - GET_GUID_HOB_DATA_SIZE(FspHob) - ); + GET_GUID_HOB_DATA (FspHob), + GET_GUID_HOB_DATA_SIZE (FspHob) + ); } } + FspHob.Raw = GET_NEXT_HOB (FspHob); } } @@ -375,7 +380,7 @@ ProcessFspHobList ( EFI_STATUS EFIAPI PostFspsHobProcess ( - IN VOID *FspHobList + IN VOID *FspHobList ) { // @@ -392,5 +397,6 @@ PostFspsHobProcess ( ASSERT (FspHobList != NULL); ProcessFspHobList (FspHobList); } + return EFI_SUCCESS; }