public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "gaoliming via groups.io" <gaoliming=byosoft.com.cn@groups.io>
To: <devel@edk2.groups.io>, <dun.tan@intel.com>
Cc: "'Wang, Jian J'" <jian.j.wang@intel.com>, "'Ni, Ray'" <ray.ni@intel.com>
Subject: 回复: [edk2-devel] [Patch V2] MdeModulePkg/DxeCorePerformanceLib:fix smm perf issue
Date: Tue, 5 Sep 2023 10:33:34 +0800	[thread overview]
Message-ID: <078d01d9dfa1$5e05d6f0$1a1184d0$@byosoft.com.cn> (raw)
In-Reply-To: <BN9PR11MB5483AC629B2F8C5893980982E5E4A@BN9PR11MB5483.namprd11.prod.outlook.com>

The change is good to me. Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>

> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 duntan
> 发送时间: 2023年9月1日 12:07
> 收件人: devel@edk2.groups.io; Tan, Dun <dun.tan@intel.com>
> 抄送: Wang, Jian J <jian.j.wang@intel.com>; Gao, Liming
> <gaoliming@byosoft.com.cn>; Ni, Ray <ray.ni@intel.com>
> 主题: Re: [edk2-devel] [Patch V2]
> MdeModulePkg/DxeCorePerformanceLib:fix smm perf issue
> 
> Hi Jian and Liming,
> 
> Could you please help to review this patch?
> 
> Thanks,
> Dun
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of duntan
> Sent: Wednesday, August 30, 2023 3:36 PM
> To: devel@edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang@intel.com>; Gao, Liming
> <gaoliming@byosoft.com.cn>; Ni, Ray <ray.ni@intel.com>
> Subject: [edk2-devel] [Patch V2] MdeModulePkg/DxeCorePerformanceLib:fix
> smm perf issue
> 
> Fix smm perf issue in DxeCorePerformanceLib. In current code logic, total
> SMM perf record is copied multiple times to FPDT table if multiple
> ReadyToBoot events are signaled. This patch changes the function
> InternalGetSmmPerfData() to only get newly generated Smm perf data. Then
> previous generated Smm perf data won't be copied to FPDT again.
> 
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4470
> Signed-off-by: Dun Tan <dun.tan@intel.com>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Ray Ni <ray.ni@intel.com>
> ---
>  MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
> | 32 +++++++++++++++++++-------------
>  1 file changed, 19 insertions(+), 13 deletions(-)
> 
> diff --git
> a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.
> c
> b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.
> c
> index ef14bc0738..0a994be6a5 100644
> ---
> a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.
> c
> +++
> b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.
> c
> @@ -10,7 +10,7 @@
>    This library is mainly used by DxeCore to start performance logging to
> ensure that
>    Performance Protocol is installed at the very beginning of DXE phase.
> 
> -Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2006 - 2023, Intel Corporation. All rights reserved.<BR>
>  (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
>  SPDX-License-Identifier: BSD-2-Clause-Patent
> 
> @@ -73,6 +73,7 @@ UINT8    *mPerformancePointer  = NULL;
>  UINT8    *mBootRecordBuffer    = NULL;
>  BOOLEAN  mLockInsertRecord     = FALSE;
>  CHAR8    *mDevicePathString    = NULL;
> +UINTN    mSmmBootRecordOffset  = 0;
> 
>  EFI_DEVICE_PATH_TO_TEXT_PROTOCOL  *mDevicePathToText = NULL;
> 
> @@ -236,6 +237,7 @@ InternalGetSmmPerfData (
>    VOID
> *SmmBootRecordData;
>    UINTN
> SmmBootRecordDataSize;
>    UINTN                                    ReservedMemSize;
> +  UINTN
> SmmBootRecordDataRetrieved;
> 
>    //
>    // Collect boot records from SMM drivers.
> @@ -297,28 +299,32 @@ InternalGetSmmPerfData (
>            }
> 
>            //
> -          // Get all boot records
> +          // Get boot records starting from mSmmBootRecordOffset
>            //
> -          SmmCommData->Function =
> SMM_FPDT_FUNCTION_GET_BOOT_RECORD_DATA_BY_OFFSET;
> -          SmmBootRecordDataSize = SmmCommData->BootRecordSize;
> -          SmmBootRecordData     = AllocateZeroPool
> (SmmBootRecordDataSize);
> +          SmmCommData->Function         =
> SMM_FPDT_FUNCTION_GET_BOOT_RECORD_DATA_BY_OFFSET;
> +          SmmCommData->BootRecordOffset = mSmmBootRecordOffset;
> +          SmmBootRecordDataSize         =
> SmmCommData->BootRecordSize - mSmmBootRecordOffset;
> +          SmmBootRecordData             = AllocateZeroPool
> (SmmBootRecordDataSize);
> +          SmmBootRecordDataRetrieved    = 0;
>            ASSERT (SmmBootRecordData  != NULL);
> -          SmmCommData->BootRecordOffset = 0;
> -          SmmCommData->BootRecordData   = (VOID
> *)((UINTN)SmmCommMemRegion->PhysicalStart +
> SMM_BOOT_RECORD_COMM_SIZE);
> -          SmmCommData->BootRecordSize   = ReservedMemSize -
> SMM_BOOT_RECORD_COMM_SIZE;
> -          while (SmmCommData->BootRecordOffset <
> SmmBootRecordDataSize) {
> +          SmmCommData->BootRecordData = (VOID
> *)((UINTN)SmmCommMemRegion->PhysicalStart +
> SMM_BOOT_RECORD_COMM_SIZE);
> +          SmmCommData->BootRecordSize = ReservedMemSize -
> SMM_BOOT_RECORD_COMM_SIZE;
> +          while (SmmBootRecordDataRetrieved <
> SmmBootRecordDataSize) {
>              Status = Communication->Communicate (Communication,
> SmmBootRecordCommBuffer, &CommSize);
>              ASSERT_EFI_ERROR (Status);
>              ASSERT_EFI_ERROR (SmmCommData->ReturnStatus);
> -            if (SmmCommData->BootRecordOffset +
> SmmCommData->BootRecordSize > SmmBootRecordDataSize) {
> -              CopyMem ((UINT8 *)SmmBootRecordData +
> SmmCommData->BootRecordOffset, SmmCommData->BootRecordData,
> SmmBootRecordDataSize - SmmCommData->BootRecordOffset);
> +            if (SmmBootRecordDataRetrieved +
> SmmCommData->BootRecordSize > SmmBootRecordDataSize) {
> +              CopyMem ((UINT8 *)SmmBootRecordData +
> + SmmBootRecordDataRetrieved, SmmCommData->BootRecordData,
> + SmmBootRecordDataSize - SmmBootRecordDataRetrieved);
>              } else {
> -              CopyMem ((UINT8 *)SmmBootRecordData +
> SmmCommData->BootRecordOffset, SmmCommData->BootRecordData,
> SmmCommData->BootRecordSize);
> +              CopyMem ((UINT8 *)SmmBootRecordData +
> + SmmBootRecordDataRetrieved, SmmCommData->BootRecordData,
> + SmmCommData->BootRecordSize);
>              }
> 
> -            SmmCommData->BootRecordOffset =
> SmmCommData->BootRecordOffset + SmmCommData->BootRecordSize;
> +            SmmBootRecordDataRetrieved    +=
> SmmCommData->BootRecordSize;
> +            SmmCommData->BootRecordOffset +=
> + SmmCommData->BootRecordSize;
>            }
> 
> +          mSmmBootRecordOffset = SmmCommData->BootRecordOffset;
> +
>            *SmmPerfData     = SmmBootRecordData;
>            *SmmPerfDataSize = SmmBootRecordDataSize;
>          }
> --
> 2.31.1.windows.1
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 





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



      reply	other threads:[~2023-09-05  2:33 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1780190419D49EE1.31776@groups.io>
2023-09-01  4:06 ` [edk2-devel] [Patch V2] MdeModulePkg/DxeCorePerformanceLib:fix smm perf issue duntan
2023-09-05  2:33   ` gaoliming via groups.io [this message]

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='078d01d9dfa1$5e05d6f0$1a1184d0$@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