From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web10.4588.1685676945889036991 for ; Thu, 01 Jun 2023 20:35:45 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=WN7qJVZl; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: ray.ni@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685676945; x=1717212945; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=b3Eo8XRAt03Mw+IbE4ZJmfMV0MTsl8l7T2SzU+GGWRs=; b=WN7qJVZlGAcJmxgypMQUlWDeOvDiBPGTTAfU8iv1vwKQoSRl9rxgsNMk kYRhX9QgcT0pHH047HUDpRpqECGlJoDRL66TLqSlfNbFjH56PdTY8tDvB UnB5R0R151kk0SCutic7wVzqtKiRr6MyYL3ZIwtwwwU9FhLoomIvFS7/U +j4ILXHNZ5cSaRsjuZfaCVE22JCrQ0S7pvhAl2grpO2vMKaqj/+/2z6jj gm2cOlJLhcUwbEJs1TSadCcPKQstOVhJN2tGx/igb9OGvqSDXSxPCC5jN n3x/732x8pGlYoyNVVF9EkDDB/5c3426TYq1V93zKMg7VMDC+sjOqylMU w==; X-IronPort-AV: E=McAfee;i="6600,9927,10728"; a="340381735" X-IronPort-AV: E=Sophos;i="6.00,211,1681196400"; d="scan'208";a="340381735" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2023 20:35:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10728"; a="658068170" X-IronPort-AV: E=Sophos;i="6.00,211,1681196400"; d="scan'208";a="658068170" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga003.jf.intel.com with ESMTP; 01 Jun 2023 20:35:45 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) 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.23; Thu, 1 Jun 2023 20:35:44 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Thu, 1 Jun 2023 20:35:44 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) 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.23 via Frontend Transport; Thu, 1 Jun 2023 20:35:44 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.105) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Thu, 1 Jun 2023 20:35:44 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bOtGiLRwSNblojukEQN4PW+QSfh1ThKuglM1aJk+hgp/1sohzuEo3xvzU2zfdCSeipAEIvicFvQTX0YnVLz9F50OqxS5kuwVsH0ragEDSQphp5p6/dUWqd0xfV1D6E2nXNNvQ9ce4m9O9IT4X+up8MmpPY9b2aIDTh8FSLee4apxgsIVZTSS+ebw8taIAbg4h10iV95p8GwLiEsoB0G2Gyq1fEPrqqHtLQRT8Am+eSnObqoAJFSG9kpcQCXxgq40dNUiC1aZBQnqNuDaS9VnverOqB6URB82oP1b6VLLaC/Nkh5BwNrxmeVtmv5nhiTov9RDyk6wR8Jf/A6Ms5wCXg== 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=Ldmhtp0eYlatzfijSdfIKJMHV0C+fMkP3kWZfKRTldQ=; b=Wg35T8r9acU5xLt6QawFYj/kkKeN/Rl2/YQDUglbBS+3nXD3tL8X8R0jJH2AgDVYKwr2Pw7P0V6ur12Y+26slJe8LFYXfbYx6jpCobvKmSnrvgyuLCFK6tJCK/uBp4oQdf1y4ugaBAybpMNCA8103PrE3MnH9320lmpeIm/uMbtAeln+k8M9f3KAn2bAMAeYLDIi79cLLq1mLNMlu4anlMmC7B7xHkRTe1F6AAmBQ0fCDIX9Mh4kDVJpreRvFW/aoweDOXbhR3EGIEJyXXjWsTM7Ek49JmTy8ktUZMVS8eLn/RdfUJS9FbMIwUioLrEsZ/fyAXL729BxyyA57VnXFg== 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 Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14) by CH3PR11MB8238.namprd11.prod.outlook.com (2603:10b6:610:155::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.26; Fri, 2 Jun 2023 03:35:42 +0000 Received: from MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::892b:b8e6:bab7:635d]) by MN6PR11MB8244.namprd11.prod.outlook.com ([fe80::892b:b8e6:bab7:635d%3]) with mapi id 15.20.6455.020; Fri, 2 Jun 2023 03:35:42 +0000 From: "Ni, Ray" To: "Tan, Dun" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Kumar, Rahul R" , Gerd Hoffmann Subject: Re: [Patch V4 13/15] UefiCpuPkg: Sort mProtectionMemRange when ReadyToLock Thread-Topic: [Patch V4 13/15] UefiCpuPkg: Sort mProtectionMemRange when ReadyToLock Thread-Index: AQHZh91oK48vLym8c0WlTU3pXh96hK929nOQgAAAPSA= Date: Fri, 2 Jun 2023 03:35:42 +0000 Message-ID: References: <20230516095932.1525-1-dun.tan@intel.com> <20230516095932.1525-14-dun.tan@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|CH3PR11MB8238:EE_ x-ms-office365-filtering-correlation-id: b8575b84-0967-4825-b749-08db631a711f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZgexcwXRPGSTLVcdudRcogTUuVjKoAUW51y6owhdSeppgcqHopSyr1033DTX6IbXl256gqwLF74bJLZ/8X4JiA3oLkxUVYQUrcNwTNcA6ds28YsRc7+8lbMvBSQDAqleYh1iXS1m/JP3zHdHCRRgCpNl+vMvo7TrVA5JxDkWC60wm70Y87Y09rf6WsSuggxDg7bGKL5GnpaSuGTu6i5QGZdWj3DsRrt4dcrHSxiUtrztrJ6HgYiPXtAMIN23hN1SZxgikqL04CEOKtgPVzMNYNgnFLO9lmKSFLCwBRAjthwylVQnwURrefoW5PS9JrS83pGKIIlNsb3mwEC1lXC8YQn4geUzHGR9n+Xw515LlSCkUbIhh6A72kdMS1Je3cAE99N7qJ4qvZptI5oSurizkjcOw9hDtPNCWnmqiAGcuph0/I+ws6lPZxZkRjbeU9lI8q3l3diA/kcTH12z9yBZ07zoEuVrHO55q9x5Wjs8jIAVHWu7w4VgYmZ+ExH6vEnUkQ1IXEQ3ydD4dDTPy78ouDbWtXW1LIsdlJCwtDmRkvIFNu+8OL0Xah8q0hwvLtIBXs7mMJbSUNtzvJug/QkmnhI9harGZgRpiTotrrzD+pI6rbVlCLAlJtWvHoZWXlgabKg94yA2iXFsh457TPywJw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN6PR11MB8244.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(6029001)(376002)(39860400002)(136003)(396003)(366004)(346002)(451199021)(82960400001)(38100700002)(122000001)(66899021)(110136005)(86362001)(478600001)(66556008)(76116006)(66446008)(64756008)(66476007)(66946007)(4326008)(33656002)(38070700005)(55016003)(54906003)(7696005)(71200400001)(53546011)(186003)(9686003)(26005)(6506007)(2940100002)(2906002)(52536014)(8676002)(8936002)(5660300002)(83380400001)(41300700001)(316002)(145543001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?kiqR+mWss49xVBFw+010GjCeBoEqUcA261Yj1MIouDF51X2S1NB8vt3gAwzO?= =?us-ascii?Q?4i4QBd/puierCVMrfLozB/82VxvQTaoSdGuxTznl7Qs/sjdPFlafdBQ8Xm3l?= =?us-ascii?Q?C7aa6x25wakqJMTnzbAm1NAf0BORcAw87BOCv4j74dsbEm50fFZyBp44dJQK?= =?us-ascii?Q?CUr8VwBmFeww2/s6KSbeXoANfM0tbAUvJjkKr0jFviktd+8mECvXWZ3t4jBt?= =?us-ascii?Q?+6SeDbUq3RC1k/5b49dQXVj8eVvZsZ8928gSduTEladgU/RDdS9nLqo3Tgsi?= =?us-ascii?Q?qeo2LsFqVGfkILVK9Lt0grtUbkTBB7kDdWkypoYLKsqfqS4oei64+60CX7Y/?= =?us-ascii?Q?T5pK+8GbYIz02z5tjqzQhI2+rfsFlFJ7m2hSF5xwcO/ZWZhduF1Ga3RNnccc?= =?us-ascii?Q?T+22DyA+hS9tTQjQ3HVoJS3HRYzbwLLr/ZGKHcoE1TNZIokxh4wI6b4haR11?= =?us-ascii?Q?VMC2HCU4qyGMuP5aA8nBG+GawCh36Lr+2rHL5DK7S/j1G5p8fb2uZl/a+59Q?= =?us-ascii?Q?CeoIjEe7i1+e3xcshnOXPAjN1N9FFXEBIKqU2mVJ8yJbz1N8GffofPEd4Zi5?= =?us-ascii?Q?XG/+AXh0r+3Yvmo7zPjJJR4kHTIsYITBGxRHBlxLinLRd2W+xUS00SC9vW1K?= =?us-ascii?Q?CfJaOt4nVOxyasq4l2sTqrn5PhdvmgxjwdOCOQG8H6iNKbmAAe4WrRaZ2Rid?= =?us-ascii?Q?WxBeHS+2S8f8rwUGnIzC6UCafn1G4eK7RoleUDp1iulwBraORRxdt5qrqJ0X?= =?us-ascii?Q?oCw4EhHPxb3Ii0kW1qRdmxjuIK+KhSjA17OkmbuiuQqqiMHRrcD7AojnGq3S?= =?us-ascii?Q?PIqkBkSnHSgk2+rAosLz1JPaskFaKZZjviFHl+xRyUNDiqVa2b/L2/nShw24?= =?us-ascii?Q?ZmL+xxujkU5sU0uenSb3txLqcj2fJupzq194kv7KqDvHvuzCt1REgHoNlYjW?= =?us-ascii?Q?MVZLJT3n3l1UCgYtDvhXwp9cD+uj1rYtHbpib5gcoKnTZEe3brpKEuNkJkM7?= =?us-ascii?Q?1fUVIddt9VMoZMRHtyPTFUrUKNsIheu21ePWbeSUs/aJ72OlYZUi8EuTx/f8?= =?us-ascii?Q?I8LZrfntIq7VlvxFuVFc35PqB8L0xzxq8Auu94J2STZMY5L4hU4WGZ7SDu67?= =?us-ascii?Q?folDdXhnIT7Mn2RDrd7c6k67fQhLzhPZGHxM0s2J5rD0ixZc/jHNGuMG3dR8?= =?us-ascii?Q?YUwbf7DNYr6FSlK7e3uWerVm9JbrP3eDDFzkI6CR6+HQAO+VofvwGbCZSXOi?= =?us-ascii?Q?4szpE421CpmHT0E5lgC3DZNzH9jbWN/x9XFtfqNgDIL4V5VIpJa0LIE+xKUj?= =?us-ascii?Q?cESw29XThCLFXrDfTWX67yY+TUYzERpBmnfMF2b8lFZs0e10O1jDy+K3qh2e?= =?us-ascii?Q?kVqosizRhqhacJeZVYYrpr/cExFzTWBSFg5nismvYt7SAVAK2objHvuk5lCu?= =?us-ascii?Q?HoIy64bufmAoCgJx7EXFMtobajZltSHY3haSqgrAYs3gID4ZSjXbNRk2KczX?= =?us-ascii?Q?UqeGhGovWD6ClkdyPEi/IU8NhfkQwgi2RqAnBjVWOjx2kSoVpnTML3NslhHe?= =?us-ascii?Q?bgL7rypoXMR4v/BEwyk=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: b8575b84-0967-4825-b749-08db631a711f X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2023 03:35:42.0929 (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: +LukLHp+EMDJ6XxGahDOrQjP/Ixw7Jl6YknRXpYPV07ZUaANZqcRFvdfP0qMyK3afu/RNnoOEBzID+WpawALNQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8238 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Why do you add the sort logic? I thought you might have further changes to remove some unnecessary logic t= hat deals with un-sorted array. > -----Original Message----- > From: Ni, Ray > Sent: Friday, June 2, 2023 11:34 AM > To: Tan, Dun ; devel@edk2.groups.io > Cc: Dong, Eric ; Kumar, Rahul R > ; Gerd Hoffmann > Subject: RE: [Patch V4 13/15] UefiCpuPkg: Sort mProtectionMemRange when > ReadyToLock >=20 > Similar comments as patch #12. > You could avoid pool allocation. >=20 > > -----Original Message----- > > From: Tan, Dun > > Sent: Tuesday, May 16, 2023 6:00 PM > > To: devel@edk2.groups.io > > Cc: Dong, Eric ; Ni, Ray ; Kumar= , > Rahul > > R ; Gerd Hoffmann > > Subject: [Patch V4 13/15] UefiCpuPkg: Sort mProtectionMemRange when > > ReadyToLock > > > > Sort mProtectionMemRange in InitProtectedMemRange() when > > ReadyToLock. > > > > Signed-off-by: Dun Tan > > Cc: Eric Dong > > Cc: Ray Ni > > Cc: Rahul Kumar > > Cc: Gerd Hoffmann > > --- > > UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c | 35 > > +++++++++++++++++++++++++++++++++++ > > 1 file changed, 35 insertions(+) > > > > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c > > b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c > > index 5625ba0cac..b298e2fb99 100644 > > --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c > > +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c > > @@ -375,6 +375,32 @@ IsAddressSplit ( > > return FALSE; > > } > > > > +/** > > + Function to compare 2 MEMORY_PROTECTION_RANGE based on range base. > > + > > + @param[in] Buffer1 pointer to Device Path poiner to compa= re > > + @param[in] Buffer2 pointer to second DevicePath pointer t= o compare > > + > > + @retval 0 Buffer1 equal to Buffer2 > > + @retval <0 Buffer1 is less than Buffer2 > > + @retval >0 Buffer1 is greater than Buffer2 > > +**/ > > +INTN > > +EFIAPI > > +ProtectionRangeCompare ( > > + IN CONST VOID *Buffer1, > > + IN CONST VOID *Buffer2 > > + ) > > +{ > > + if (((MEMORY_PROTECTION_RANGE *)Buffer1)->Range.Base > > > ((MEMORY_PROTECTION_RANGE *)Buffer2)->Range.Base) { > > + return 1; > > + } else if (((MEMORY_PROTECTION_RANGE *)Buffer1)->Range.Base < > > ((MEMORY_PROTECTION_RANGE *)Buffer2)->Range.Base) { > > + return -1; > > + } > > + > > + return 0; > > +} > > + > > /** > > Initialize the protected memory ranges and the 4KB-page mapped memor= y > > ranges. > > > > @@ -397,6 +423,7 @@ InitProtectedMemRange ( > > EFI_PHYSICAL_ADDRESS Base2MBAlignedAddress; > > UINT64 High4KBPageSize; > > UINT64 Low4KBPageSize; > > + VOID *Buffer; > > > > NumberOfDescriptors =3D 0; > > NumberOfAddedDescriptors =3D mSmmCpuSmramRangeCount; > > @@ -533,6 +560,14 @@ InitProtectedMemRange ( > > > > mSplitMemRangeCount =3D NumberOfSpliteRange; > > > > + // > > + // Sort the mProtectionMemRange > > + // > > + Buffer =3D AllocateZeroPool (sizeof (MEMORY_PROTECTION_RANGE)); > > + ASSERT (Buffer !=3D NULL); > > + QuickSort (mProtectionMemRange, mProtectionMemRangeCount, sizeof > > (MEMORY_PROTECTION_RANGE), > > (BASE_SORT_COMPARE)ProtectionRangeCompare, Buffer); > > + FreePool (Buffer); > > + > > DEBUG ((DEBUG_INFO, "SMM Profile Memory Ranges:\n")); > > for (Index =3D 0; Index < mProtectionMemRangeCount; Index++) { > > DEBUG ((DEBUG_INFO, "mProtectionMemRange[%d].Base =3D %lx\n", Inde= x, > > mProtectionMemRange[Index].Range.Base)); > > -- > > 2.31.1.windows.1