From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web09.6421.1631602585266972761 for ; Mon, 13 Sep 2021 23:56:25 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=F0oV2ngM; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: ray.ni@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10106"; a="221572393" X-IronPort-AV: E=Sophos;i="5.85,292,1624345200"; d="scan'208,217";a="221572393" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Sep 2021 23:56:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,292,1624345200"; d="scan'208,217";a="469988438" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by fmsmga007.fm.intel.com with ESMTP; 13 Sep 2021 23:56:11 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 13 Sep 2021 23:56:10 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 13 Sep 2021 23:56:10 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Mon, 13 Sep 2021 23:56:10 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.174) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Mon, 13 Sep 2021 23:56:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Msd4ggnxhMKvQh2fjLLRxca2bQutk0iRBMmW1XczvAt2BsWLIDjNGyWUcLk9DqBHwalcDobz5zVaNOOU3+K8v18PMv80dmYkCgrG0d+qf19GxLh7aW/tNfpw/1qETd9lEVQIlw7ZE3/Bs+ERQNIAeQ3JpiELbyegmzMhyUp14SNDNZJWYBIU8Ipry3KrkbSPa3HDmp7NOVFsuXuCDiSS7dPRx/A8YWOtEcvMBvQsXQgFeoFeULo5B5Q2s5LDOaWs84ss055A+alwJE5PLYgYN3WOREcMmnYxKf6XduS5y+7E508niXNqKBsmHsJhBXUDDH7eMDZbHSpLd80jBadWQw== 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; bh=h1YcxT6ZYAO8iT8R2j5vQfeTcHAld9XI+XGidKzzLfs=; b=VkvgGoCcAvjPlXbVxPtG2DNx8Sh1uLx3AoBpB7yvksJgBwsJIygsXRQaMNv4KT2ZaV7idxDkm3TZK7LSQ5QRj54MkJUJ+ELlMydA7cGU9bbczCGb5T5j7ZIpolTBmnZGEvTiNl0aeekSvm+NakwiYPHZHo5XaRqJnf9QG6vjXmOF8TKwlk1DReYXt3xG0EGaqIdgCem6gUT551F3jj3PIYWJq28tvPb+SOVTohomaiyxpMUnDdDzP3+5mjR0EIKf3Pn2Q8iKhX1wQGWH3IpjwhkezTQLXtaVNoNQhnchGP88XYYqrJvo0UI2+YMaT+T+7cd90dDIA3qJSj1xBxO7yw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h1YcxT6ZYAO8iT8R2j5vQfeTcHAld9XI+XGidKzzLfs=; b=F0oV2ngMuGrCW5lK+4xFdBjm3e2W91e6fb8ji84LPm6bh4RctMbydHBj6jCmVkatx6QSbnI/fuOlBAFWmU8y8RMBQemo30opUSukkbwkHJSL6WWWFq7/pBQlbBoDh6A6hmVCL0RIi+0kDBe1L68xXxVyOyfTtgWK8GJGbxWBuD8= Received: from CO1PR11MB4930.namprd11.prod.outlook.com (2603:10b6:303:9b::11) by CO1PR11MB5137.namprd11.prod.outlook.com (2603:10b6:303:95::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Tue, 14 Sep 2021 06:56:02 +0000 Received: from CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::50ce:c9a3:ab37:9fac]) by CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::50ce:c9a3:ab37:9fac%9]) with mapi id 15.20.4500.019; Tue, 14 Sep 2021 06:56:02 +0000 From: "Ni, Ray" To: "devel@edk2.groups.io" , "Ni, Ray" , "Kinney, Michael D" , gaoliming , "Liu, Zhiguang" , "Wang, Jian J" , "Gao, Zhichao" CC: "Chan, Amy" Subject: Re: RFC: Add BaseLib/QuickSort in MdePkg Thread-Topic: RFC: Add BaseLib/QuickSort in MdePkg Thread-Index: AdepLqSqNr3XR8BzRta7Fw6/X0zQqwABtzSw Date: Tue, 14 Sep 2021 06:56:02 +0000 Message-ID: References: <16A49BAD7CBC4A70.25300@groups.io> In-Reply-To: <16A49BAD7CBC4A70.25300@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.200.16 dlp-reaction: no-action dlp-product: dlpe-windows authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 045151df-e326-437c-5652-08d9774cb76c x-ms-traffictypediagnostic: CO1PR11MB5137: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2512; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: svo6mhEul0SWgl937VwX7kwJ7GQ/mGyT4kRJuVMMoNwmidppRG5lPBweRWwzomTdlfJi3TPxMT4WVDt3WlbfGCDhTrY5jPQOuGkazHgN65mcISUrQU79vA7cECT7HC1O50z19hkArTUKqeBHcg9fMWeXWUZ8K/qcXaABWbuPNSPyjUn5uJr3b20A8vkEvpyBmrVGnESNVCY31re7otfTMxXzZkjUVbGPtFqyG5dqpoaDIu30EF9U7GtImlvoex/2vV/xeKZnD5I2He8JKcjbhj6F0GftoDUufhP8rfMxUFgYBOr4l6Vk/S3Li1fCXc7zZ6z9GMVrFXmdBcNkxFsXDUH9SwiLN/q1Z7ZzFX2NkcI/CYDfaQLI3B+PO4i15wgTlHLwQnj3gLg2f8NeFRdya469kEiX1ezHBaJ+cHZzOGJHpsr5cy0cjsmvjwpegpyAE2UjbrgznVDCKXfZ5wHp3bI2JaEoNWyHgOektODpYL5KSCPaVCIr3vG6HsAKZqRA77Bh13YaSslZmuiA518UnHxow1+i0uZJ1EMXv+Terw3v3IwBKgAtPLd6/bTk6vACV8dS1QwgH7hpDolHaus9l6ZL5RBkrq9NBzXsGZsAszkQZOMldS/zP5Zo+UwuvkzQBPSQdbzrtYKQdEvybEbNegierD3LlHh0RWbWJ9SxOQteVCm4Qs+TNNtyaLVMzBVnEkZ0F1cd01WIlCuYuV4Mpp02+59L8WcFIqhaAqm233bqbahXtEMnZW22tjRaiappNFpoOO+m1dihsYp6EQ0HCz0WzB3tNsqsK1oZIWNgcmX9zfJYJx5ov6DDiT3ZITgrlf1UcwZA6hKjspz92fHzjK4lvAciHyzCTWNmzS1/VeA= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4930.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(136003)(346002)(39860400002)(396003)(376002)(66556008)(66476007)(66946007)(921005)(26005)(64756008)(66446008)(52536014)(7696005)(316002)(38070700005)(5660300002)(8936002)(6636002)(53546011)(6506007)(110136005)(186003)(8676002)(38100700002)(76116006)(2906002)(166002)(122000001)(55016002)(86362001)(71200400001)(9686003)(4326008)(107886003)(83380400001)(76236003)(478600001)(33656002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?hcNZfzmR1XEwE9xd6irEnsNAecRVi85MmR1LU7mXYRRbvdh7DenwMSqv0M06?= =?us-ascii?Q?vhI7jf5AFBar4eSetKdXeeaTJzRr3EjNMwCkguyNmZko44NyfScvXq6qXESF?= =?us-ascii?Q?Zek9D78GaTUH+YiTzajB+CNyRl5wWMqolsEvSDzxJ7j/TwuDVvE8EgrY0Sd1?= =?us-ascii?Q?dBjb4ar/1KZqkjDPbEYLJWVynLY40yVt2C12N2bZik87Y2uaXNxUpAIWSpBD?= =?us-ascii?Q?C7wUcUeNPZeO+KRsDxtZ9sYgXor8v2w3gYC94yUSeUPyhioC6LYW3wSRdvT4?= =?us-ascii?Q?6zAH5q0eMfMXijjmgzxLd8oXAz5A99GdqJNzcq9gb0XvLk7fSuJ6jhOoT5qp?= =?us-ascii?Q?hsa1JSrI7adSLhNGNgkCyTDC6kZmjEiEm/7SOgylSlS4AAW+BSs6t6dZtDDX?= =?us-ascii?Q?OLnab3RKGcGWookp91JKR48tTUXqb8/lybcrzz99gLZiGguBqkF53VfNwuFl?= =?us-ascii?Q?9OymSNVHt+IgYyKZaEboByZnST5f5oLMBrukscXFwVx9p4Vj8nEdHraFc0hX?= =?us-ascii?Q?TZFKWaYwv1F8j+VPhpjgU5r5dvYWiEy2E27os7emOneA6xpkrVs6qHQ2M2vy?= =?us-ascii?Q?gNBPACouoL90df4h+TuWVjFwCACWPGy3XY4haFrsLdmkJxYr/IR63rhfYhtU?= =?us-ascii?Q?+MtwuBx2tKtGSGMy5kt5sxoS6vCGS0lN3lDAmSnPBoFa0BG1QcjQCv8ZGs6R?= =?us-ascii?Q?FvcTW6lE6k9dT0bZzZ6XU2fF0Y+wAmUgNJ30uo9nBhv0poYTAc9w/ybYoo0i?= =?us-ascii?Q?4JSA0Z5+HDn9uYG7j6Z153xX5PUy2COQcAxnpuzg6KkkHLBzSpcM3G4nOVnv?= =?us-ascii?Q?1yJR+v3rz3RNTO/6sc/L4SF4LTECXeIvHK7B7ZhdjnpZEpb2ePihQQsxg+cn?= =?us-ascii?Q?29ZhwlaVq9fIP3FgHAPBufKV22i3MoUosDasQShJfOp+dPxJ1mnIX/IbFYOn?= =?us-ascii?Q?/y7SUFY0foacITIKVSJ1n5xufL5hp/r6GhbtbOZYfjWN7lhTWh9bL+NP0T/O?= =?us-ascii?Q?aug1fapLhJyHBIo8B7WiQhtsMsl12SIvepVnBHMfjIg17BDg8alL8Lq1xwd8?= =?us-ascii?Q?FHz0boUZmn/feURW+v20BDgzdo3GG4JPzcgmaM8g/7Zc4kIzvnIF94Xpi44r?= =?us-ascii?Q?DOa65I6wKfqJDKz/r0ydAxwXd8nzsrcrrZXlZBfieEoSBM3O1NtQ5wez97oR?= =?us-ascii?Q?wNfYGl01ZzyZTjtia0mshvUMjfzURT0hAuOhTzB7IhvMjszJBDKun+urpRd2?= =?us-ascii?Q?EK+w/TE6S5uYuXh048RzTDeZvPcs2LzXIEvG6FaBYKL/qYFX+KEA7oB9vxHY?= =?us-ascii?Q?qZjL6M5WrPL3YddkCu1Dg5I0?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4930.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 045151df-e326-437c-5652-08d9774cb76c X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Sep 2021 06:56:02.6483 (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: N4KZKFik9Co3kLNFrc5qIPafZhdHEKLCBRxvyaNaEV1islFO/HZ/mt3N6ZYzirx1w171Isp8WjcHz76Dh96vvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR11MB5137 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_CO1PR11MB4930CD650C085CF1C77D4FB08CDA9CO1PR11MB4930namp_" --_000_CO1PR11MB4930CD650C085CF1C77D4FB08CDA9CO1PR11MB4930namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable resend using Liming's new email address. From: devel@edk2.groups.io On Behalf Of Ni, Ray Sent: Tuesday, September 14, 2021 2:15 PM To: Kinney, Michael D ; Gao, Liming ; Liu, Zhiguang ; Wang, Jian J ; Gao, Zhichao Cc: devel@edk2.groups.io; Chan, Amy Subject: [edk2-devel] RFC: Add BaseLib/QuickSort in MdePkg Hi package maintainers of MdePkg, MdeModulePkg and ShellPkg, community, A commit (UefiCpuPkg/CpuCacheInfoLib: Sort CpuCacheInfo array) to U= efiCpuPkg let UefiCpuPkg depend on MdeModulePkg because the SortLib class and instances a= re all in MdeModulePkg. UefiCpuPkg depending on MdeModulePkg breaks the rule that "UefiCpuPkg shoul= d ONLY depend on MdePkg". To address this issue, there are two approaches: 1. Duplicate the sort logic in UefiCpuPkg to not depend on MdeModulePkg/= SortLib 2. Add QuickSort() API to BaseLib in MdePkg. Approach #2 (MdePkg/BaseLib/QuickSort) makes more sense because quick sort = is a standard algorithm. We encourage consumers to update their code to use the quick sort in MdePkg= and gradually deprecate today's MdeModulePkg/SortLib. If you don't have concerns, I plan to: 1. "Add QuickSort() to BaseLib" and update all existing consumers to use= this API instead. VOID EFIAPI QuickSort ( IN OUT VOID *BufferToSort, IN CONST UINTN Count, IN CONST UINTN ElementSize, IN SORT_COMPARE CompareFunction ); 1. "Add new ShellPkg/SortCompareLib" Background: ShellPkg requires to sort devicepath/string so 3 APIs in UefiSo= rtLib (DevicePathCompare, StringNoCaseCompare, StringCompare) are provided = for Shell usage. we can move the 3 APIs to the SortCompareLib and update Sh= ell code to use BaseLib/QuickSort directly, with the sort compare function = from SortCompareLib. Any concerns? Thanks, Ray --_000_CO1PR11MB4930CD650C085CF1C77D4FB08CDA9CO1PR11MB4930namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

