From: Laszlo Ersek <lersek@redhat.com>
To: Dandan Bi <dandan.bi@intel.com>, edk2-devel@lists.01.org
Cc: Eric Dong <eric.dong@intel.com>, Liming Gao <liming.gao@intel.com>
Subject: Re: [patch 1/3] UefiCpuPkg/S3Resume: Remove useless pref code
Date: Wed, 24 Jan 2018 16:49:49 +0100 [thread overview]
Message-ID: <cbfa6873-5026-9edb-ffc0-54cbf4c15c3c@redhat.com> (raw)
In-Reply-To: <00ecccd6-6e43-9433-7db1-244adc00f0d7@redhat.com>
small update to my review comments:
On 01/24/18 16:48, Laszlo Ersek wrote:
> On 01/24/18 09:01, Dandan Bi wrote:
>> Our new performance infrastructure can support to dump performance
>> date form ACPI table in OS. So we can remove the old pref code to
>> write performance data to OS.
Again, please reference the TianoCore BZ and/or commit hashes and/or
mailing list subjects/URLs, for specifying "new performance infrastructure".
With that change, my R-b stands.
Thanks
Laszlo
>>
>> Cc: Eric Dong <eric.dong@intel.com>
>> Cc: Laszlo Ersek <lersek@redhat.com>
>> Cc: Liming Gao <liming.gao@intel.com>
>> Contributed-under: TianoCore Contribution Agreement 1.1
>> Signed-off-by: Dandan Bi <dandan.bi@intel.com>
>> ---
>> UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c | 131 ---------------------
>> .../Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf | 3 +-
>> 2 files changed, 1 insertion(+), 133 deletions(-)
>>
>> diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c
>> index d7d2a4d..4d77689 100644
>> --- a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c
>> +++ b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c
>> @@ -20,11 +20,10 @@
>>
>> #include <PiPei.h>
>>
>> #include <Guid/AcpiS3Context.h>
>> #include <Guid/BootScriptExecutorVariable.h>
>> -#include <Guid/Performance.h>
>> #include <Guid/ExtendedFirmwarePerformance.h>
>> #include <Guid/EndOfS3Resume.h>
>> #include <Ppi/ReadOnlyVariable2.h>
>> #include <Ppi/S3Resume2.h>
>> #include <Ppi/SmmAccess.h>
>> @@ -284,136 +283,10 @@ GLOBAL_REMOVE_IF_UNREFERENCED IA32_GDT mGdtEntries[] = {
>> GLOBAL_REMOVE_IF_UNREFERENCED CONST IA32_DESCRIPTOR mGdt = {
>> sizeof (mGdtEntries) - 1,
>> (UINTN) mGdtEntries
>> };
>>
>> -/**
>> - Performance measure function to get S3 detailed performance data.
>> -
>> - This function will getS3 detailed performance data and saved in pre-reserved ACPI memory.
>> -**/
>> -VOID
>> -WriteToOsS3PerformanceData (
>> - VOID
>> - )
>> -{
>> - EFI_STATUS Status;
>> - EFI_PHYSICAL_ADDRESS mAcpiLowMemoryBase;
>> - PERF_HEADER *PerfHeader;
>> - PERF_DATA *PerfData;
>> - UINT64 Ticker;
>> - UINTN Index;
>> - EFI_PEI_READ_ONLY_VARIABLE2_PPI *VariableServices;
>> - UINTN VarSize;
>> - UINTN LogEntryKey;
>> - CONST VOID *Handle;
>> - CONST CHAR8 *Token;
>> - CONST CHAR8 *Module;
>> - UINT64 StartTicker;
>> - UINT64 EndTicker;
>> - UINT64 StartValue;
>> - UINT64 EndValue;
>> - BOOLEAN CountUp;
>> - UINT64 Freq;
>> -
>> - //
>> - // Retrieve time stamp count as early as possible
>> - //
>> - Ticker = GetPerformanceCounter ();
>> -
>> - Freq = GetPerformanceCounterProperties (&StartValue, &EndValue);
>> -
>> - Freq = DivU64x32 (Freq, 1000);
>> -
>> - Status = PeiServicesLocatePpi (
>> - &gEfiPeiReadOnlyVariable2PpiGuid,
>> - 0,
>> - NULL,
>> - (VOID **) &VariableServices
>> - );
>> - if (EFI_ERROR (Status)) {
>> - return;
>> - }
>> -
>> - VarSize = sizeof (EFI_PHYSICAL_ADDRESS);
>> - Status = VariableServices->GetVariable (
>> - VariableServices,
>> - L"PerfDataMemAddr",
>> - &gPerformanceProtocolGuid,
>> - NULL,
>> - &VarSize,
>> - &mAcpiLowMemoryBase
>> - );
>> - if (EFI_ERROR (Status)) {
>> - DEBUG ((EFI_D_ERROR, "Fail to retrieve variable to log S3 performance data \n"));
>> - return;
>> - }
>> -
>> - PerfHeader = (PERF_HEADER *) (UINTN) mAcpiLowMemoryBase;
>> -
>> - if (PerfHeader->Signiture != PERFORMANCE_SIGNATURE) {
>> - DEBUG ((EFI_D_ERROR, "Performance data in ACPI memory get corrupted! \n"));
>> - return;
>> - }
>> -
>> - //
>> - // Record total S3 resume time.
>> - //
>> - if (EndValue >= StartValue) {
>> - PerfHeader->S3Resume = Ticker - StartValue;
>> - CountUp = TRUE;
>> - } else {
>> - PerfHeader->S3Resume = StartValue - Ticker;
>> - CountUp = FALSE;
>> - }
>> -
>> - //
>> - // Get S3 detailed performance data
>> - //
>> - Index = 0;
>> - LogEntryKey = 0;
>> - while ((LogEntryKey = GetPerformanceMeasurement (
>> - LogEntryKey,
>> - &Handle,
>> - &Token,
>> - &Module,
>> - &StartTicker,
>> - &EndTicker)) != 0) {
>> - if (EndTicker != 0) {
>> - PerfData = &PerfHeader->S3Entry[Index];
>> -
>> - //
>> - // Use File Handle to specify the different performance log for PEIM.
>> - // File Handle is the base address of PEIM FFS file.
>> - //
>> - if ((AsciiStrnCmp (Token, "PEIM", PEI_PERFORMANCE_STRING_SIZE) == 0) && (Handle != NULL)) {
>> - AsciiSPrint (PerfData->Token, PERF_TOKEN_LENGTH, "0x%11p", Handle);
>> - } else {
>> - AsciiStrnCpyS (PerfData->Token, PERF_TOKEN_SIZE, Token, PERF_TOKEN_LENGTH);
>> - }
>> - if (StartTicker == 1) {
>> - StartTicker = StartValue;
>> - }
>> - if (EndTicker == 1) {
>> - EndTicker = StartValue;
>> - }
>> - Ticker = CountUp? (EndTicker - StartTicker) : (StartTicker - EndTicker);
>> - PerfData->Duration = (UINT32) DivU64x32 (Ticker, (UINT32) Freq);
>> -
>> - //
>> - // Only Record > 1ms performance data so that more big performance can be recorded.
>> - //
>> - if ((Ticker > Freq) && (++Index >= PERF_PEI_ENTRY_MAX_NUM)) {
>> - //
>> - // Reach the maximum number of PEI performance log entries.
>> - //
>> - break;
>> - }
>> - }
>> - }
>> - PerfHeader->S3EntryNum = (UINT32) Index;
>> -}
>>
>> /**
>> The function will check if current waking vector is long mode.
>>
>> @param AcpiS3Context a pointer to a structure of ACPI_S3_CONTEXT
>> @@ -602,14 +475,10 @@ S3ResumeBootOs (
>> //
>> // report status code on S3 resume
>> //
>> REPORT_STATUS_CODE (EFI_PROGRESS_CODE, EFI_SOFTWARE_PEI_MODULE | EFI_SW_PEI_PC_OS_WAKE);
>>
>> - PERF_CODE (
>> - WriteToOsS3PerformanceData ();
>> - );
>> -
>> AsmTransferControl = (ASM_TRANSFER_CONTROL)(UINTN)PeiS3ResumeState->AsmTransferControl;
>> if (Facs->XFirmwareWakingVector != 0) {
>> //
>> // Switch to native waking vector
>> //
>> diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
>> index 15fa2d1..9522ede 100644
>> --- a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
>> +++ b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
>> @@ -3,11 +3,11 @@
>> #
>> # This module works with StandAloneBootScriptExecutor to S3 resume to OS.
>> # This module will excute the boot script saved during last boot and after that,
>> # control is passed to OS waking up handler.
>> #
>> -# Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR>
>> +# Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
>> # Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
>> #
>> # This program and the accompanying materials are
>> # licensed and made available under the terms and conditions of the BSD License
>> # which accompanies this distribution. The full text of the license may be found at
>> @@ -71,11 +71,10 @@
>> PrintLib
>>
>> [Guids]
>> gEfiBootScriptExecutorVariableGuid ## SOMETIMES_CONSUMES ## UNDEFINED # LockBox
>> gEfiBootScriptExecutorContextGuid ## SOMETIMES_CONSUMES ## UNDEFINED # LockBox
>> - gPerformanceProtocolGuid ## SOMETIMES_CONSUMES ## Variable:L"PerfDataMemAddr"
>> ## SOMETIMES_CONSUMES ## HOB
>> ## SOMETIMES_CONSUMES ## UNDEFINED # LockBox
>> gEfiAcpiVariableGuid
>> gEfiAcpiS3ContextGuid ## SOMETIMES_CONSUMES ## UNDEFINED # LockBox
>> gEdkiiEndOfS3ResumeGuid ## SOMETIMES_CONSUMES ## UNDEFINED # Used to do smm communication
>>
>
> Looks good to me.
>
> Specifically for use in OVMF, this logic has always been inactive, since
> we don't yet have PEI-phase (r/o) variable access.
>
> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
next prev parent reply other threads:[~2018-01-24 15:44 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-24 8:01 [patch 0/3] Remove the useless pref codes Dandan Bi
2018-01-24 8:01 ` [patch 1/3] UefiCpuPkg/S3Resume: Remove useless pref code Dandan Bi
2018-01-24 15:48 ` Laszlo Ersek
2018-01-24 15:49 ` Laszlo Ersek [this message]
2018-01-24 8:01 ` [patch 2/3] MdeModulePkg/BdsDxe: Remove useless Pref Code Dandan Bi
2018-01-25 4:54 ` Ni, Ruiyu
2018-01-24 8:01 ` [patch 3/3] MdeModulePkg/UefiBootManagerLib: Remove useless pref codes Dandan Bi
2018-01-25 4:55 ` Ni, Ruiyu
2018-01-25 4:58 ` [patch 0/3] Remove the " Zeng, Star
2018-01-25 5:51 ` Bi, Dandan
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=cbfa6873-5026-9edb-ffc0-54cbf4c15c3c@redhat.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