public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "maobibo" <maobibo@loongson.cn>
To: devel@edk2.groups.io, lixianglai@loongson.cn
Cc: Chao Li <lichao@loongson.cn>
Subject: Re: [edk2-devel] [PATCH] Platform/Loongson: Remove minimium memory size limitation
Date: Tue, 26 Mar 2024 09:10:44 +0800	[thread overview]
Message-ID: <5c184b50-bda7-f82e-a959-6a11eee8884b@loongson.cn> (raw)
In-Reply-To: <20240325092531.2036269-1-lixianglai@loongson.cn>



On 2024/3/25 下午5:25, xianglai wrote:
> From: Bibo Mao <maobibo@loongson.cn>
> 
> Temparory stack memory on PEI is hardcoded now, also minimium memory
> size 256M is hardcoded now. Here memory map table from fw cfg can be
> parsed. If there is memory map entry contains pei stack, it can be
> published as usable memory at PEI stage.
> 
> Signed-off-by: Bibo Mao <maobibo@loongson.cn>
> Signed-off-by: Xianglai Li <lixianglai@loongson.cn>
> Cc: Bibo Mao <maobibo@loongson.cn>
> Cc: Chao Li <lichao@loongson.cn>
> ---
>   .../Loongson/LoongArchQemuPkg/Loongson.dec    |  2 -
>   .../Loongson/LoongArchQemuPkg/Loongson.dsc    |  6 ---
>   .../LoongArchQemuPkg/PlatformPei/MemDetect.c  | 37 ++++++++++++++++++-
>   .../PlatformPei/PlatformPei.inf               |  2 -
>   4 files changed, 36 insertions(+), 11 deletions(-)
> 
> diff --git a/Platform/Loongson/LoongArchQemuPkg/Loongson.dec b/Platform/Loongson/LoongArchQemuPkg/Loongson.dec
> index e638b835e4..c2c6cc9596 100644
> --- a/Platform/Loongson/LoongArchQemuPkg/Loongson.dec
> +++ b/Platform/Loongson/LoongArchQemuPkg/Loongson.dec
> @@ -48,8 +48,6 @@
>   
>     gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamBase|0|UINT64|0x0000000b
>     gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamSize|0|UINT32|0x0000000c
> -  gLoongArchQemuPkgTokenSpaceGuid.PcdUefiRamTop|0x0|UINT64|0x0000000d
> -  gLoongArchQemuPkgTokenSpaceGuid.PcdRamRegionsBottom|0x0|UINT64|0x0000000e
>     gLoongArchQemuPkgTokenSpaceGuid.PcdFlashSecFvBase|0x0|UINT64|0x0000000f
>     gLoongArchQemuPkgTokenSpaceGuid.PcdFlashSecFvSize|0x0|UINT32|0x00000010
>   
> diff --git a/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc b/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
> index 58aa16d3a9..aab2ca9b28 100644
> --- a/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
> +++ b/Platform/Loongson/LoongArchQemuPkg/Loongson.dsc
> @@ -356,12 +356,6 @@
>     gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamBase                 | 0x10000
>     gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamSize                 | 0x10000
>     gLoongArchQemuPkgTokenSpaceGuid.PcdDeviceTreeBase                    | 0x100000
> -  #
> -  # minimal memory for uefi bios should be 512M
> -  # 0x00000000 - 0x10000000
> -  # 0x90000000 - 0xA0000000
> -  #
> -  gLoongArchQemuPkgTokenSpaceGuid.PcdUefiRamTop                        | 0x10000000
>     gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions           | 0x06
>   
>     gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile                | { 0x21, 0xaa, 0x2c, 0x46, 0x14, 0x76, 0x03, 0x45, 0x83, 0x6e, 0x8a, 0xb6, 0xf4, 0x66, 0x23, 0x31 }
> diff --git a/Platform/Loongson/LoongArchQemuPkg/PlatformPei/MemDetect.c b/Platform/Loongson/LoongArchQemuPkg/PlatformPei/MemDetect.c
> index 7e6a4a3aa9..03d1b0b75d 100644
> --- a/Platform/Loongson/LoongArchQemuPkg/PlatformPei/MemDetect.c
> +++ b/Platform/Loongson/LoongArchQemuPkg/PlatformPei/MemDetect.c
> @@ -40,12 +40,47 @@ PublishPeiMemory (
>     UINT64 Base;
>     UINT64      Size;
>     UINT64      RamTop;
> +  FIRMWARE_CONFIG_ITEM FwCfgItem;
> +  UINTN                FwCfgSize;
> +  UINTN                Processed;
> +  LOONGARCH_MEMMAP_ENTRY  MemoryMapEntry;
>   
>     //
>     // Determine the range of memory to use during PEI
>     //
>     Base = PcdGet64 (PcdSecPeiTempRamBase) + PcdGet32 (PcdSecPeiTempRamSize);
> -  RamTop = PcdGet64 (PcdUefiRamTop);
> +  RamTop = 0;
> +
> +  Status = QemuFwCfgFindFile ("etc/memmap", &FwCfgItem, &FwCfgSize);
> +  if (EFI_ERROR (Status)) {
> +    return Status;
> +  }
> +
> +  if (FwCfgSize % sizeof MemoryMapEntry != 0) {
> +    return EFI_PROTOCOL_ERROR;
> +  }
> +
> +  QemuFwCfgSelectItem (FwCfgItem);
> +  for (Processed = 0; Processed < FwCfgSize; Processed += sizeof MemoryMapEntry) {
> +    QemuFwCfgReadBytes (sizeof MemoryMapEntry, &MemoryMapEntry);
> +    if (MemoryMapEntry.Type != EfiAcpiAddressRangeMemory) {
> +      continue;
> +    }
> +
> +    /*
> +     * Find memory map entry where PEI temp stack is located
> +     */
> +    if ((MemoryMapEntry.BaseAddr <= Base) &&
> +        (Base < (MemoryMapEntry.BaseAddr + MemoryMapEntry.Length))) {
> +        RamTop = MemoryMapEntry.BaseAddr + MemoryMapEntry.Length;
Xianglai,

Will it be better if there is one "break" sentence?

Regards
Bibo Mao

> +    }
> +  }
> +
> +  if (RamTop == 0) {
> +    DEBUG ((DEBUG_ERROR, "ERROR: No memory map entry contains temp stack \n"));
> +    ASSERT (FALSE);
> +  }
> +
>     Size = RamTop - Base;
>   
>     //
> diff --git a/Platform/Loongson/LoongArchQemuPkg/PlatformPei/PlatformPei.inf b/Platform/Loongson/LoongArchQemuPkg/PlatformPei/PlatformPei.inf
> index 6cc3513b63..65591a4d7b 100644
> --- a/Platform/Loongson/LoongArchQemuPkg/PlatformPei/PlatformPei.inf
> +++ b/Platform/Loongson/LoongArchQemuPkg/PlatformPei/PlatformPei.inf
> @@ -64,8 +64,6 @@
>   [FixedPcd]
>     gLoongArchQemuPkgTokenSpaceGuid.PcdFlashDxeFvBase
>     gLoongArchQemuPkgTokenSpaceGuid.PcdFlashDxeFvSize
> -  gLoongArchQemuPkgTokenSpaceGuid.PcdRamRegionsBottom
> -  gLoongArchQemuPkgTokenSpaceGuid.PcdUefiRamTop
>     gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamBase
>     gLoongArchQemuPkgTokenSpaceGuid.PcdSecPeiTempRamSize
>     gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#117098): https://edk2.groups.io/g/devel/message/117098
Mute This Topic: https://groups.io/mt/105134610/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  reply	other threads:[~2024-03-26  1:10 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-25  9:25 [edk2-devel] [PATCH] Platform/Loongson: Remove minimium memory size limitation xianglai
2024-03-26  1:10 ` maobibo [this message]
2024-03-27  1:09   ` xianglai

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=5c184b50-bda7-f82e-a959-6a11eee8884b@loongson.cn \
    --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