From: "gaoliming via groups.io" <gaoliming=byosoft.com.cn@groups.io>
To: <devel@edk2.groups.io>, <aaron.li@intel.com>
Cc: "'Bi, Dandan'" <dandan.bi@intel.com>,
"'Liu, Yun Y'" <yun.y.liu@intel.com>,
"'Yao, Jiewen'" <jiewen.yao@intel.com>,
"'Ni, Ray'" <ray.ni@intel.com>,
"'Kinney, Michael D'" <michael.d.kinney@intel.com>,
"'Liu, Zhiguang'" <zhiguang.liu@intel.com>
Subject: 回复: [edk2-devel] [PATCH v2 1/1] MdeModulePkg/AcpiTableDxe: PCD switch to avoid using ACPI reclaim memory
Date: Tue, 2 Apr 2024 09:26:12 +0800 [thread overview]
Message-ID: <018601da849c$bfd96130$3f8c2390$@byosoft.com.cn> (raw)
In-Reply-To: <DM4PR11MB5455FD4E480D5CE03F02E0E9973F2@DM4PR11MB5455.namprd11.prod.outlook.com>
Aaron:
Per the specification, it is valid to publish all ACPI table in
EfiAcpiMemoryNVS.
So, I have no other comments for this patch. Reviewed-by: Liming Gao
<gaoliming@byosoft.com.cn>
Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Aaron Li
> 发送时间: 2024年4月1日 10:32
> 收件人: devel@edk2.groups.io; Liming Gao <gaoliming@byosoft.com.cn>
> 抄送: Bi, Dandan <dandan.bi@intel.com>; Liu, Yun Y <yun.y.liu@intel.com>;
> Yao, Jiewen <jiewen.yao@intel.com>; Ni, Ray <ray.ni@intel.com>; Kinney,
> Michael D <michael.d.kinney@intel.com>; Liu, Zhiguang
> <zhiguang.liu@intel.com>
> 主题: Re: [edk2-devel] [PATCH v2 1/1] MdeModulePkg/AcpiTableDxe: PCD
> switch to avoid using ACPI reclaim memory
>
> Hi Liming,
>
> Could you please help review and merge it? Thanks.
>
> Best,
> Aaron
>
> -----Original Message-----
> From: Liu, Zhiguang <zhiguang.liu@intel.com>
> Sent: Monday, April 1, 2024 10:06 AM
> To: Li, Aaron <aaron.li@intel.com>; devel@edk2.groups.io
> Cc: Bi, Dandan <dandan.bi@intel.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Liu, Yun Y <yun.y.liu@intel.com>; Yao, Jiewen
> <jiewen.yao@intel.com>; Ni, Ray <ray.ni@intel.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Subject: RE: [PATCH v2 1/1] MdeModulePkg/AcpiTableDxe: PCD switch to
> avoid using ACPI reclaim memory
>
> Reviewed-by: Zhiguang Liu <zhiguang.liu@intel.com>
>
> > -----Original Message-----
> > From: Li, Aaron <aaron.li@intel.com>
> > Sent: Tuesday, March 26, 2024 3:58 PM
> > To: devel@edk2.groups.io
> > Cc: Liu, Zhiguang <zhiguang.liu@intel.com>; Bi, Dandan
> > <dandan.bi@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>; Liu, Yun
> Y
> > <yun.y.liu@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Ni, Ray
> > <ray.ni@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>
> > Subject: [PATCH v2 1/1] MdeModulePkg/AcpiTableDxe: PCD switch to avoid
> > using ACPI reclaim memory
> >
> > UEFI spec defined ACPI Tables at boot time can be contained in memory of
> > type EfiACPIReclaimMemory or EfiAcpiMemoryNVS, although
> InstallAcpiTable
> > with AcpiTableProtocol will only allocate memory with type
> > EfiACPIReclaimMemory (Except FACS).
> >
> > This patch provides an optional method controlled by PCD to avoid using
> > EfiACPIReclaimMemory, by setting the PCD PcdNoACPIReclaimMemory to
> > TRUE, all ACPI allocated memory will use EfiAcpiMemoryNVS instead.
> >
> > Cc: Zhiguang Liu <zhiguang.liu@intel.com>
> > Cc: Dandan Bi <dandan.bi@intel.com>
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > Cc: Liu Yun <yun.y.liu@intel.com>
> > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > Cc: Ray Ni <ray.ni@intel.com>
> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > Signed-off-by: Aaron Li <aaron.li@intel.com>
> > ---
> > MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c | 37
> > +++++++++++++++-----
> > MdeModulePkg/MdeModulePkg.dec
> | 7 ++++
> > MdeModulePkg/MdeModulePkg.uni
> | 8 +++++
> > MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf | 1
> +
> > 4 files changed, 45 insertions(+), 8 deletions(-)
> >
> > diff --git
> a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
> > b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
> > index e09bc9b704f5..080768033cfa 100644
> > --- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
> > +++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
> > @@ -340,6 +340,7 @@ ReallocateAcpiTableBuffer (
> > EFI_ACPI_TABLE_INSTANCE TempPrivateData;
> > EFI_STATUS Status;
> > UINT64 CurrentData;
> > + EFI_MEMORY_TYPE AcpiAllocateMemoryType;
> >
> > CopyMem (&TempPrivateData, AcpiTableInstance, sizeof
> > (EFI_ACPI_TABLE_INSTANCE));
> > //
> > @@ -359,6 +360,12 @@ ReallocateAcpiTableBuffer (
> > NewMaxTableNumber * sizeof (UINT32);
> > }
> >
> > + if (PcdGetBool (PcdNoACPIReclaimMemory)) {
> > + AcpiAllocateMemoryType = EfiACPIMemoryNVS; } else {
> > + AcpiAllocateMemoryType = EfiACPIReclaimMemory; }
> > +
> > if (mAcpiTableAllocType != AllocateAnyPages) {
> > //
> > // Allocate memory in the lower 32 bit of address range for @@
> -372,13
> > +379,13 @@ ReallocateAcpiTableBuffer (
> > PageAddress = 0xFFFFFFFF;
> > Status = gBS->AllocatePages (
> > mAcpiTableAllocType,
> > - EfiACPIReclaimMemory,
> > + AcpiAllocateMemoryType,
> > EFI_SIZE_TO_PAGES (TotalSize),
> > &PageAddress
> > );
> > } else {
> > Status = gBS->AllocatePool (
> > - EfiACPIReclaimMemory,
> > + AcpiAllocateMemoryType,
> > TotalSize,
> > (VOID **)&Pointer
> > );
> > @@ -512,6 +519,7 @@ AddTableToList (
> > EFI_PHYSICAL_ADDRESS AllocPhysAddress;
> > UINT64 Buffer64;
> > BOOLEAN AddToRsdt;
> > + EFI_MEMORY_TYPE AcpiAllocateMemoryType;
> >
> > //
> > // Check for invalid input parameters @@ -550,6 +558,12 @@
> > AddTableToList (
> > CurrentTableList->TableSize = CurrentTableSize;
> > CurrentTableList->PoolAllocation = FALSE;
> >
> > + if (PcdGetBool (PcdNoACPIReclaimMemory)) {
> > + AcpiAllocateMemoryType = EfiACPIMemoryNVS; } else {
> > + AcpiAllocateMemoryType = EfiACPIReclaimMemory; }
> > +
> > //
> > // Allocation memory type depends on the type of the table
> > //
> > @@ -585,7 +599,7 @@ AddTableToList (
> > // such as AArch64 that allocate multiples of 64 KB
> > //
> > Status = gBS->AllocatePool (
> > - EfiACPIReclaimMemory,
> > + AcpiAllocateMemoryType,
> > CurrentTableList->TableSize,
> > (VOID **)&CurrentTableList->Table
> > );
> > @@ -596,7 +610,7 @@ AddTableToList (
> > //
> > Status = gBS->AllocatePages (
> > mAcpiTableAllocType,
> > - EfiACPIReclaimMemory,
> > + AcpiAllocateMemoryType,
> > EFI_SIZE_TO_PAGES
> (CurrentTableList->TableSize),
> > &AllocPhysAddress
> > );
> > @@ -1944,6 +1958,7 @@ AcpiTableAcpiTableConstructor (
> > UINTN RsdpTableSize;
> > UINT8 *Pointer;
> > EFI_PHYSICAL_ADDRESS PageAddress;
> > + EFI_MEMORY_TYPE AcpiAllocateMemoryType;
> >
> > //
> > // Check for invalid input parameters @@ -1978,17 +1993,23 @@
> > AcpiTableAcpiTableConstructor (
> > RsdpTableSize += sizeof
> > (EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER);
> > }
> >
> > + if (PcdGetBool (PcdNoACPIReclaimMemory)) {
> > + AcpiAllocateMemoryType = EfiACPIMemoryNVS; } else {
> > + AcpiAllocateMemoryType = EfiACPIReclaimMemory; }
> > +
> > if (mAcpiTableAllocType != AllocateAnyPages) {
> > PageAddress = 0xFFFFFFFF;
> > Status = gBS->AllocatePages (
> > mAcpiTableAllocType,
> > - EfiACPIReclaimMemory,
> > + AcpiAllocateMemoryType,
> > EFI_SIZE_TO_PAGES (RsdpTableSize),
> > &PageAddress
> > );
> > } else {
> > Status = gBS->AllocatePool (
> > - EfiACPIReclaimMemory,
> > + AcpiAllocateMemoryType,
> > RsdpTableSize,
> > (VOID **)&Pointer
> > );
> > @@ -2037,13 +2058,13 @@ AcpiTableAcpiTableConstructor (
> > PageAddress = 0xFFFFFFFF;
> > Status = gBS->AllocatePages (
> > mAcpiTableAllocType,
> > - EfiACPIReclaimMemory,
> > + AcpiAllocateMemoryType,
> > EFI_SIZE_TO_PAGES (TotalSize),
> > &PageAddress
> > );
> > } else {
> > Status = gBS->AllocatePool (
> > - EfiACPIReclaimMemory,
> > + AcpiAllocateMemoryType,
> > TotalSize,
> > (VOID **)&Pointer
> > );
> > diff --git a/MdeModulePkg/MdeModulePkg.dec
> > b/MdeModulePkg/MdeModulePkg.dec index a82dedc070df..a91058e5b5df
> > 100644
> > --- a/MdeModulePkg/MdeModulePkg.dec
> > +++ b/MdeModulePkg/MdeModulePkg.dec
> > @@ -1533,6 +1533,13 @@ [PcdsFixedAtBuild, PcdsPatchableInModule]
> > # @Prompt Exposed ACPI table versions.
> >
> >
> gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x3E|UIN
> > T32|0x0001004c
> >
> > + ## Indicates whether ACPI Reclaim memory is not available # Default
> > + is FALSE that means ACPI Reclaim memory is available # If it is set
> > + to TRUE that means ACPI Reclaim memory is not available # For
> example
> > + ACPI Table protocol will use ACPI NVS memory instead of ACPI Reclaim
> > + memory # @Prompt ACPI Reclaim memory is not available.
> > +
> > +
> >
> gEfiMdeModulePkgTokenSpaceGuid.PcdNoACPIReclaimMemory|FALSE|BOOL
> > EAN|0x
> > + 0001008b
> > +
> > ## This PCD defines the MAX repair count.
> > # The default value is 0 that means infinite.
> > # @Prompt MAX repair count
> > diff --git a/MdeModulePkg/MdeModulePkg.uni
> > b/MdeModulePkg/MdeModulePkg.uni index
> > a17d34d60b21..6079285e3f8b 100644
> > --- a/MdeModulePkg/MdeModulePkg.uni
> > +++ b/MdeModulePkg/MdeModulePkg.uni
> > @@ -955,6 +955,14 @@
> >
> "BIT 4 -
> > EFI_ACPI_TABLE_VERSION_4_0.<BR>\n"
> >
> "BIT 5 -
> > EFI_ACPI_TABLE_VERSION_5_0.<BR>"
> >
> > +#string
> >
> STR_gEfiMdeModulePkgTokenSpaceGuid_PcdNoACPIReclaimMemory_PROM
> > PT #language en-US "ACPI Reclaim memory is not available."
> > +
> > +#string
> > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdNoACPIReclaimMemory_HELP
> > #language en-US "Indicates whether ACPI Reclaim memory is not
> available\n"
> > +
> "Default is FALSE that means ACPI
> > Reclaim memory is available\n"
> > +
> "If it is set to TRUE that means
> > ACPI Reclaim memory is not available\n"
> > +
> "For example ACPI Table protocol
> > will use ACPI NVS memory instead of ACPI Reclaim memory"
> > +
> > +
> > #string
> >
> STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHiiOsRuntimeSupport_PROMPT
> > #language en-US "Enable export HII data and configuration to be used in
OS
> > runtime."
> >
> > #string
> > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHiiOsRuntimeSupport_HELP
> > #language en-US "Indicates if HII data and configuration has been
> > exported.<BR><BR>\n"
> > diff --git a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
> > b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
> > index 86dea43e27e4..be498a56cff0 100644
> > --- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
> > +++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
> > @@ -68,6 +68,7 @@ [Pcd]
> > gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId
> ##
> > CONSUMES
> > gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision
> ##
> > CONSUMES
> > gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions
> ##
> > CONSUMES
> > + gEfiMdeModulePkgTokenSpaceGuid.PcdNoACPIReclaimMemory
> ##
> > CONSUMES
> >
> > [Protocols]
> > gEfiAcpiTableProtocolGuid ## PRODUCES
> > --
> > 2.44.0.windows.1
>
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#117302): https://edk2.groups.io/g/devel/message/117302
Mute This Topic: https://groups.io/mt/105280101/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-
next prev parent reply other threads:[~2024-04-02 1:26 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-26 7:57 [edk2-devel] [PATCH v2 1/1] MdeModulePkg/AcpiTableDxe: PCD switch to avoid using ACPI reclaim memory Aaron Li
2024-03-28 1:14 ` [edk2-devel] 回复: " gaoliming via groups.io
2024-03-28 3:59 ` [edk2-devel] " Aaron Li
2024-03-28 5:59 ` Ard Biesheuvel
2024-03-28 7:23 ` Aaron Li
2024-04-01 2:05 ` Zhiguang Liu
2024-04-01 2:31 ` Aaron Li
2024-04-02 1:26 ` gaoliming via groups.io [this message]
2024-04-07 1:56 ` Aaron Li
2024-04-09 6:23 ` 回复: " gaoliming via groups.io
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='018601da849c$bfd96130$3f8c2390$@byosoft.com.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