From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web11.4785.1685678157118690536 for ; Thu, 01 Jun 2023 20:55:57 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=REvKygDM; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: dun.tan@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685678157; x=1717214157; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=OQcqq/eLpMtM7XuuPqF6mDYxfbMhXDA8UH0R9xJQQsk=; b=REvKygDM1WgW1JAH44SjwdLs+jhN9h3ulkCRl3/233FvNYSH3dSuCxhM scElmvZ46Sp07s3ej7RcpMKJ3IdrFaDxADZh7L+jEX14XNLHUsUdK4aoj bU21w1NYBI5cAZ5VyFtKkdn4/0s6BVpAPar/xdgmOkI3GJsxx5eUlWVfE zEFE0Z51bdhw0J2jn1KKX+uKcfOK0v5xeB3SB6/XdAQs3QjMActTBliNn ubpec5otKpdKHbZFgShz2totn3bR6Phq3Kv9h1NnQnPeU9yU7dSsEcXjs juhK1gQMSOTywSbmGkbpvOcY/y75hncSjaJAJFsecQTmu1wyskeVO8fJM g==; X-IronPort-AV: E=McAfee;i="6600,9927,10728"; a="421579630" X-IronPort-AV: E=Sophos;i="6.00,211,1681196400"; d="scan'208";a="421579630" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2023 20:55:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10728"; a="777483250" X-IronPort-AV: E=Sophos;i="6.00,211,1681196400"; d="scan'208";a="777483250" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga004.fm.intel.com with ESMTP; 01 Jun 2023 20:55:35 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) 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:55:34 -0700 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.23 via Frontend Transport; Thu, 1 Jun 2023 20:55:34 -0700 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.23; Thu, 1 Jun 2023 20:55:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VIKcMvvPg9ymdbF3NWDq5tWLPbNLVfREI0mTZgxG7xRJHiFg24Q3GPMtEC7qhNO6CLS+aAcpAoJdIftMBcQiH83mwivBlscyBAtRSvTdavF9x8K/aEnoqQWpH6DNIOaCwnSrlIlKvXC5TYB6y2T6gwfEpBTduZJzqy0l5X2NqAlaROQPY7w1pJDSfZ0JS7qNxvuSB2buJ1Wu47qbzTULysTLo3+BE3IH2pit/xdJh4Ta+JcAz0yhzsR2mTJx+W7YgUzAVQrzIKt5lcAiPACSlOsSVDvLhTIL4oxXN+kbRUb/RoYJsbg+e3J/ZR+HAw+RrxHH5JzPrneWfigjLdTXYQ== 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=t0F3nwpZEsYqzKEA/Gibnj2kJpGqNtLXSXQafQfbOGA=; b=YKbApyFP/pSDv5eJCBVMlrc9+N+P72sXFO1cyEse/JKeKbeZNmqZPNzf+YiWEf7ntt13lQ82byKb3LI6szfrZhSRMNolIgQVdORjPqR6XPTo0CKP1XTS3GFWbcPJ6viOa6BLYL4brHa3/LeWVvitcJ1nJSkkxDnNmFmoKv7ueqaLNKj0nTGWgo8M5pBFL+ftHE8v8uZXrGIWOeSSRjY/pjx9Zng/6uxi3eM3n6rIb3oqyr9yPue/CMkuign/RaSQFsHQaKhKzlX58qOayhpwRngWraSt8JzORX/7ZJ9seoxlL7RpgS+I39zl4uGkD6UIliLWF2PdMCWJNkyO3OIusw== 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 BN9PR11MB5483.namprd11.prod.outlook.com (2603:10b6:408:104::10) by DM4PR11MB6118.namprd11.prod.outlook.com (2603:10b6:8:b2::20) 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:55:26 +0000 Received: from BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::3023:34d3:bd4e:7901]) by BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::3023:34d3:bd4e:7901%3]) with mapi id 15.20.6455.024; Fri, 2 Jun 2023 03:55:26 +0000 From: "duntan" To: "Ni, Ray" , "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: AQHZh91oK48vLym8c0WlTU3pXh96hK929nOQgAAAPSCAAAFAwA== Date: Fri, 2 Jun 2023 03:55:26 +0000 Message-ID: References: <20230516095932.1525-1-dun.tan@intel.com> <20230516095932.1525-14-dun.tan@intel.com> In-Reply-To: Accept-Language: zh-CN, 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: BN9PR11MB5483:EE_|DM4PR11MB6118:EE_ x-ms-office365-filtering-correlation-id: 88bc2495-970c-48b1-645a-08db631d32f5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TOvnKY9WDSIsHzvRHc+lAXY1XLdao7HD1WGsMQdNm5knvISJLnA+4GH+NWBkaVEt/sYSwZ/1DrT+B0RmQYB3ToMhbm7UYlRtpfLRKP/iCJclNH2S09HgZjTW3dv4JFY5P7EcVnHkmRu2XY8VGHGqF1O3BMVNW9PpnFZLs8OrPibvDJcNLyX12dIZztxYjiFvBy0KQvd/ChlO70RC9D7TZ+XeEgLJm2lYdYVv9pOTh6FEXfRE5HsTn/GXMIRtZjwYnHPyJdJiXvjabJisZbEBdWIUd5O8bOmeEnp7q7pd/xYTH3wSFEWnbsHIhwRidvJtAIN0Sg7bXqluCr2FuRfFh3xprbCXkAwDdHWYgWHPh3iM8PD27TDAjU/LS8LKsUOc/jy8bg7uDWdA1tftnmyLx+xc2W07JbUX1wnZTZPCXqQc02OUOWQhDF/tuNvDxx4ZFA0u4f8zN73A9RmPVPyGIR8MCwZGRUWZFwJMjSLWu/UyD9gb0t+HcZLlp6L0JSRf3lGY0NawZeYy5T7nokYQduE6T4m/0Rx6W4nZZl8pFrIIzqh4bZz6ofWiIoxZFBgPmFF14KX6NYFYdVE6g2qgSTAiSBBUZ5lpxk6Dz9AKgGTy53bOh+CtTPa88S3N9UDqQ243/500iko01Y03iH4MJQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN9PR11MB5483.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(6029001)(39860400002)(366004)(346002)(396003)(136003)(376002)(451199021)(6506007)(186003)(9686003)(53546011)(26005)(7696005)(71200400001)(83380400001)(41300700001)(2906002)(316002)(52536014)(5660300002)(8936002)(478600001)(66556008)(64756008)(66446008)(66946007)(76116006)(66476007)(110136005)(54906003)(86362001)(55016003)(38070700005)(33656002)(4326008)(8676002)(122000001)(38100700002)(82960400001)(66899021)(145543001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?jvvsawT8N41pWTvisamOJNhdfs2M7otLKK9ijVxVZuzTggHhLOektvW2IouY?= =?us-ascii?Q?RG0PPtpvTsmbDNH0OajRnHM6RQEQTkv6pnk9000qc7+Ii8HaF6u0caAhOgSA?= =?us-ascii?Q?Ysw/nmGY3VtrB9YROlPExiGCmRRTx/ouuYKzNESeGEI+b0Ivsln6qdb2Qcwi?= =?us-ascii?Q?u1IPzCbGTi9rln28xieMpLRclxSxCwNXIkWGRrK1zEVV/H2n6idbwXmSw7QF?= =?us-ascii?Q?kOnScbqvOCcXa5I+EAtZV5Wrm4A5QqbquNwG2rmIbwOzxhzi54QkEkQN81gt?= =?us-ascii?Q?VCYrTO7xbLXqPNOQjORcTeCLd+Qc/Lpa7RTYi9O1L31JJOAEqexvPbdepKtJ?= =?us-ascii?Q?eyxZLEDotbTR605IizLL16W8RLxgCZYqHjEIVa4cTthhkBcIvLUtzRV5CGGi?= =?us-ascii?Q?pa5QFZZDeE4XhrgTVPxtP84+BcS2e0ow5jj0w9FnWjcQ1pF1v3jBsmRem3ZN?= =?us-ascii?Q?a+QVSK8aY6ViCFW4rOE7yFX5ciVEHY6RlQAY9rw1XNB7iH2wVeJUX8MOHjFZ?= =?us-ascii?Q?m2ffl6ehOw9t8FYzDSc7FeNm8XJPdYPdmLKAMJDPR2Xi00ZXf3X0rkSift2k?= =?us-ascii?Q?+WhwcAVpz7JqhSZGRjhcplp2xcPHeAfyhwHFdC5rrTi9ccNkprjb001a4d5p?= =?us-ascii?Q?sVrI9h76TPEzS2bQqXkV8F6oxSZPbOTohsGyjbQO0eo1avanjp7ceTcVSSKA?= =?us-ascii?Q?N8CHzndNIwgE88g6ZOgPW5XhjlxBSmv2IAypQVHCUbmqsE0d6TAdXt/6GAKJ?= =?us-ascii?Q?1p3ld/28bXAvcJ4ZLGBmDpnghlW/D3XAezQlp6pDC/Y06A+zSHas47PkG23a?= =?us-ascii?Q?qKbMLAw5WAPBGrgGqHpSkJg3CumryrafsAy+84LHcInfMf6SKj4GywypGmF7?= =?us-ascii?Q?RAtWHx15DpofysPMT/+87YdU23gWjQNxUySS3gob4q3UG4HQiEl1Z1RIUbIW?= =?us-ascii?Q?snb77jrO1L/o3Xg3gAGxyjAAR9qR/cU26D0uUMXHoJsIduVD6iDybFbdhMpv?= =?us-ascii?Q?6I077+xGjZF7dV7OrsKYQUNdG3Oy3Alf5KDJMcRnbSpuNpmDOpIogD5TVVV/?= =?us-ascii?Q?Us/11DQHV6vHcvfslKzTlaWIOhyEYdxnLNNLluZlaRDcDD1nSel+0Km+5ELv?= =?us-ascii?Q?0cD5trn3xlj6IO0pO2N5fzbhDss0KT1JzEcDscIhTw4PLn7tv99N8tc4+shu?= =?us-ascii?Q?VXBk9TjNuF45hgxKJOPxBeLQNYuxaslTZM9pNxMNB1NlaAgXawR4qgMJYp/n?= =?us-ascii?Q?HZVZu9TZtZo4HwC39H73vnTV+3rxDyjvkeiAvFWaajeNOPeUyhKsrGgolsLq?= =?us-ascii?Q?nBzufAUU7NI3KpBV3hZhHzgnqYkjHcYILG8UFDYYC2QOkcscVMDgIMDlU5BB?= =?us-ascii?Q?bYA6ipfV3cFcx7o/wcp0gOZCgcwU4LCke0vnDvYfI0ykxlEV+1Vb3sHydBwT?= =?us-ascii?Q?TBEBf+I7e9p464floT9I6ipl5xQFFKMrdFmb/Rheur9/bWMI6w6vfwFwob2d?= =?us-ascii?Q?NZUuq2+sDc2TNkmIbLMPpvRvtCPtxS42lLPxXFt3FSbR2R2OfsrQtLQjAFcK?= =?us-ascii?Q?OUvZmNX97vYtd2Qo2NA=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5483.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 88bc2495-970c-48b1-645a-08db631d32f5 X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2023 03:55:26.2811 (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: MA72y5X3IB4Y/xET/BVU51z5b75MUKchv/ZE6BxaBdUD0dz1FsDB61LTVJZbyPhAgAS2IpcUO/maG2Q8H1DbeA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB6118 Return-Path: dun.tan@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Because the code logic in InitPaging() in Patch 14/15 requires that the two= arrays have been sorted. Yes, the code logic in FindSmramInfo() to deals with un-sorted mSmmCpuSmram= Ranges array can removed. Will add more changes to do this. Thanks, Dun -----Original Message----- From: Ni, Ray =20 Sent: Friday, June 2, 2023 11:36 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 Rea= dyToLock 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=20 > ; Gerd Hoffmann > Subject: RE: [Patch V4 13/15] UefiCpuPkg: Sort mProtectionMemRange=20 > 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 ;=20 > > Kumar, > Rahul > > R ; Gerd Hoffmann > > Subject: [Patch V4 13/15] UefiCpuPkg: Sort mProtectionMemRange when=20 > > ReadyToLock > > > > Sort mProtectionMemRange in InitProtectedMemRange() when=20 > > 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=20 > > memory ranges. > > > > @@ -397,6 +423,7 @@ InitProtectedMemRange ( > > EFI_PHYSICAL_ADDRESS Base2MBAlignedAddress; > > UINT64 High4KBPageSize; > > UINT64 Low4KBPageSize; > > + VOID *Buffer; > > > > NumberOfDescriptors =3D 0; > > NumberOfAddedDescriptors =3D mSmmCpuSmramRangeCount; @@ -533,6=20 > > +560,14 @@ InitProtectedMemRange ( > > > > mSplitMemRangeCount =3D NumberOfSpliteRange; > > > > + // > > + // Sort the mProtectionMemRange > > + // > > + Buffer =3D AllocateZeroPool (sizeof (MEMORY_PROTECTION_RANGE)); =20 > > + ASSERT (Buffer !=3D NULL); QuickSort (mProtectionMemRange,=20 > > + 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",=20 > > Index, mProtectionMemRange[Index].Range.Base)); > > -- > > 2.31.1.windows.1