From: "Ni, Ruiyu" <ruiyu.ni@intel.com>
To: "Dong, Eric" <eric.dong@intel.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: Laszlo Ersek <lersek@redhat.com>
Subject: Re: [Patch v4 3/5] UefiCpuPkg/CpuS3DataDxe: Change Memory Type and address limitation.
Date: Wed, 15 Aug 2018 05:40:53 +0000 [thread overview]
Message-ID: <734D49CCEBEEF84792F5B80ED585239D5BDD522E@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20180815021435.13748-4-eric.dong@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Thanks/Ray
> -----Original Message-----
> From: edk2-devel <edk2-devel-bounces@lists.01.org> On Behalf Of Eric Dong
> Sent: Wednesday, August 15, 2018 10:15 AM
> To: edk2-devel@lists.01.org
> Cc: Laszlo Ersek <lersek@redhat.com>; Ni, Ruiyu <ruiyu.ni@intel.com>
> Subject: [edk2] [Patch v4 3/5] UefiCpuPkg/CpuS3DataDxe: Change Memory
> Type and address limitation.
>
> Because CpuS3Data memory will be copy to smram at SmmReadyToLock point,
> the memory type no need to be ACPI NVS type, also the address not limit to
> below 4G.
>
> This change remove the limit of ACPI NVS memory type and below 4G.
>
> V4 Changes:
> 1. Create AllocateZeroPages and use it. It's easy to use than gBS->AllocatePages.
>
> Pass OS boot and resume from S3 test.
>
> Cc: Marvin Häuser <Marvin.Haeuser@outlook.com>
> Cc: Fan Jeff <vanjeff_919@hotmail.com>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Cc: Ruiyu Ni <ruiyu.ni@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Eric Dong <eric.dong@intel.com>
> ---
> UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c | 34
> +++++++++++++++++++++++++-------
> UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf | 1 +
> 2 files changed, 28 insertions(+), 7 deletions(-)
>
> diff --git a/UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c
> b/UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c
> index dccb406b8d..3e8c8b383c 100644
> --- a/UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c
> +++ b/UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c
> @@ -31,6 +31,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY
> KIND, EITHER EXPRESS OR IMPLIED.
> #include <Library/UefiBootServicesTableLib.h>
> #include <Library/DebugLib.h>
> #include <Library/MtrrLib.h>
> +#include <Library/MemoryAllocationLib.h>
>
> #include <Protocol/MpService.h>
> #include <Guid/EventGroup.h>
> @@ -81,6 +82,28 @@ AllocateAcpiNvsMemoryBelow4G (
> return Buffer;
> }
>
> +/**
> + Allocate memory and clean it with zero.
> +
> + @param[in] Size Size of memory to allocate.
> +
> + @return Allocated address for output.
> +
> +**/
> +VOID *
> +AllocateZeroPages (
> + IN UINTN Size
> + )
> +{
> + VOID *Buffer;
> +
> + Buffer = AllocatePages (EFI_SIZE_TO_PAGES (Size)); if (Buffer !=
> + NULL) {
> + ZeroMem (Buffer, Size);
> + }
> +
> + return Buffer;
> +}
> /**
> Callback function executed when the EndOfDxe event group is signaled.
>
> @@ -171,10 +194,7 @@ CpuS3DataInitialize (
> //
> OldAcpiCpuData = (ACPI_CPU_DATA *) (UINTN) PcdGet64
> (PcdCpuS3DataAddress);
>
> - //
> - // Allocate ACPI NVS memory below 4G memory for use on ACPI S3 resume.
> - //
> - AcpiCpuDataEx = AllocateAcpiNvsMemoryBelow4G (sizeof
> (ACPI_CPU_DATA_EX));
> + AcpiCpuDataEx = AllocateZeroPages (sizeof (ACPI_CPU_DATA_EX));
> ASSERT (AcpiCpuDataEx != NULL);
> AcpiCpuData = &AcpiCpuDataEx->AcpiCpuData;
>
> @@ -223,11 +243,11 @@ CpuS3DataInitialize (
> AsmReadIdtr (&AcpiCpuDataEx->IdtrProfile);
>
> //
> - // Allocate GDT and IDT in ACPI NVS and copy current GDT and IDT contents
> + // Allocate GDT and IDT and copy current GDT and IDT contents
> //
> GdtSize = AcpiCpuDataEx->GdtrProfile.Limit + 1;
> IdtSize = AcpiCpuDataEx->IdtrProfile.Limit + 1;
> - Gdt = AllocateAcpiNvsMemoryBelow4G (GdtSize + IdtSize);
> + Gdt = AllocateZeroPages (GdtSize + IdtSize);
> ASSERT (Gdt != NULL);
> Idt = (VOID *)((UINTN)Gdt + GdtSize);
> CopyMem (Gdt, (VOID *)AcpiCpuDataEx->GdtrProfile.Base, GdtSize); @@ -
> 243,7 +263,7 @@ CpuS3DataInitialize (
> // Allocate buffer for empty RegisterTable and PreSmmInitRegisterTable for
> all CPUs
> //
> TableSize = 2 * NumberOfCpus * sizeof (CPU_REGISTER_TABLE);
> - RegisterTable = (CPU_REGISTER_TABLE *)AllocateAcpiNvsMemoryBelow4G
> (TableSize);
> + RegisterTable = (CPU_REGISTER_TABLE *)AllocateZeroPages
> + (TableSize);
> ASSERT (RegisterTable != NULL);
>
> for (Index = 0; Index < NumberOfCpus; Index++) { diff --git
> a/UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> b/UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> index 480c98ebcd..c16731529c 100644
> --- a/UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> +++ b/UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf
> @@ -51,6 +51,7 @@
> DebugLib
> BaseLib
> MtrrLib
> + MemoryAllocationLib
>
> [Guids]
> gEfiEndOfDxeEventGroupGuid ## CONSUMES ## Event
> --
> 2.15.0.windows.1
>
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
next prev parent reply other threads:[~2018-08-15 5:41 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-15 2:14 [Patch v4 0/5] Change CpuS3Data memory type and address limitation Eric Dong
2018-08-15 2:14 ` [Patch v4 1/5] UefiCpuPkg/PiSmmCpuDxeSmm: Use GDT/IDT saved in Smram Eric Dong
2018-08-15 5:40 ` Ni, Ruiyu
2018-08-15 13:03 ` Laszlo Ersek
2018-08-15 2:14 ` [Patch v4 2/5] UefiCpuPkg/AcpiCpuData.h: Remove AcpiNVS and Below 4G limitation Eric Dong
2018-08-15 2:14 ` [Patch v4 3/5] UefiCpuPkg/CpuS3DataDxe: Change Memory Type and address limitation Eric Dong
2018-08-15 5:40 ` Ni, Ruiyu [this message]
2018-08-15 13:11 ` Laszlo Ersek
2018-08-15 13:12 ` Marvin Häuser
2018-08-15 15:30 ` Laszlo Ersek
2018-08-16 0:56 ` Dong, Eric
2018-08-16 12:30 ` Laszlo Ersek
2018-08-16 12:59 ` Marvin Häuser
2018-08-17 1:51 ` Dong, Eric
2018-08-15 2:14 ` [Patch v4 4/5] UefiCpuPkg/CpuS3DataDxe: Remove below 4G limitation Eric Dong
2018-08-15 2:14 ` [Patch v4 5/5] UefiCpuPkg/RegisterCpuFeaturesLib: Combine implementation Eric Dong
2018-08-15 13:14 ` [Patch v4 0/5] Change CpuS3Data memory type and address limitation Laszlo Ersek
2018-08-15 14:00 ` Laszlo Ersek
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=734D49CCEBEEF84792F5B80ED585239D5BDD522E@SHSMSX104.ccr.corp.intel.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