public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ni, Ray" <ray.ni@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	"Ni, Ray" <ray.ni@intel.com>,
	"Liu, Zhiguang" <zhiguang.liu@intel.com>
Cc: "Desimone, Nathaniel L" <nathaniel.l.desimone@intel.com>
Subject: Re: [edk2-devel] [PATCH 1/5] SimicsOpenBoardPkg: Build gEfiSmmSmramMemoryGuid Hob in S3 path
Date: Tue, 25 Apr 2023 13:51:32 +0000	[thread overview]
Message-ID: <MN6PR11MB82442D787BE5D35AF38973418C649@MN6PR11MB8244.namprd11.prod.outlook.com> (raw)
In-Reply-To: <175931AA7778970F.7408@groups.io>

Please ignore my 2nd question.
I saw " AddMemoryRangeHob (BASE_1MB, LowerMemorySize - TsegSize);" when
PcdSmmSmramRequire is TRUE.

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ni, Ray
> Sent: Tuesday, April 25, 2023 9:49 PM
> To: Liu, Zhiguang <zhiguang.liu@intel.com>; devel@edk2.groups.io
> Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>
> Subject: Re: [edk2-devel] [PATCH 1/5] SimicsOpenBoardPkg: Build
> gEfiSmmSmramMemoryGuid Hob in S3 path
> 
> Zhiguang,
> Can you please keep the comments that explain why below 1MB memory
> resource
> should be added for QSP platform?
> 
> Another question not related to your changes:
>   why "AddMemoryRangeHob (BASE_1MB, LowerMemorySize);" is only
> called when
>   PcdSmmSmramRequire is FALSE?
> 
> Thanks,
> Ray
> 
> > -----Original Message-----
> > From: Liu, Zhiguang <zhiguang.liu@intel.com>
> > Sent: Tuesday, April 25, 2023 3:03 PM
> > To: devel@edk2.groups.io
> > Cc: Liu, Zhiguang <zhiguang.liu@intel.com>; Desimone, Nathaniel L
> > <nathaniel.l.desimone@intel.com>; Ni, Ray <ray.ni@intel.com>
> > Subject: [PATCH 1/5] SimicsOpenBoardPkg: Build
> > gEfiSmmSmramMemoryGuid Hob in S3 path
> >
> > gEfiSmmSmramMemoryGuid Hob is needed for SmmRelocation feature
> > even for S3 path. So in MemDetect.c, remove specical code path
> > for S3 about creating gEfiSmmSmramMemoryGuid Hob and adding some
> > memory descriptor, which does no harm in S3 path.
> >
> > Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> > Cc: Ray Ni <ray.ni@intel.com>
> > Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
> > ---
> >  .../SimicsOpenBoardPkg/SimicsPei/MemDetect.c  | 107 +++++++-----------
> >  1 file changed, 42 insertions(+), 65 deletions(-)
> >
> > diff --git a/Platform/Intel/SimicsOpenBoardPkg/SimicsPei/MemDetect.c
> > b/Platform/Intel/SimicsOpenBoardPkg/SimicsPei/MemDetect.c
> > index 127afffc00..d80ac1d213 100644
> > --- a/Platform/Intel/SimicsOpenBoardPkg/SimicsPei/MemDetect.c
> > +++ b/Platform/Intel/SimicsOpenBoardPkg/SimicsPei/MemDetect.c
> > @@ -405,79 +405,56 @@ QemuInitializeRam (
> >    LowerMemorySize = GetSystemMemorySizeBelow4gb ();
> >    UpperMemorySize = GetSystemMemorySizeAbove4gb ();
> >
> > -  if (mBootMode == BOOT_ON_S3_RESUME) {
> > -    //
> > -    // Create the following memory HOB as an exception on the S3 boot
> path.
> > -    //
> > -    // Normally we'd create memory HOBs only on the normal boot path.
> > However,
> > -    // CpuMpPei specifically needs such a low-memory HOB on the S3 path
> as
> > -    // well, for "borrowing" a subset of it temporarily, for the AP startup
> > -    // vector.
> > -    //
> > -    // CpuMpPei saves the original contents of the borrowed area in
> > permanent
> > -    // PEI RAM, in a backup buffer allocated with the normal PEI services.
> > -    // CpuMpPei restores the original contents ("returns" the borrowed
> area)
> > at
> > -    // End-of-PEI. End-of-PEI in turn is emitted by S3Resume2Pei before
> > -    // transferring control to the OS's wakeup vector in the FACS.
> > -    //
> > -    // We expect any other PEIMs that "borrow" memory similarly to
> > CpuMpPei to
> > -    // restore the original contents. Furthermore, we expect all such PEIMs
> > -    // (CpuMpPei included) to claim the borrowed areas by producing
> > memory
> > -    // allocation HOBs, and to honor preexistent memory allocation HOBs
> > when
> > -    // looking for an area to borrow.
> > -    //
> > -    AddMemoryRangeHob (0, BASE_512KB + BASE_128KB);
> > -  } else {
> > -    //
> > -    // Create memory HOBs
> > -    //
> > -    AddMemoryRangeHob (0, BASE_512KB + BASE_128KB);
> > +  //
> > +  // Create memory HOBs
> > +  //
> > +  AddMemoryRangeHob (0, BASE_512KB + BASE_128KB);
> >
> > -    if (FeaturePcdGet (PcdSmmSmramRequire)) {
> > -      UINT32 TsegSize;
> > +  if (FeaturePcdGet (PcdSmmSmramRequire)) {
> > +    UINT32 TsegSize;
> >
> > -      TsegSize = mX58TsegMbytes * SIZE_1MB;
> > -      AddMemoryRangeHob (BASE_1MB, LowerMemorySize - TsegSize);
> > -      AddReservedMemoryBaseSizeHob (LowerMemorySize - TsegSize,
> > TsegSize,
> > -        TRUE);
> > +    TsegSize = mX58TsegMbytes * SIZE_1MB;
> > +    AddMemoryRangeHob (BASE_1MB, LowerMemorySize - TsegSize);
> > +    AddReservedMemoryBaseSizeHob (LowerMemorySize - TsegSize,
> > TsegSize,
> > +      TRUE);
> >
> > -	  BufferSize = sizeof(EFI_SMRAM_HOB_DESCRIPTOR_BLOCK);
> > -	  SmramRanges = 1;
> > +    BufferSize = sizeof(EFI_SMRAM_HOB_DESCRIPTOR_BLOCK);
> > +    SmramRanges = 1;
> >
> > -      Hob.Raw = BuildGuidHob(
> > -          &gEfiSmmSmramMemoryGuid,
> > -          BufferSize
> > -      );
> > -      ASSERT(Hob.Raw);
> > -
> > -      SmramHobDescriptorBlock = (EFI_SMRAM_HOB_DESCRIPTOR_BLOCK
> > *)(Hob.Raw);
> > -      SmramHobDescriptorBlock->NumberOfSmmReservedRegions =
> > SmramRanges;
> > -
> > -      SmramIndex = 0;
> > -      for (Index = 0; Index < SmramRanges; Index++) {
> > -        //
> > -        // This is an SMRAM range, create an SMRAM descriptor
> > -        //
> > -        SmramHobDescriptorBlock->Descriptor[SmramIndex].PhysicalStart =
> > LowerMemorySize - TsegSize;
> > -        SmramHobDescriptorBlock->Descriptor[SmramIndex].CpuStart =
> > LowerMemorySize - TsegSize;
> > -        SmramHobDescriptorBlock->Descriptor[SmramIndex].PhysicalSize =
> > TsegSize;
> > -        SmramHobDescriptorBlock->Descriptor[SmramIndex].RegionState =
> > EFI_SMRAM_CLOSED | EFI_CACHEABLE;
> > -        SmramIndex++;
> > -      }
> > +    Hob.Raw = BuildGuidHob(
> > +        &gEfiSmmSmramMemoryGuid,
> > +        BufferSize
> > +    );
> > +    ASSERT(Hob.Raw);
> >
> > -    } else {
> > -      AddMemoryRangeHob (BASE_1MB, LowerMemorySize);
> > -    }
> > +    SmramHobDescriptorBlock = (EFI_SMRAM_HOB_DESCRIPTOR_BLOCK
> > *)(Hob.Raw);
> > +    SmramHobDescriptorBlock->NumberOfSmmReservedRegions =
> > SmramRanges;
> >
> > -    //
> > -    // If QEMU presents an E820 map, then create memory HOBs for
> > the >=4GB RAM
> > -    // entries. Otherwise, create a single memory HOB with the flat >=4GB
> > -    // memory size read from the CMOS.
> > -    //
> > -    if (UpperMemorySize != 0) {
> > -      AddMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);
> > +    SmramIndex = 0;
> > +    for (Index = 0; Index < SmramRanges; Index++) {
> > +      //
> > +      // This is an SMRAM range, create an SMRAM descriptor
> > +      //
> > +      SmramHobDescriptorBlock->Descriptor[SmramIndex].PhysicalStart =
> > LowerMemorySize - TsegSize;
> > +      SmramHobDescriptorBlock->Descriptor[SmramIndex].CpuStart =
> > LowerMemorySize - TsegSize;
> > +      SmramHobDescriptorBlock->Descriptor[SmramIndex].PhysicalSize =
> > TsegSize;
> > +      SmramHobDescriptorBlock->Descriptor[SmramIndex].RegionState =
> > EFI_SMRAM_CLOSED | EFI_CACHEABLE;
> > +      SmramIndex++;
> >      }
> > +
> > +  } else {
> > +    AddMemoryRangeHob (BASE_1MB, LowerMemorySize);
> >    }
> > +
> > +  //
> > +  // If QEMU presents an E820 map, then create memory HOBs for
> > the >=4GB RAM
> > +  // entries. Otherwise, create a single memory HOB with the flat >=4GB
> > +  // memory size read from the CMOS.
> > +  //
> > +  if (UpperMemorySize != 0) {
> > +    AddMemoryBaseSizeHob (BASE_4GB, UpperMemorySize);
> > +  }
> > +
> >  }
> >
> >  /**
> > --
> > 2.31.1.windows.1
> 
> 
> 
> 
> 


  parent reply	other threads:[~2023-04-25 13:51 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-25  7:02 [PATCH 0/5] refine Smm range code in BoardX58Ich10 Zhiguang Liu
2023-04-25  7:03 ` [PATCH 1/5] SimicsOpenBoardPkg: Build gEfiSmmSmramMemoryGuid Hob in S3 path Zhiguang Liu
2023-04-25 13:48   ` Ni, Ray
     [not found]   ` <175931AA7778970F.7408@groups.io>
2023-04-25 13:51     ` Ni, Ray [this message]
2023-04-25  7:03 ` [PATCH 2/5] SimicsOpenBoardPkg: Move AcpiVariableGuid hob to MemDetect Zhiguang Liu
2023-04-25 13:53   ` [edk2-devel] " Ni, Ray
2023-04-25  7:03 ` [PATCH 3/5] SimicsOpenBoardPkg: Use SmmAccessLib instead of SmmAccessPei.inf Zhiguang Liu
2023-04-25 13:55   ` Ni, Ray
2023-04-25  7:03 ` [PATCH 4/5] SimicsOpenBoardPkg: Use another SmmAccess Driver Zhiguang Liu
2023-04-25 13:57   ` Ni, Ray
2023-04-25  7:03 ` [PATCH 5/5] SimicsX58SktPkg: Remove unused Smm related modules Zhiguang Liu
2023-04-25 13:58   ` Ni, Ray

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MN6PR11MB82442D787BE5D35AF38973418C649@MN6PR11MB8244.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox