From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web12.4682.1599791516026635907 for ; Thu, 10 Sep 2020 19:31:56 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=MSo4fqGC; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: eric.dong@intel.com) IronPort-SDR: AILLDXZdD0ChzqIss2yLhj7Av9vUka/yTIJBfEhI40jYx2y6lknp7uxLtoos1kMAP4IvDviYuD G8W0DhyejoKQ== X-IronPort-AV: E=McAfee;i="6000,8403,9740"; a="138192948" X-IronPort-AV: E=Sophos;i="5.76,413,1592895600"; d="scan'208";a="138192948" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Sep 2020 19:31:55 -0700 IronPort-SDR: c7WSd4P/jAlenj5g2CkPHxEcc2q3xp4XTG9XHvY/oU+frxCIWCpzSbxgFRHiQCno07dv4AvllU N4LnUaB37L4w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,413,1592895600"; d="scan'208";a="407954043" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by fmsmga001.fm.intel.com with ESMTP; 10 Sep 2020 19:31:35 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 10 Sep 2020 19:31:34 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 10 Sep 2020 19:31:34 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.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.1713.5; Thu, 10 Sep 2020 19:31:34 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oOpAJPOiy1xQ9h52mq6LFOMXXoDEoGkAEvYyB0zrhSfGSX1YlJsHoIIwlIJRvajQNp6LOtbNuwK52p+KJdfFoGLMXvtLKaW5C2yKT4ev7bmrcopfGLpEp26GWn6sPI8eAINpoH167ZfrAVifFQ3fnH2THgjzzoX+XRJcmBb4vKaj5bLL+ME49/4xJCdDytBmx8gbzuPRxyCt7lWbME8MmW3bTXLkqEolHTA0f0P9LNspiZZRd8yReigEsUkZbCFgjO8PU/7ppg0ygyIsrOrpKJB3VirkX5xfN4hqpkr2qNMnkvwfRkQF36Nw4iVQyvFK/msTASsFeqiiBPjFf7axKw== 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-SenderADCheck; bh=k6B4lLNluhxeM0TIjU4sS/Mf0gsT97OK3Mc1Iq8giGM=; b=mOX4JylBjxr6qYYbHfvO5dyOowLOCU3zUjh3A7J5yW6YnOh1nZsXnftRvFFTDFpccSOiN42jP0FZqedx/fMk9lwO/MbSBjPgO/1Smuqxdy0EhZlAgjY1bMj78UIHGNZqtikC2IhQoDc/6in1KqXltCY2l9ukpq5IQ5zeUPCNF0DwURPjpibMFSVYODzyUdD2PUQQsGc6up3c3UYJ3BsW+dCjoiCk50XYaLeswXJsil8Dk7bvJZA5C+S+MCZz3dybp2sd+HPX9Yah/BJFZXkvdjyEAeU1jUkyX5amNzZopvTAQML6+CCh3/87ik10UMysuJQaLRd+K6y5G42+LWj8mA== 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=k6B4lLNluhxeM0TIjU4sS/Mf0gsT97OK3Mc1Iq8giGM=; b=MSo4fqGCAzWZQ/eurz0nfl+zp7fjincvsMtBesmmUAF+P3h1vTJ4ZwKjCEBudYytRhlqqQe2EtyhXFMid96XR2wXO2cnxPWB8I3lBXHNHQPpWDpCv+kUvWfvE7ZjcIZaVUm3GrT9H6pYMrqrOHoJczeLfl+JYAbn8yadb6TLuws= Received: from CY4PR11MB1272.namprd11.prod.outlook.com (2603:10b6:903:29::9) by CY4PR11MB1655.namprd11.prod.outlook.com (2603:10b6:910:f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3370.16; Fri, 11 Sep 2020 02:31:33 +0000 Received: from CY4PR11MB1272.namprd11.prod.outlook.com ([fe80::dc7f:73e1:7c43:158b]) by CY4PR11MB1272.namprd11.prod.outlook.com ([fe80::dc7f:73e1:7c43:158b%11]) with mapi id 15.20.3370.016; Fri, 11 Sep 2020 02:31:33 +0000 From: "Dong, Eric" To: "Chiu, Chasel" , "devel@edk2.groups.io" CC: "Chiu, Chasel" , "Ni, Ray" , Laszlo Ersek , "Kumar, Rahul1" , "Desimone, Nathaniel L" Subject: Re: [PATCH] UefiCpuPkg/RegisterCpuFeaturesLib: Support MpServices2 only case. Thread-Topic: [PATCH] UefiCpuPkg/RegisterCpuFeaturesLib: Support MpServices2 only case. Thread-Index: AQHWh1FQ5STVhS5ie0C8hVQ9kdOWb6liuJiA Date: Fri, 11 Sep 2020 02:31:32 +0000 Message-ID: References: <20200910090233.22784-1-chasel.chiu@intel.com> In-Reply-To: <20200910090233.22784-1-chasel.chiu@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.46.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d1b9120d-3c7f-4004-6d5a-08d855facc6a x-ms-traffictypediagnostic: CY4PR11MB1655: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2803; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Dbac7af5+u3SE1EXF7tYL4H0apYSdY8wkrAVVDRc1W46VaShF8DPsjFj/trx7mDqPx3ffG07BZl53HTeqlraYcxoip1yB26P1i5sxWQB4Q5Vq6UJbt2vk7gbqdzNlLU6xPf607GTRxZYhwdXXKtb3KcYqrRhjj9iL2/+8tq77W0N+niZ4+wYOWpOR0zg2MDHxBXPePzJVU6mEx4Qdkpg+CNi66NRBeYJzONud+0N+0iO4nk09fKUBsPFtSaEQuhUSHZVkad/vaSla76O5Ls96Vf8JoKlRsKrmBpTl1I/bJUQFtGTiYbSnFsue7X/2Hc1JQYkgBFNQIm10O9nCsvG/A+O3PXCGsfOVgFqbEW3YYxov2zJu2fUwLcmfCxr/3AyLLAegMQA0bC5Qq9VhPF6RQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1272.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(346002)(376002)(39860400002)(136003)(366004)(396003)(26005)(107886003)(4326008)(186003)(6506007)(53546011)(55016002)(52536014)(7696005)(54906003)(5660300002)(83380400001)(110136005)(478600001)(9686003)(2906002)(71200400001)(316002)(66446008)(66476007)(86362001)(66946007)(76116006)(966005)(64756008)(8936002)(66556008)(33656002)(8676002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: MMyjtpx/9RZWVIDWB77yAXLNNnfXPgORS4/5YYDPmpSU2CzGXd5BlVrULbuN41btDCoYW4sV+caRejRt8J7MR8HFJmkQLDtlbRuMjK0sUtuimx7NBhIZornwO+xtzlcZl9FJsXxGzziOwsb/iY/hBGkVzwId1auVfRI0H5sbct81/3ftNVjgXo5Siw0BDpQHNsM/igXifj48OG/Jx2fCkpyNU1VhLflSWYUUnn6aSDEKkUV/EkqOruT2IxUg7DtIakk5XKEcwF8trYnX9A5UXi0bNlLpCP7y+8DyPcoNg1KCVkS+3e5ShVmsL9wNKaWi/gpYQLVwsjlBUHR5ul9ym8Iz0oYamd52R7ZVYWPQl62FlzlHxTVbMALlNdLz+8keDkR62+RFOXHzIM7A+kvy+USYCvZjoBxGW4XzGLqW5pAcMDfLct++NYS1nVLnBZWpHd5v3akBxUOtznV+yRh9sZ5rWWPSP75iKdoKeRlDSIMiOd2NTnWnGAPU0TXoZidRdN87yAm6nFIa/YFATQSJAmBXp3/c2k2X7H/n53Py0yJscSnoeYSxc9gls+qc1PwlMvnVxLl9r3aEJwvLU42REduRix6N7J3zEV9Hi/7w/cazVSKt02ShIRXVN0FUAqcUxE+ofrGN5r0PtN90Y9PgHg== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1272.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1b9120d-3c7f-4004-6d5a-08d855facc6a X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Sep 2020 02:31:33.0867 (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: BHn4wZB1V94geDKuPCsO4I7T0av0Nr5nKa0sZqZ0aUQDUMvWNnx5EDapfgRI3PCsqrlPjiB0jgZM8CL6nVvsZg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1655 Return-Path: eric.dong@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Eric Dong -----Original Message----- From: Chasel Chiu =20 Sent: Thursday, September 10, 2020 5:03 PM To: devel@edk2.groups.io Cc: Chiu, Chasel ; Dong, Eric ;= Ni, Ray ; Laszlo Ersek ; Kumar, Rahul= 1 ; Desimone, Nathaniel L Subject: [PATCH] UefiCpuPkg/RegisterCpuFeaturesLib: Support MpServices2 onl= y case. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2883 MpServices Ppi can be replaced by MpServices2 Ppi and MpServices2 Ppi is ma= ndatory for RegisterCpuFeaturesLib functionality, basing on this we can dro= p MpServices Ppi usage from the library and the constraint that both Ppis m= ust be installed. Cc: Eric Dong Cc: Ray Ni Cc: Laszlo Ersek Cc: Rahul Kumar Cc: Nate DeSimone Signed-off-by: Chasel Chiu --- UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c | 61= +++++++++++++++++++++++-------------------------------------- UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h | 6= +++--- 2 files changed, 26 insertions(+), 41 deletions(-) diff --git a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeatur= esLib.c b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesL= ib.c index 64768f7a74..4e558e9fee 100644 --- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c +++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLi +++ b.c @@ -1,7 +1,7 @@ /** @file CPU Register Table Library functions. =20 - Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.
+ Copyright (c) 2016 - 2020, Intel Corporation. All rights=20 + reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent =20 **/ @@ -11,7 +11,6 @@ #include #include #include -#include #include =20 #include "RegisterCpuFeatures.h" @@ -75,10 +74,10 @@ GetMpService ( MP_SERVICES MpService; =20 // - // Get MP Services Protocol + // Get MP Services2 Ppi // Status =3D PeiServicesLocatePpi ( - &gEfiPeiMpServicesPpiGuid, + &gEdkiiPeiMpServices2PpiGuid, 0, NULL, (VOID **)&MpService.Ppi @@ -100,17 +99,17 @@ GetProcessorIndex ( ) { EFI_STATUS Status; - EFI_PEI_MP_SERVICES_PPI *CpuMpPpi; + EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi; UINTN ProcessorIndex; =20 - CpuMpPpi =3D CpuFeaturesData->MpService.Ppi; + CpuMp2Ppi =3D CpuFeaturesData->MpService.Ppi; =20 // // For two reasons which use NULL for WhoAmI: // 1. This function will be called by APs and AP should not use PeiServi= ces Table // 2. Check WhoAmI implementation, this parameter will not be used. // - Status =3D CpuMpPpi->WhoAmI(NULL, CpuMpPpi, &ProcessorIndex); + Status =3D CpuMp2Ppi->WhoAmI (CpuMp2Ppi, &ProcessorIndex); ASSERT_EFI_ERROR (Status); return ProcessorIndex; } @@ -131,16 +130,15 @@ GetProcessorInformation ( OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer ) { - EFI_PEI_MP_SERVICES_PPI *CpuMpPpi; + EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi; EFI_STATUS Status; CPU_FEATURES_DATA *CpuFeaturesData; =20 CpuFeaturesData =3D GetCpuFeaturesData (); - CpuMpPpi =3D CpuFeaturesData->MpService.Ppi; + CpuMp2Ppi =3D CpuFeaturesData->MpService.Ppi; =20 - Status =3D CpuMpPpi->GetProcessorInfo ( - GetPeiServicesTablePointer(), - CpuMpPpi, + Status =3D CpuMp2Ppi->GetProcessorInfo ( + CpuMp2Ppi, ProcessorNumber, ProcessorInfoBuffer ); @@ -162,18 +160,17 @@ StartupAllAPsWorker ( ) { EFI_STATUS Status; - EFI_PEI_MP_SERVICES_PPI *CpuMpPpi; + EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi; CPU_FEATURES_DATA *CpuFeaturesData; =20 CpuFeaturesData =3D GetCpuFeaturesData (); - CpuMpPpi =3D CpuFeaturesData->MpService.Ppi; + CpuMp2Ppi =3D CpuFeaturesData->MpService.Ppi; =20 // // Wakeup all APs for data collection. // - Status =3D CpuMpPpi->StartupAllAPs ( - GetPeiServicesTablePointer (), - CpuMpPpi, + Status =3D CpuMp2Ppi->StartupAllAPs ( + CpuMp2Ppi, Procedure, FALSE, 0, @@ -203,17 +200,7 @@ StartupAllCPUsWorker ( // // Get MP Services2 Ppi // - Status =3D PeiServicesLocatePpi ( - &gEdkiiPeiMpServices2PpiGuid, - 0, - NULL, - (VOID **)&CpuMp2Ppi - ); - ASSERT_EFI_ERROR (Status); - - // - // Wakeup all APs for data collection. - // + CpuMp2Ppi =3D CpuFeaturesData->MpService.Ppi; Status =3D CpuMp2Ppi->StartupAllCPUs ( CpuMp2Ppi, Procedure, @@ -234,18 +221,17 @@ SwitchNewBsp ( ) { EFI_STATUS Status; - EFI_PEI_MP_SERVICES_PPI *CpuMpPpi; + EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi; CPU_FEATURES_DATA *CpuFeaturesData; =20 CpuFeaturesData =3D GetCpuFeaturesData (); - CpuMpPpi =3D CpuFeaturesData->MpService.Ppi; + CpuMp2Ppi =3D CpuFeaturesData->MpService.Ppi; =20 // // Wakeup all APs for data collection. // - Status =3D CpuMpPpi->SwitchBSP ( - GetPeiServicesTablePointer (), - CpuMpPpi, + Status =3D CpuMp2Ppi->SwitchBSP ( + CpuMp2Ppi, ProcessorNumber, TRUE ); @@ -269,18 +255,17 @@ GetNumberOfProcessor ( ) { EFI_STATUS Status; - EFI_PEI_MP_SERVICES_PPI *CpuMpPpi; + EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi; CPU_FEATURES_DATA *CpuFeaturesData; =20 CpuFeaturesData =3D GetCpuFeaturesData (); - CpuMpPpi =3D CpuFeaturesData->MpService.Ppi; + CpuMp2Ppi =3D CpuFeaturesData->MpService.Ppi; =20 // // Get the number of CPUs // - Status =3D CpuMpPpi->GetNumberOfProcessors ( - GetPeiServicesTablePointer (), - CpuMpPpi, + Status =3D CpuMp2Ppi->GetNumberOfProcessors ( + CpuMp2Ppi, NumberOfCpus, NumberOfEnabledProcessors ); diff --git a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.= h b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h index 53cb340b4c..e8a4aa644d 100644 --- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h +++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h @@ -10,7 +10,7 @@ #define _REGISTER_CPU_FEATURES_H_ #include #include -#include +#include #include =20 #include @@ -64,8 +64,8 @@ typedef struct { } PROGRAM_CPU_REGISTER_FLAGS; =20 typedef union { - EFI_MP_SERVICES_PROTOCOL *Protocol; - EFI_PEI_MP_SERVICES_PPI *Ppi; + EFI_MP_SERVICES_PROTOCOL *Protocol; + EDKII_PEI_MP_SERVICES2_PPI *Ppi; } MP_SERVICES; =20 typedef struct { -- 2.13.3.windows.1