]> git.proxmox.com Git - mirror_edk2.git/blobdiff - StandaloneMmPkg/Drivers/StandaloneMmCpu/StandaloneMmCpu.c
StandaloneMmPkg: Fix check buffer address failed issue from TF-A
[mirror_edk2.git] / StandaloneMmPkg / Drivers / StandaloneMmCpu / StandaloneMmCpu.c
index d8bfba263ae26b6da683d4297ab41d0142db7547..3d1dc6181bd9fe8f83f5b4cdd5679555d0cd83d9 100644 (file)
@@ -106,6 +106,7 @@ StandaloneMmCpuInitialize (
   UINTN                            Index;\r
   UINTN                            ArraySize;\r
   VOID                             *HobStart;\r
+  EFI_MMRAM_HOB_DESCRIPTOR_BLOCK   *MmramRangesHob;\r
 \r
   ASSERT (SystemTable != NULL);\r
   mMmst = SystemTable;\r
@@ -188,6 +189,26 @@ StandaloneMmCpuInitialize (
   CopyMem (&mNsCommBuffer, NsCommBufMmramRange, sizeof (EFI_MMRAM_DESCRIPTOR));\r
   DEBUG ((DEBUG_INFO, "mNsCommBuffer: 0x%016lx - 0x%lx\n", mNsCommBuffer.CpuStart, mNsCommBuffer.PhysicalSize));\r
 \r
+  Status = GetGuidedHobData (\r
+             HobStart,\r
+             &gEfiMmPeiMmramMemoryReserveGuid,\r
+             (VOID **)&MmramRangesHob\r
+             );\r
+  if (EFI_ERROR (Status)) {\r
+    DEBUG ((DEBUG_ERROR, "MmramRangesHob data extraction failed - 0x%x\n", Status));\r
+    return Status;\r
+  }\r
+\r
+  //\r
+  // As CreateHobListFromBootInfo(), the base and size of buffer shared with\r
+  // privileged Secure world software is in second one.\r
+  //\r
+  CopyMem (\r
+    &mSCommBuffer,\r
+    &MmramRangesHob->Descriptor[0] + 1,\r
+    sizeof (EFI_MMRAM_DESCRIPTOR)\r
+    );\r
+\r
   //\r
   // Extract the MP information from the Hoblist\r
   //\r