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 967DBD80D5A for ; Wed, 30 Aug 2023 10:21:35 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=YLGft/PlnIv1vAtiaxXUJj5fOrhpdS7osAwCUirWRj0=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type; s=20140610; t=1693390894; v=1; b=P+tYfL4hjtdZW14lksT24aX2OkhpFLkHl+0MbU0lBXJ5dT5n/FAJ34dLdgxmwiuLdZXgq282 M07kbREldK4SKRlU4b0n9bcHBpGgP4NZKTCQuBtA294zctykO5k/KyaCS/pSYcSj5HejYh+X6s/ 483uUutPoTbOa3ehT+2jmuLQ= X-Received: by 127.0.0.2 with SMTP id nvlRYY7687511xvDBfQHLqck; Wed, 30 Aug 2023 03:21:34 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web10.10710.1693390893163484050 for ; Wed, 30 Aug 2023 03:21:33 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10817"; a="355112682" X-IronPort-AV: E=Sophos;i="6.02,213,1688454000"; d="scan'208,217";a="355112682" X-Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Aug 2023 03:21:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10817"; a="809084171" X-IronPort-AV: E=Sophos;i="6.02,213,1688454000"; d="scan'208,217";a="809084171" X-Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by fmsmga004.fm.intel.com with ESMTP; 30 Aug 2023 03:21:31 -0700 X-Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 30 Aug 2023 03:21:30 -0700 X-Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Wed, 30 Aug 2023 03:21:30 -0700 X-Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Wed, 30 Aug 2023 03:21:29 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cRM466nZIakUR4765ysTG7Ma1vgXoyOtKWpYkaefntKm+g81EQpVbnAoEHG+7Lf6T8PkZ1oF6pJ6pL1AtlrW2WbsrPQmeHA4R1HymWHZYrakx8rfQXhbxNjMjmYNoNeKzZ2KAxSEj6ojASsuf94x0ezfz8TL62XjqbYR6SQ3RSmtNOovq2b4P8iEkyrmvCPBSb2SRV4F2x/vYrzCjv3HlN8wBtXrUIOyjoz27EMHOziwWQEOuHUVXyMyvrbdSfGVvYVyrGbMatg4CkiI6E6Dz+wjQPUdC+PHoP3gfalZji3cRKIKUscGVIaO5THH7t1XLijfA9zWMjwnvREziZ26eQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YgNOt6AXJXxVrKl3ko7TtEeYPY9UZCWoFWRczlUu9PY=; b=nxnpbwOAYqViYg8SPQx5e63mctKU0VRpkBCUSVRLBvyRKUydiGWnIh7WUdH1dzXaPNvCksLlGxdHs87Nu2Pr5kyBrD+eVmx6sgkWAFwcek920QS/937hgkN62w032h8CGhFl3FQc2x5ur/HX9rF5rNFDQpZz2U08x/olc2Lb1H/AlcC1UFzVyp8WBblV0XDyxCvV9pSHYtVaAftugNnvZURn1p+qMD9ElFRqbp6vtqv78E2R+9RMTjqpUMDsXPKKFPQT28bhx1vKjfS6if9u5azWcPKatTBjuQEvSaHV8roGI8wnd9PSmiyGalJCOaZ//Npm4gf6rHkZihA1o1YECw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by SN7PR11MB7567.namprd11.prod.outlook.com (2603:10b6:806:328::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6699.34; Wed, 30 Aug 2023 10:21:27 +0000 X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::bf9a:54ca:d270:59b]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::bf9a:54ca:d270:59b%5]) with mapi id 15.20.6699.034; Wed, 30 Aug 2023 10:21:27 +0000 From: "Ni, Ray" To: "Tan, Dun" , "devel@edk2.groups.io" CC: "Wang, Jian J" , "Gao, Liming" Subject: Re: [edk2-devel] [Patch V2] MdeModulePkg/DxeCorePerformanceLib:fix smm perf issue Thread-Topic: [Patch V2] MdeModulePkg/DxeCorePerformanceLib:fix smm perf issue Thread-Index: AQHZ2xSiT/ixIRAmXUasAmfDgAjGtrACoTcZ Date: Wed, 30 Aug 2023 10:21:27 +0000 Message-ID: References: <20230830073530.675-1-dun.tan@intel.com> In-Reply-To: <20230830073530.675-1-dun.tan@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|SN7PR11MB7567:EE_ x-ms-office365-filtering-correlation-id: 5752a152-e672-4e44-deb8-08dba942decb x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: npfLyhFxXDHUMRgOcHRcliqH7dYP1yAbvKiS/Myp9h7NWEojtwm8W7aApYoBPLuJbvrmf+Xr9Pj5Rco+iv/Hve3YCTChHHpzaltJmbGx1QY+rzIczARjVRDVUyR57cX8HHviAQTPJsbNrFvM8kl6eZhRGwNS/xazxLq/mcMa4ANedvKHpouCDjti3RRd905OLVa2/TF/9qmuyVrbBrcI/ChmQK9wMY+cbeo7CDzEsinrJ1dTghmaXjHYu0v5hG3grYEgR0jaw25+z2z+92mSucYxfa55Ru0GhSZp9WTnnBM9UzI82oLy6MscFl+PPwv3BulhyIm99wDon2AQylxgeGLME9R3rVBVBeHnawLge4UO/fCd8gKS31GkVDqyRN5l3q4RyNOJa57T4Rgl/XZ1wvMgXj3StfhYTL29pJ87YXq4JIDd60LkTxT/+z+6K6jGc/xnAP1RQ0fVduVFXBHbtKrEuhEoi2M0PkvFmIpqobtKXO2D0gsd/UIMC5iUrTI2OPPlbMqyiA6fX7zqDdG6h4mR177cXFffQJskDxE5cKfK8mOlmHJTXHj3rluG+nPNJf0xXA89p9c3E456CEKc0JYZIQPYxVUqvkyQpQwlHcY= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?IXE3NFaUwhZskFvhDkRPfp7AheTPbCYWEUgPNcP//boUXomKTUUrYGvv/Aig?= =?us-ascii?Q?0AIuFbI8Z80COvOYL2zqEuwiKUV3kqL3Ifoc0EuYLuIAjZtsVTSxDD2Bm8po?= =?us-ascii?Q?QXEwVKVxh0MdX/W3Vx+ypj3P21B/zm5HYKufRb5VQc5H7ZJb7kafkuKG4uHQ?= =?us-ascii?Q?+P2RPb4C7an04e2pSRvWgAMQSdBFTo/Dx+xv+vltjbG9xvosqMdKiBfzRZaO?= =?us-ascii?Q?2mVaM4uBfcxeWYNKBjDgFMbeYIJYPeykb4pvdqdMm4ULJgu8jsbjRV2G8brk?= =?us-ascii?Q?eIus2yjXtJYxrMawub5dysntGyDgx7rZeKwlAArrh+WCPXwC+EFm/aH/IfRP?= =?us-ascii?Q?AuWoOaNdTgDvKiC0vg9a9oP/V1SeMS0ZwO3mhTx1zwlRwrquSPuKXrPTOyXf?= =?us-ascii?Q?S31NqILXhV4MMscrDkM9ttTSneUqMfxbjZsEq2WCjs8/IKmg05jQbNpzZ11E?= =?us-ascii?Q?/1wc2IPDwZSrdbKg0dvPeiC+EBOSuvcjWiHAB16VWcJM2Pr9GZAqYeKg7azr?= =?us-ascii?Q?TnZE0eFUmyLa51L3yAtEjQYZcx3TvzhCMSBXxaAw1bjmlJM8QN2Cp9g+jV/V?= =?us-ascii?Q?2AQPGFGaoZiozc/jqxdSBVLux05G0M24Jve2es3hE2jcSf66zbjNtlbloms+?= =?us-ascii?Q?8xrkKVq6FRsmnMZTKg05lDI35Bt+Q2QiDrDP/lg5HyTcqYbE0ewJH4TWMygx?= =?us-ascii?Q?PWA9XB47npnGs2zdUBS8I1b7OQehp0kKd/oEMUaZ2Hx26vzwm0498GUiU/bo?= =?us-ascii?Q?R/6BrL5JkJIzCUWjW4W0zg0Qz5tT9xBEiEkyqu4CLeB+1fHReo6r7Fp/poyS?= =?us-ascii?Q?TVyDqBtR1/bp9/NgMqgicXRQR0Bdjd0AOm/jYbK5MIOAKk8/iPcVCnLNpzRp?= =?us-ascii?Q?o8d2FXNOZZdpQyYqm46FA2sp07LTqL0KGbIUQJFyLpPLPt6Qmuv9gKYyBaRc?= =?us-ascii?Q?3u/6RfcgepqRCi0YDC6eah5h2yNt2Op8Kh9Q//D+Dj/HtINQYRXXpCL3oqL5?= =?us-ascii?Q?zt6YtDx6zCckwZdP3FPA3LbrlraYegHnJmsMJgnygtjkAnYNmtWTn8iqSYhC?= =?us-ascii?Q?is8NUvRQX42skI4mJv0zhWv/DEEvRVwI48a7bsCMIFBOfue1wGHly1jcJjTw?= =?us-ascii?Q?ODwUxJKHQNCQ4hEXlzN9GfERct8pXnHBZkuwmhb0HpdDk6b2LBYs+VQy+Pry?= =?us-ascii?Q?6JHJYkQL9xUW6EZPBYgOgBU85r8nXVEzU4fMKyJeYaVoI2nqk+rNOkh98UAh?= =?us-ascii?Q?l64qZkqS9kEYoI5FxzyeUK2/K2vSiDIbTN/w9KuS61OZKQhmqZ9Y0RFb3RRV?= =?us-ascii?Q?rI/CEkXy+tfhegFWHH7GxwcNx2LAOz4x1ag+w23+w9JZSa9k7sUBkqiALp04?= =?us-ascii?Q?BkNCWZtl7W424gxVJ0TT+HrwpCxBQ4prrk7/de6LdxB/XD8AadnXht93UcPM?= =?us-ascii?Q?DBF7KUwI79PxYxIJOrOWkrHxUsGeOXtZx1XLNLZZGOuCIRPenDd1zxKKFYPC?= =?us-ascii?Q?/K7dGgjK2NSoggZdsegU0/8IM28XbqCKJc9hXytovd3Q1NBeNyTEcbipnCn3?= =?us-ascii?Q?2MIuPgMuP8TK9BKlrFs=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN6PR11MB8244.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5752a152-e672-4e44-deb8-08dba942decb X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2023 10:21:27.3419 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: RRmxV26EzSLAddtEDU6+7IskfRKj9jQZoGtSwCVt5yINobYKzTeq91IPWJZ2URpG/rDdlrvf6JhRNtNAp3Y6ug== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR11MB7567 X-OriginatorOrg: intel.com 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,ray.ni@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: l2bMFnBfdtXovNlGt8z5tfzax7686176AA= Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_MN6PR11MB8244D0EA52FF423C929F89738CE6AMN6PR11MB8244namp_" X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=P+tYfL4h; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}") --_000_MN6PR11MB8244D0EA52FF423C929F89738CE6AMN6PR11MB8244namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Ray Ni Thanks, Ray ________________________________ From: Tan, Dun Sent: Wednesday, August 30, 2023 3:35 PM To: devel@edk2.groups.io Cc: Wang, Jian J ; Gao, Liming ; Ni, Ray Subject: [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=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(-) diff --git a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceL= ib.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 e= nsure that Performance Protocol is installed at the very beginning of DXE phase. -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 @@ -73,6 +73,7 @@ UINT8 *mPerformancePointer =3D NULL; UINT8 *mBootRecordBuffer =3D NULL; BOOLEAN mLockInsertRecord =3D FALSE; CHAR8 *mDevicePathString =3D NULL; +UINTN mSmmBootRecordOffset =3D 0; EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *mDevicePathToText =3D 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 =3D SMM_FPDT_FUNCTION_GET_BOOT_RECORD_DATA= _BY_OFFSET; - SmmBootRecordDataSize =3D SmmCommData->BootRecordSize; - SmmBootRecordData =3D AllocateZeroPool (SmmBootRecordDataSiz= e); + SmmCommData->Function =3D SMM_FPDT_FUNCTION_GET_BOOT_REC= ORD_DATA_BY_OFFSET; + SmmCommData->BootRecordOffset =3D mSmmBootRecordOffset; + SmmBootRecordDataSize =3D SmmCommData->BootRecordSize - = mSmmBootRecordOffset; + SmmBootRecordData =3D AllocateZeroPool (SmmBootRecor= dDataSize); + SmmBootRecordDataRetrieved =3D 0; ASSERT (SmmBootRecordData !=3D NULL); - SmmCommData->BootRecordOffset =3D 0; - SmmCommData->BootRecordData =3D (VOID *)((UINTN)SmmCommMemRegi= on->PhysicalStart + SMM_BOOT_RECORD_COMM_SIZE); - SmmCommData->BootRecordSize =3D ReservedMemSize - SMM_BOOT_REC= ORD_COMM_SIZE; - while (SmmCommData->BootRecordOffset < SmmBootRecordDataSize) { + SmmCommData->BootRecordData =3D (VOID *)((UINTN)SmmCommMemRegion= ->PhysicalStart + SMM_BOOT_RECORD_COMM_SIZE); + SmmCommData->BootRecordSize =3D ReservedMemSize - SMM_BOOT_RECOR= D_COMM_SIZE; + while (SmmBootRecordDataRetrieved < SmmBootRecordDataSize) { Status =3D Communication->Communicate (Communication, SmmBootR= ecordCommBuffer, &CommSize); ASSERT_EFI_ERROR (Status); ASSERT_EFI_ERROR (SmmCommData->ReturnStatus); - if (SmmCommData->BootRecordOffset + SmmCommData->BootRecordSiz= e > SmmBootRecordDataSize) { - CopyMem ((UINT8 *)SmmBootRecordData + SmmCommData->BootRecor= dOffset, SmmCommData->BootRecordData, SmmBootRecordDataSize - SmmCommData->= BootRecordOffset); + if (SmmBootRecordDataRetrieved + SmmCommData->BootRecordSize >= SmmBootRecordDataSize) { + CopyMem ((UINT8 *)SmmBootRecordData + SmmBootRecordDataRetri= eved, SmmCommData->BootRecordData, SmmBootRecordDataSize - SmmBootRecordDat= aRetrieved); } else { - CopyMem ((UINT8 *)SmmBootRecordData + SmmCommData->BootRecor= dOffset, SmmCommData->BootRecordData, SmmCommData->BootRecordSize); + CopyMem ((UINT8 *)SmmBootRecordData + SmmBootRecordDataRetri= eved, SmmCommData->BootRecordData, SmmCommData->BootRecordSize); } - SmmCommData->BootRecordOffset =3D SmmCommData->BootRecordOffse= t + SmmCommData->BootRecordSize; + SmmBootRecordDataRetrieved +=3D SmmCommData->BootRecordSize= ; + SmmCommData->BootRecordOffset +=3D SmmCommData->BootRecordSize= ; } + mSmmBootRecordOffset =3D SmmCommData->BootRecordOffset; + *SmmPerfData =3D SmmBootRecordData; *SmmPerfDataSize =3D SmmBootRecordDataSize; } -- 2.31.1.windows.1 -=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 (#108141): https://edk2.groups.io/g/devel/message/108141 Mute This Topic: https://groups.io/mt/101047988/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/12367111/7686176/19134562= 12/xyzzy [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- --_000_MN6PR11MB8244D0EA52FF423C929F89738CE6AMN6PR11MB8244namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
Reviewed-by: Ray Ni <ray.ni@intel.com>

