X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FCore%2FPiSmmCore%2FPiSmmIpl.c;h=21c69ca6ef5bbf8a503b97f8f561abbc9c0d4177;hp=b0e387401c9fc7b1d1faa75df1baa0028a754497;hb=84edd20bd0756ef5719835498d4283435d6b5e77;hpb=dad83a8c1207e585b2cb417d0680fe2e9452d262 diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c index b0e387401c..21c69ca6ef 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmIpl.c @@ -979,6 +979,13 @@ ExecuteSmmCoreFromSmram ( // DEBUG ((DEBUG_INFO, "SMM IPL calling SMM Core at SMRAM address %p\n", (VOID *)(UINTN)ImageContext.EntryPoint)); + gSmmCorePrivate->PiSmmCoreImageBase = ImageContext.ImageAddress; + gSmmCorePrivate->PiSmmCoreImageSize = ImageContext.ImageSize; + DEBUG ((DEBUG_INFO, "PiSmmCoreImageBase - 0x%016lx\n", gSmmCorePrivate->PiSmmCoreImageBase)); + DEBUG ((DEBUG_INFO, "PiSmmCoreImageSize - 0x%016lx\n", gSmmCorePrivate->PiSmmCoreImageSize)); + + gSmmCorePrivate->PiSmmCoreEntryPoint = ImageContext.EntryPoint; + // // Execute image // @@ -1076,6 +1083,14 @@ SmmIplEntry ( gSmmCorePrivate->SmramRangeCount = Size / sizeof (EFI_SMRAM_DESCRIPTOR); + // + // Save a full copy + // + gSmmCorePrivate->FullSmramRangeCount = gSmmCorePrivate->SmramRangeCount; + gSmmCorePrivate->FullSmramRanges = (EFI_SMRAM_DESCRIPTOR *) AllocatePool (Size); + ASSERT (gSmmCorePrivate->FullSmramRanges != NULL); + CopyMem (gSmmCorePrivate->FullSmramRanges, gSmmCorePrivate->SmramRanges, Size); + // // Open all SMRAM ranges //