X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkModulePkg%2FCore%2FDxeIplPeim%2FDxeLoadX64.c;h=cbb7595dac7bdaf2ffe1762bbc250f6ef0157a45;hp=6727bf4ca776c153b47c9f3ace0851abd9e549e2;hb=15b06e58b0aa3076a9d8cbb2dbe8a2d06b094bbd;hpb=878ddf1fc3540a715f63594ed22b6929e881afb4 diff --git a/EdkModulePkg/Core/DxeIplPeim/DxeLoadX64.c b/EdkModulePkg/Core/DxeIplPeim/DxeLoadX64.c index 6727bf4ca7..cbb7595dac 100644 --- a/EdkModulePkg/Core/DxeIplPeim/DxeLoadX64.c +++ b/EdkModulePkg/Core/DxeIplPeim/DxeLoadX64.c @@ -130,11 +130,11 @@ Returns: EFI_PEI_PE_COFF_LOADER_PROTOCOL *PeiEfiPeiPeCoffLoader; EFI_BOOT_MODE BootMode; - Status = PeiCoreGetBootMode (&BootMode); + Status = PeiServicesGetBootMode (&BootMode); ASSERT_EFI_ERROR (Status); - Status = PeiCoreLocatePpi ( + Status = PeiServicesLocatePpi ( &gPeiInMemoryGuid, 0, NULL, @@ -165,7 +165,7 @@ Returns: // // Install LoadFile PPI // - Status = PeiCoreInstallPpi (&mPpiLoadFile); + Status = PeiServicesInstallPpi (&mPpiLoadFile); if (EFI_ERROR (Status)) { return Status; @@ -174,7 +174,7 @@ Returns: // // Install DxeIpl PPI // - PeiCoreInstallPpi (&mPpiList); + PeiServicesInstallPpi (&mPpiList); if (EFI_ERROR (Status)) { return Status; @@ -220,10 +220,6 @@ Returns: EFI_PHYSICAL_ADDRESS DxeCoreAddress; UINT64 DxeCoreSize; EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint; - VOID *PpisNeededByDxePe32Data; - EFI_PHYSICAL_ADDRESS PpisNeededByDxeAddress; - UINT64 PpisNeededByDxeSize; - EFI_PHYSICAL_ADDRESS PpisNeededByDxeEntryPoint; EFI_PEI_PE_COFF_LOADER_PROTOCOL *PeiEfiPeiPeCoffLoader; EFI_BOOT_MODE BootMode; EFI_PEI_RECOVERY_MODULE_PPI *PeiRecovery; @@ -238,10 +234,10 @@ Returns: // // if in S3 Resume, restore configure // - Status = PeiCoreGetBootMode (&BootMode); + Status = PeiServicesGetBootMode (&BootMode); if (!EFI_ERROR (Status) && (BootMode == BOOT_ON_S3_RESUME)) { - Status = PeiCoreLocatePpi ( + Status = PeiServicesLocatePpi ( &gEfiPeiS3ResumePpiGuid, 0, NULL, @@ -274,7 +270,7 @@ Returns: // // Allocate 128KB for the Stack // - PeiCoreAllocatePages (EfiBootServicesData, EFI_SIZE_TO_PAGES (STACK_SIZE), &BaseOfStack); + PeiServicesAllocatePages (EfiBootServicesData, EFI_SIZE_TO_PAGES (STACK_SIZE), &BaseOfStack); ASSERT (BaseOfStack != 0); // @@ -292,9 +288,9 @@ Returns: // // See if we are in crisis recovery // - Status = PeiCoreGetBootMode (&BootMode); + Status = PeiServicesGetBootMode (&BootMode); if (!EFI_ERROR (Status) && (BootMode == BOOT_IN_RECOVERY_MODE)) { - Status = PeiCoreLocatePpi ( + Status = PeiServicesLocatePpi ( &gEfiPeiRecoveryModulePpiGuid, 0, NULL, @@ -317,24 +313,13 @@ Returns: ); ASSERT_EFI_ERROR (Status); - // - // Find the PpisNeededByDxe in a Firmware Volume - // - Status = PeiFindFile ( - EFI_FV_FILETYPE_ALL, - EFI_SECTION_PE32, - &mPpiNeededByDxeGuid, - &PpisNeededByDxePe32Data - ); - ASSERT_EFI_ERROR (Status); - // // Transfer control to the DXE Core // The handoff state is simply a pointer to the HOB list // // PEI_PERF_END (PeiServices, L"DxeIpl", NULL, 0); - Status = PeiCoreInstallPpi (&mPpiSignal); + Status = PeiServicesInstallPpi (&mPpiSignal); ASSERT_EFI_ERROR (Status); // @@ -347,19 +332,6 @@ Returns: // PageTables = CreateIdentityMappingPageTables (36); - // - // Load the PpiNeededByDxe from a Firmware Volume - // - Status = PeiLoadx64File ( - PeiEfiPeiPeCoffLoader, - PpisNeededByDxePe32Data, - EfiBootServicesData, - &PpisNeededByDxeAddress, - &PpisNeededByDxeSize, - &PpisNeededByDxeEntryPoint - ); - ASSERT_EFI_ERROR (Status); - // // Load the DXE Core from a Firmware Volume @@ -402,7 +374,7 @@ Returns: PageTables, (EFI_PHYSICAL_ADDRESS)(UINTN)(HobList.Raw), TopOfStack, - PpisNeededByDxeEntryPoint, + 0x00000000, DxeCoreEntryPoint ); @@ -467,18 +439,18 @@ Returns: Hob.Raw = GetHobList (); while ((Hob.Raw = GetNextHob (EFI_HOB_TYPE_FV, Hob.Raw)) != NULL) { FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *) (UINTN) (Hob.FirmwareVolume->BaseAddress); - Status = PeiCoreFfsFindNextFile ( + Status = PeiServicesFfsFindNextFile ( Type, FwVolHeader, &FfsFileHeader ); if (!EFI_ERROR (Status)) { - CopyMem (FileName, &FfsFileHeader->Name, sizeof (EFI_GUID)); Status = PeiProcessFile ( SectionType, - FfsFileHeader, + &FfsFileHeader, Pe32Data ); + CopyMem (FileName, &FfsFileHeader->Name, sizeof (EFI_GUID)); return Status; } Hob.Raw = GET_NEXT_HOB (Hob); @@ -540,7 +512,7 @@ Returns: // // Allocate Memory for the image // - PeiCoreAllocatePages (MemoryType, EFI_SIZE_TO_PAGES ((UINT32) ImageContext.ImageSize), &MemoryBuffer); + PeiServicesAllocatePages (MemoryType, EFI_SIZE_TO_PAGES ((UINT32) ImageContext.ImageSize), &MemoryBuffer); ImageContext.ImageAddress = MemoryBuffer; ASSERT (ImageContext.ImageAddress != 0); @@ -632,7 +604,7 @@ Returns: // // Install PeiInMemory to indicate the Dxeipl is shadowed // - Status = PeiCoreInstallPpi (&mPpiPeiInMemory); + Status = PeiServicesInstallPpi (&mPpiPeiInMemory); if (EFI_ERROR (Status)) { return Status; @@ -690,7 +662,7 @@ Returns: // Status = PeiProcessFile ( EFI_SECTION_PE32, - FfsHeader, + &FfsHeader, &Pe32Data ); @@ -714,9 +686,9 @@ Returns: EFI_STATUS PeiProcessFile ( - IN UINT16 SectionType, - IN EFI_FFS_FILE_HEADER *FfsFileHeader, - OUT VOID **Pe32Data + IN UINT16 SectionType, + IN OUT EFI_FFS_FILE_HEADER **RealFfsFileHeader, + OUT VOID **Pe32Data ) /*++ @@ -764,8 +736,11 @@ Returns: EFI_GUID TempGuid; EFI_FIRMWARE_VOLUME_HEADER *FvHeader; EFI_COMPRESSION_SECTION *CompressionSection; + EFI_FFS_FILE_HEADER *FfsFileHeader; + + FfsFileHeader = *RealFfsFileHeader; - Status = PeiCoreFfsFindSectionData ( + Status = PeiServicesFfsFindSectionData ( EFI_SECTION_COMPRESSION, FfsFileHeader, &SectionData @@ -803,7 +778,7 @@ Returns: // AuthenticationStatus = 0; - Status = PeiCoreLocatePpi ( + Status = PeiServicesLocatePpi ( &gEfiPeiSectionExtractionPpiGuid, 0, NULL, @@ -836,7 +811,7 @@ Returns: // If not ask the Security PPI, if exists, for disposition // // - Status = PeiCoreLocatePpi ( + Status = PeiServicesLocatePpi ( &gEfiPeiSecurityPpiGuid, 0, NULL, @@ -948,7 +923,7 @@ Returns: if (FvHeader->Signature == EFI_FVH_SIGNATURE) { FfsFileHeader = NULL; BuildFvHob ((EFI_PHYSICAL_ADDRESS) (UINTN) FvHeader, FvHeader->FvLength); - Status = PeiCoreFfsFindNextFile ( + Status = PeiServicesFfsFindNextFile ( EFI_FV_FILETYPE_DXE_CORE, FvHeader, &FfsFileHeader @@ -958,7 +933,11 @@ Returns: return EFI_NOT_FOUND; } - return PeiProcessFile (SectionType, FfsFileHeader, Pe32Data); + // + // Reture the FfsHeader that contain Pe32Data. + // + *RealFfsFileHeader = FfsFileHeader; + return PeiProcessFile (SectionType, RealFfsFileHeader, Pe32Data); } } // @@ -994,14 +973,14 @@ Returns: // } else { - Status = PeiCoreFfsFindSectionData ( + Status = PeiServicesFfsFindSectionData ( EFI_SECTION_PE32, FfsFileHeader, &SectionData ); if (EFI_ERROR (Status)) { - Status = PeiCoreFfsFindSectionData ( + Status = PeiServicesFfsFindSectionData ( EFI_SECTION_TE, FfsFileHeader, &SectionData