resend using Liming’s new email address.<= /o:p>

 

From: devel@edk2.groups.io <devel@edk2.gro= ups.io> On Behalf Of Ni, Ray
Sent: Tuesday, September 14, 2021 2:15 PM
To: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Limin= g <liming.gao@intel.com>; Liu, Zhiguang <zhiguang.liu@intel.com>= ;; Wang, Jian J <jian.j.wang@intel.com>; Gao, Zhichao <zhichao.gao= @intel.com>
Cc: devel@edk2.groups.io; Chan, Amy <amy.chan@intel.com>
Subject: [edk2-devel] RFC: Add BaseLib/QuickSort in MdePkg

 

Hi package maintainers of MdePkg, MdeModulePkg and S= hellPkg, community,

 

A commit (UefiCpuPkg/CpuCacheInfo= Lib: Sort CpuCacheInfo array) to UefiCpuPkg let
UefiCpuPkg depend on MdeModulePkg because the SortLib class and instances a= re all in MdeModulePkg.

 

UefiCpuPkg depending on MdeModulePkg breaks the rule= that “UefiCpuPkg should ONLY depend on MdePkg”.

 

To address this issue, there are two approaches:

  1. Duplicate the sort logic in UefiCpuPkg to not depend on MdeModulePkg/= SortLib
  2. Add QuickSort() API to BaseLib in MdePkg.=

 

