Will do, thanks!

SeanRhodes

Technical Project Lead


On Tue, 1 Feb 2022 at 22:53, Dong, Guo <guo.d...@intel.com> wrote:

>
>
> Yes, please re-send the patch once there is any update.
>
> And please CC the package maintainers when you send patches to edk2 devel
> list follow EDK2 process.
>
>
>
> Thanks,
>
> Guo
>
>
>
> *From:* Sean Rhodes <sean@starlabs.systems>
> *Sent:* Saturday, January 29, 2022 1:47 AM
> *To:* Dong, Guo <guo.d...@intel.com>; devel@edk2.groups.io
> *Subject:* Re: [edk2-devel] [PATCH 32/32] UefiPayloadPkg: Add build
> option for Above 4G Memory
>
>
>
> Thanks :)
>
> I've updated the PR. Do I need to resend the new patch again?
>
> [PATCH 33/33] UefiPayloadPkg: Add build option for Above 4G Memory
>
>
>
> When build option ABOVE_4G_MEMORY is set to true, nothing will change
>
> and EDKII will use all available memory.
>
>
>
> Setting it to false will create memory type information HOB in
>
> payload entry, so that EDKII will reserve enough memory below 4G
>
> for EDKII modules. This option is useful for bootloaders that are not
>
> fully 64-bit aware such as Qubes R4.0.4 bootloader, Zorin and Proxmox.
>
>
>
> Signed-off-by: Sean Rhodes <sean@starlabs.systems>
>
> ---
>
>  .../UefiPayloadEntry/UefiPayloadEntry.c       | 41 +++++++++++++++++++
>
>  .../UefiPayloadEntry/UefiPayloadEntry.inf     |  7 ++++
>
>  UefiPayloadPkg/UefiPayloadPkg.dec             |  3 ++
>
>  UefiPayloadPkg/UefiPayloadPkg.dsc             |  3 ++
>
>  4 files changed, 54 insertions(+)
>
>
>
> diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
> b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
>
> index 0fed1e3691..d5c18dc343 100644
>
> --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
>
> +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.c
>
> @@ -5,10 +5,46 @@
>
>
>
>  **/
>
>
>
> +#include <Guid/MemoryTypeInformation.h>
>
>  #include "UefiPayloadEntry.h"
>
>
>
>  STATIC UINT32  mTopOfLowerUsableDram = 0;
>
>
>
> +/**
>
> +   Function to reserve memory below 4GB for EDKII Modules.
>
> +
>
> +   This causes the DXE to dispatch everything under 4GB and allows
> Operating
>
> +   System's that require EFI_LOADED_IMAGE to be under 4GB to start.
>
> +   e.g. Xen hypervisor used in Qubes
>
> +
>
> +   @param  None
>
> +
>
> +  @retval None
>
> +**/
>
> +VOID
>
> +ForceModulesBelow4G (
>
> +  VOID
>
> +  )
>
> +{
>
> +  DEBUG ((DEBUG_INFO, "Building hob to restrict memory resorces to below
> 4G.\n"));
>
> +  EFI_MEMORY_TYPE_INFORMATION mDefaultMemoryTypeInformation[] = {
>
> +    { EfiACPIReclaimMemory,   FixedPcdGet32
> (PcdMemoryTypeEfiACPIReclaimMemory) },
>
> +    { EfiACPIMemoryNVS,       FixedPcdGet32
> (PcdMemoryTypeEfiACPIMemoryNVS) },
>
> +    { EfiReservedMemoryType,  FixedPcdGet32
> (PcdMemoryTypeEfiReservedMemoryType) },
>
> +    { EfiRuntimeServicesData, FixedPcdGet32
> (PcdMemoryTypeEfiRuntimeServicesData) },
>
> +    { EfiRuntimeServicesCode, FixedPcdGet32
> (PcdMemoryTypeEfiRuntimeServicesCode) },
>
> +    { EfiMaxMemoryType,       0     }
>
> +  };
>
> +  //
>
> +  // Create Memory Type Information HOB
>
> +  //
>
> +  BuildGuidDataHob (
>
> +    &gEfiMemoryTypeInformationGuid,
>
> +    mDefaultMemoryTypeInformation,
>
> +    sizeof(mDefaultMemoryTypeInformation)
>
> +  );
>
> +}
>
> +
>
>  /**
>
>     Callback function to build resource descriptor HOB
>
>
>
> @@ -438,6 +474,11 @@ _ModuleEntryPoint (
>
>    // Build other HOBs required by DXE
>
>    BuildGenericHob ();
>
>
>
> +  // Create a HOB to make resources for EDKII modules below 4G
>
> +  if (!FixedPcdGetBool (PcdAbove4GMemory) ) {
>
> +    ForceModulesBelow4G ();
>
> +  }
>
> +
>
>    // Load the DXE Core
>
>    Status = LoadDxeCore (&DxeCoreEntryPoint);
>
>    ASSERT_EFI_ERROR (Status);
>
> diff --git a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf
> b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf
>
> index 1847d6481a..2ca47e3bb5 100644
>
> --- a/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf
>
> +++ b/UefiPayloadPkg/UefiPayloadEntry/UefiPayloadEntry.inf
>
> @@ -86,8 +86,15 @@
>
>    gUefiPayloadPkgTokenSpaceGuid.PcdPayloadFdMemSize
>
>    gUefiPayloadPkgTokenSpaceGuid.PcdBootloaderParameter
>
>    gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize
>
> +  gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS
>
> +  gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory
>
> +  gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType
>
> +  gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesData
>
> +  gUefiPayloadPkgTokenSpaceGuid.PcdMemoryTypeEfiRuntimeServicesCode
>
>
>
>    gEfiMdeModulePkgTokenSpaceGuid.PcdSetNxForStack               ##
> SOMETIMES_CONSUMES
>
>    gEfiMdeModulePkgTokenSpaceGuid.PcdDxeNxMemoryProtectionPolicy ##
> SOMETIMES_CONSUMES
>
>    gEfiMdeModulePkgTokenSpaceGuid.PcdImageProtectionPolicy       ##
> SOMETIMES_CONSUMES
>
>
>
> +  gUefiPayloadPkgTokenSpaceGuid.PcdAbove4GMemory
>
> +
>
> diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec
> b/UefiPayloadPkg/UefiPayloadPkg.dec
>
> index 551f0a4915..653a52b5a7 100644
>
> --- a/UefiPayloadPkg/UefiPayloadPkg.dec
>
> +++ b/UefiPayloadPkg/UefiPayloadPkg.dec
>
> @@ -83,6 +83,9 @@
> gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x
>
>
>
>  gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80,
> 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41
> }|VOID*|0x00000018
>
>
>
> +# Above 4G Memory
>
> +gUefiPayloadPkgTokenSpaceGuid.PcdAbove4GMemory|TRUE|BOOLEAN|0x00000019
>
> +
>
>  ## FFS filename to find the default variable initial data file.
>
>  # @Prompt FFS Name of variable initial data file
>
>   gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae,
> 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6
> }|VOID*|0x00000025
>
> diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc
> b/UefiPayloadPkg/UefiPayloadPkg.dsc
>
> index 1ce96a51c1..dad14be343 100644
>
> --- a/UefiPayloadPkg/UefiPayloadPkg.dsc
>
> +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc
>
> @@ -33,6 +33,7 @@
>
>    DEFINE UNIVERSAL_PAYLOAD            = FALSE
>
>    DEFINE SECURITY_STUB_ENABLE         = TRUE
>
>    DEFINE SMM_SUPPORT                  = FALSE
>
> +  DEFINE ABOVE_4G_MEMORY              = TRUE
>
>    #
>
>    # SBL:      UEFI payload for Slim Bootloader
>
>    # COREBOOT: UEFI payload for coreboot
>
> @@ -399,6 +400,8 @@
>
>    gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask       | 0x1
>
>  !endif
>
>
>
> +  gUefiPayloadPkgTokenSpaceGuid.PcdAbove4GMemory|$(ABOVE_4G_MEMORY)
>
> +
>
>  [PcdsPatchableInModule.X64]
>
>    gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER)
>
>
>  gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER)
>
> --
>
> 2.32.0
>
>
>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#86324): https://edk2.groups.io/g/devel/message/86324
Mute This Topic: https://groups.io/mt/88757870/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to