Thanks,
Ray

From: Tan, Dun <dun.tan@= intel.com>
Sent: Wednesday, August 30, 2023 3:35 PM
To: devel@edk2.groups.io <devel@edk2.groups.io>
Cc: Wang, Jian J <jian.j.wang@intel.com>; Gao, Liming <gaol= iming@byosoft.com.cn>; Ni, Ray <ray.ni@intel.com>
Subject: [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=3D4470
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/DxeCorePerformanceL= ib.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 lo= gging to ensure that
   Performance Protocol is installed at the very beginning of DXE= phase.
 
-Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR&g= t;
+Copyright (c) 2006 - 2023, Intel Corporation. All rights reserved.<BR&g= t;
 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>= ;
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
@@ -73,6 +73,7 @@ UINT8    *mPerformancePointer  =3D NU= LL;
 UINT8    *mBootRecordBuffer    =3D NULL= ;
 BOOLEAN  mLockInsertRecord     =3D FALSE;  CHAR8    *mDevicePathString    =3D NULL= ;
+UINTN    mSmmBootRecordOffset  =3D 0;
 
 EFI_DEVICE_PATH_TO_TEXT_PROTOCOL  *mDevicePathToText =3D NULL;  
@@ -236,6 +237,7 @@ InternalGetSmmPerfData (
   VOID         &nbs= p;            &= nbsp;           &nbs= p;  *SmmBootRecordData;
   UINTN         &nb= sp;            =             &nb= sp; SmmBootRecordDataSize;
   UINTN         &nb= sp;            =             &nb= sp; ReservedMemSize;
+  UINTN          &n= bsp;            = ;             S= mmBootRecordDataRetrieved;
 
   //
   // Collect boot records from SMM drivers.
@@ -297,28 +299,32 @@ InternalGetSmmPerfData (
           }
 
           //
-          // Get all boot rec= ords
+          // Get boot records= starting from mSmmBootRecordOffset
           //
-          SmmCommData->Fun= ction =3D SMM_FPDT_FUNCTION_GET_BOOT_RECORD_DATA_BY_OFFSET;
-          SmmBootRecordDataSi= ze =3D SmmCommData->BootRecordSize;
-          SmmBootRecordData&n= bsp;    =3D AllocateZeroPool (SmmBootRecordDataSize);
+          SmmCommData->Fun= ction         =3D SMM_FPDT_FUNCTION= _GET_BOOT_RECORD_DATA_BY_OFFSET;
+          SmmCommData->Boo= tRecordOffset =3D mSmmBootRecordOffset;
+          SmmBootRecordDataSi= ze         =3D SmmCommData->Boot= RecordSize - mSmmBootRecordOffset;
+          SmmBootRecordData&n= bsp;            =3D = AllocateZeroPool (SmmBootRecordDataSize);
+          SmmBootRecordDataRe= trieved    =3D 0;
           ASSERT (SmmBoo= tRecordData  !=3D NULL);
-          SmmCommData->Boo= tRecordOffset =3D 0;
-          SmmCommData->Boo= tRecordData   =3D (VOID *)((UINTN)SmmCommMemRegion->PhysicalSt= art + SMM_BOOT_RECORD_COMM_SIZE);
-          SmmCommData->Boo= tRecordSize   =3D ReservedMemSize - SMM_BOOT_RECORD_COMM_SIZE; -          while (SmmCommData-= >BootRecordOffset < SmmBootRecordDataSize) {
+          SmmCommData->Boo= tRecordData =3D (VOID *)((UINTN)SmmCommMemRegion->PhysicalStart + SMM_BO= OT_RECORD_COMM_SIZE);
+          SmmCommData->Boo= tRecordSize =3D ReservedMemSize - SMM_BOOT_RECORD_COMM_SIZE;
+          while (SmmBootRecor= dDataRetrieved < SmmBootRecordDataSize) {
             St= atus =3D Communication->Communicate (Communication, SmmBootRecordCommBuf= fer, &CommSize);
             AS= SERT_EFI_ERROR (Status);
             AS= SERT_EFI_ERROR (SmmCommData->ReturnStatus);
-            if (Smm= CommData->BootRecordOffset + SmmCommData->BootRecordSize > SmmBoot= RecordDataSize) {
-            &n= bsp; CopyMem ((UINT8 *)SmmBootRecordData + SmmCommData->BootRecordOffset= , SmmCommData->BootRecordData, SmmBootRecordDataSize - SmmCommData->B= ootRecordOffset);
+            if (Smm= BootRecordDataRetrieved + SmmCommData->BootRecordSize > SmmBootRecord= DataSize) {
+            &n= bsp; CopyMem ((UINT8 *)SmmBootRecordData + SmmBootRecordDataRetrieved, SmmC= ommData->BootRecordData, SmmBootRecordDataSize - SmmBootRecordDataRetrie= ved);
             } = else {
-            &n= bsp; CopyMem ((UINT8 *)SmmBootRecordData + SmmCommData->BootRecordOffset= , SmmCommData->BootRecordData, SmmCommData->BootRecordSize);
+            &n= bsp; CopyMem ((UINT8 *)SmmBootRecordData + SmmBootRecordDataRetrieved, SmmC= ommData->BootRecordData, SmmCommData->BootRecordSize);
             }<= br>  
-            SmmComm= Data->BootRecordOffset =3D SmmCommData->BootRecordOffset + SmmCommDat= a->BootRecordSize;
+            SmmBoot= RecordDataRetrieved    +=3D SmmCommData->BootRecordSize;<= br> +            SmmComm= Data->BootRecordOffset +=3D SmmCommData->BootRecordSize;
           }
 
+          mSmmBootRecordOffse= t =3D SmmCommData->BootRecordOffset;
+
           *SmmPerfData&n= bsp;    =3D SmmBootRecordData;
           *SmmPerfDataSi= ze =3D SmmBootRecordDataSize;
         }
--
2.31.1.windows.1

_._,_._,_

Groups.io Links:

=20 You receive all messages sent to this group. =20 =20

View/Reply Online (#108141) | =20 | Mute= This Topic | New Topic
Your Subscriptio= n | Contact Group Owner | Unsubscribe [rebecca@openfw.io]

_._,_._,_
--_000_MN6PR11MB8244D0EA52FF423C929F89738CE6AMN6PR11MB8244namp_--