Approach #2 (MdePkg/BaseLib/QuickSort) makes more se= nse because quick sort is a standard algorithm.

We encourage consumers to update their code to use t= he quick sort in MdePkg and gradually deprecate today’s MdeModulePkg/= SortLib.

 

If you don’t have concerns, I plan to:

  1. “Add QuickSort() to BaseLib” and update all existing cons= umers to use this API instead.

VOID

EFIAPI<= o:p>

QuickSo= rt (

 &= nbsp;IN OUT VOID        &= nbsp;          *BufferToS= ort,

 &= nbsp;IN CONST UINTN       &nbs= p;        Count,

 &= nbsp;IN CONST UINTN       &nbs= p;        ElementSize,

 &= nbsp;IN       SORT_COMPARE  &n= bsp;      CompareFunction

 &= nbsp;);

 

  1. “Add new ShellPkg/SortCompareLib”

Background: ShellPkg requires to sort devicep= ath/string so 3 APIs in UefiSortLib (DevicePathCompare, StringNoCaseCompare= , StringCompare) are provided for Shell usage. we can move the 3 APIs to th= e SortCompareLib and update Shell code to use BaseLib/QuickSort directly, with the sort compare function fro= m SortCompareLib.

 

Any concerns?

 

Thanks,

Ray

--_000_CO1PR11MB4930CD650C085CF1C77D4FB08CDA9CO1PR11MB4930namp_--