From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 795BF78003C for ; Tue, 5 Sep 2023 02:33:44 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=bg2vUJHx4SC/ZXotpLTP1JiFuVqR3q3/rNyGP6+66ws=; c=relaxed/simple; d=groups.io; h=From:To:Cc:References:In-Reply-To:Subject:Date:Message-ID:MIME-Version:Thread-Index:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Type:Content-Transfer-Encoding:Content-Language; s=20140610; t=1693881223; v=1; b=CIK+Dqb0p/lje4J0G54HyCBRCR6CZv10Ez7b1V9phKBJDLaJS0gqtc5bkCzyM8oFV9xnSt4a 4oFhjLjBqb233jsdF29bGFu774aG16HlaOnsyPqH+C8HJQ/fDouwhSBzJMI20tXIcpVuKSDU8oi HB4r27NJTyfvLNF7Wmnmmj8M= X-Received: by 127.0.0.2 with SMTP id Ega9YY7687511xruB5EwpXJ9; Mon, 04 Sep 2023 19:33:43 -0700 X-Received: from cxsh.intel-email.com (cxsh.intel-email.com [121.46.250.151]) by mx.groups.io with SMTP id smtpd.web10.13098.1693881221935243284 for ; Mon, 04 Sep 2023 19:33:42 -0700 X-Received: from cxsh.intel-email.com (localhost [127.0.0.1]) by cxsh.intel-email.com (Postfix) with ESMTP id 4D24EDDA80B for ; Tue, 5 Sep 2023 10:33:38 +0800 (CST) X-Received: from localhost (localhost [127.0.0.1]) by cxsh.intel-email.com (Postfix) with ESMTP id 48876DDA7EE for ; Tue, 5 Sep 2023 10:33:38 +0800 (CST) X-Received: from mail.byosoft.com.cn (mail.byosoft.com.cn [58.240.74.242]) by cxsh.intel-email.com (Postfix) with SMTP id 9B79BDDA7FF for ; Tue, 5 Sep 2023 10:33:35 +0800 (CST) X-Received: from DESKTOPS6D0PVI ([58.246.60.130]) (envelope-sender ) by 192.168.6.13 with ESMTP(SSL) for ; Tue, 05 Sep 2023 10:33:33 +0800 X-WM-Sender: gaoliming@byosoft.com.cn X-Originating-IP: 58.246.60.130 X-WM-AuthFlag: YES X-WM-AuthUser: gaoliming@byosoft.com.cn From: "gaoliming via groups.io" To: , Cc: "'Wang, Jian J'" , "'Ni, Ray'" References: <1780190419D49EE1.31776@groups.io> In-Reply-To: Subject: =?UTF-8?B?5Zue5aSNOiBbZWRrMi1kZXZlbF0gW1BhdGNoIFYyXSBNZGVNb2R1bGVQa2cvRHhlQ29yZVBlcmZvcm1hbmNlTGliOmZpeCBzbW0gcGVyZiBpc3N1ZQ==?= Date: Tue, 5 Sep 2023 10:33:34 +0800 Message-ID: <078d01d9dfa1$5e05d6f0$1a1184d0$@byosoft.com.cn> MIME-Version: 1.0 Thread-Index: AQE5ipaoeu/bQrdmVw6Fn6sJe2TgXQH0hFpbsTyJWVA= Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,gaoliming@byosoft.com.cn List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: qVHzd49DghqiTOmzV5KuA4nbx7686176AA= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: quoted-printable Content-Language: zh-cn X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=CIK+Dqb0; dmarc=none; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io The change is good to me. Reviewed-by: Liming Gao > -----=D3=CA=BC=FE=D4=AD=BC=FE----- > =B7=A2=BC=FE=C8=CB: devel@edk2.groups.io =B4=FA=B1= =ED duntan > =B7=A2=CB=CD=CA=B1=BC=E4: 2023=C4=EA9=D4=C21=C8=D5 12:07 > =CA=D5=BC=FE=C8=CB: devel@edk2.groups.io; Tan, Dun > =B3=AD=CB=CD: Wang, Jian J ; Gao, Liming > ; Ni, Ray > =D6=F7=CC=E2: Re: [edk2-devel] [Patch V2] > MdeModulePkg/DxeCorePerformanceLib:fix smm perf issue >=20 > Hi Jian and Liming, >=20 > Could you please help to review this patch? >=20 > Thanks, > Dun > -----Original Message----- > From: 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 ; Gao, Liming > ; Ni, Ray > Subject: [edk2-devel] [Patch V2] MdeModulePkg/DxeCorePerformanceLib:fix > smm perf issue >=20 > 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. >=20 > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D4470 > Signed-off-by: Dun Tan > Cc: Jian J Wang > Cc: Liming Gao > Cc: Ray Ni > --- > MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c > | 32 +++++++++++++++++++------------- > 1 file changed, 19 insertions(+), 13 deletions(-) >=20 > 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. >=20 > -Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.
> +Copyright (c) 2006 - 2023, Intel Corporation. All rights reserved.
> (C) Copyright 2016 Hewlett Packard Enterprise Development LP
> SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > @@ -73,6 +73,7 @@ UINT8 *mPerformancePointer =3D NULL; > UINT8 *mBootRecordBuffer =3D NULL; > BOOLEAN mLockInsertRecord =3D FALSE; > CHAR8 *mDevicePathString =3D NULL; > +UINTN mSmmBootRecordOffset =3D 0; >=20 > EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *mDevicePathToText =3D NULL; >=20 > @@ -236,6 +237,7 @@ InternalGetSmmPerfData ( > VOID > *SmmBootRecordData; > UINTN > SmmBootRecordDataSize; > UINTN ReservedMemSize; > + UINTN > SmmBootRecordDataRetrieved; >=20 > // > // Collect boot records from SMM drivers. > @@ -297,28 +299,32 @@ InternalGetSmmPerfData ( > } >=20 > // > - // Get all boot records > + // Get boot records starting from mSmmBootRecordOffset > // > - SmmCommData->Function =3D > SMM_FPDT_FUNCTION_GET_BOOT_RECORD_DATA_BY_OFFSET; > - SmmBootRecordDataSize =3D SmmCommData->BootRecordSize; > - SmmBootRecordData =3D AllocateZeroPool > (SmmBootRecordDataSize); > + SmmCommData->Function =3D > SMM_FPDT_FUNCTION_GET_BOOT_RECORD_DATA_BY_OFFSET; > + SmmCommData->BootRecordOffset =3D mSmmBootRecordOffset; > + SmmBootRecordDataSize =3D > SmmCommData->BootRecordSize - mSmmBootRecordOffset; > + SmmBootRecordData =3D AllocateZeroPool > (SmmBootRecordDataSize); > + SmmBootRecordDataRetrieved =3D 0; > ASSERT (SmmBootRecordData !=3D NULL); > - SmmCommData->BootRecordOffset =3D 0; > - SmmCommData->BootRecordData =3D (VOID > *)((UINTN)SmmCommMemRegion->PhysicalStart + > SMM_BOOT_RECORD_COMM_SIZE); > - SmmCommData->BootRecordSize =3D ReservedMemSize - > SMM_BOOT_RECORD_COMM_SIZE; > - while (SmmCommData->BootRecordOffset < > SmmBootRecordDataSize) { > + SmmCommData->BootRecordData =3D (VOID > *)((UINTN)SmmCommMemRegion->PhysicalStart + > SMM_BOOT_RECORD_COMM_SIZE); > + SmmCommData->BootRecordSize =3D ReservedMemSize - > SMM_BOOT_RECORD_COMM_SIZE; > + while (SmmBootRecordDataRetrieved < > SmmBootRecordDataSize) { > Status =3D 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); > } >=20 > - SmmCommData->BootRecordOffset =3D > SmmCommData->BootRecordOffset + SmmCommData->BootRecordSize; > + SmmBootRecordDataRetrieved +=3D > SmmCommData->BootRecordSize; > + SmmCommData->BootRecordOffset +=3D > + SmmCommData->BootRecordSize; > } >=20 > + mSmmBootRecordOffset =3D SmmCommData->BootRecordOffset; > + > *SmmPerfData =3D SmmBootRecordData; > *SmmPerfDataSize =3D SmmBootRecordDataSize; > } > -- > 2.31.1.windows.1 >=20 >=20 >=20 >=20 >=20 >=20 >=20 >=20 >=20 >=20 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- 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] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-