From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.151; helo=mga17.intel.com; envelope-from=ray.ni@intel.com; receiver=edk2-devel@lists.01.org Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id DA40D211D56C4 for ; Wed, 6 Mar 2019 01:16:52 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Mar 2019 01:16:51 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,447,1544515200"; d="scan'208";a="131662347" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga003.jf.intel.com with ESMTP; 06 Mar 2019 01:16:51 -0800 Received: from shsmsx107.ccr.corp.intel.com (10.239.4.96) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 6 Mar 2019 01:16:51 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.74]) by SHSMSX107.ccr.corp.intel.com ([169.254.9.252]) with mapi id 14.03.0415.000; Wed, 6 Mar 2019 17:16:49 +0800 From: "Ni, Ray" To: 'Ard Biesheuvel' CC: "edk2-devel@lists.01.org" Thread-Topic: [edk2] Does ARM platform produce MP protocol? Thread-Index: AdTT37l+uf+kVpDOSDippkHRe/INcf//mYKA//9fO/A= Date: Wed, 6 Mar 2019 09:16:48 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C060A85@SHSMSX104.ccr.corp.intel.com> References: <734D49CCEBEEF84792F5B80ED585239D5C060382@SHSMSX104.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: Does ARM platform produce MP protocol? X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Mar 2019 09:16:53 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: edk2-devel On Behalf Of Ard > Biesheuvel > Sent: Wednesday, March 6, 2019 3:38 PM > To: Ni, Ray > Cc: edk2-devel@lists.01.org > Subject: Re: [edk2] Does ARM platform produce MP protocol? >=20 > On Wed, 6 Mar 2019 at 06:44, Ni, Ray wrote: > > > > Ard, Leif, > > I am a bit interested in how ARM platform supports the MP? > > PI Spec defines below protocol but I failed to find a driver in ARM pla= tform > producing this protocol. > > Or did I miss anything? > > >=20 > No you are right. We don't expose that on ARM, since UEFI only runs on a > single core. Bringing up and taking down cores is done via a protocol cal= led > PSCI, which is implemented by firmware running at a higher privilege leve= l. >=20 > So while it would be possible to implement the MP protocol on top of PSCI= , > we haven't identified a use case for it yet. (The OS calls PSCI directly = to boot > the secondary cores) Is below EFI_MM_MP_PROTOCOL (added in PI spec 1.6) implemented in ARM? Or will it be implemented by an ARM module? I am asking this because MP_SERVICES protocol exposes CPU location informat= ion (Package/Core/Thread) through *GetProcessorInfo*, but MM_MP protocol doesn'= t have a way to expose that information. If such location information isn't exposed by MM_MP, is that because ARM do= esn't care about the location information? Or because ARM cares but forgot to add= similar *GetProcessorInfo* interface to MM_MP when changing the PI spec? Or ARM doesn't use the MM_MP at all? typedef struct _EFI_MM_MP_PROTOCOL { UINT32 Revision, UINT32 Attributes, EFI_MM_ GET_NUMBER_OF_PROCESSORS GetNumberOfProcessors, EFI_MM_DISPATCH_PROCEDURE DispatchProcedure, EFI_MM_BROADCAST_PROCEDURE BroadcastProcedure, EFI_MM_SET_STARTUP_PROCEDURE SetStartupProcedure, EFI_CHECK_FOR_PROCEDURE CheckOnProcedure, EFI_WAIT_FOR_PROCEDURE WaitForProcedure, }EFI_MM_MP_PROTOCOL; >=20 > > typedef struct _EFI_MP_SERVICES_PROTOCOL { > > EFI_MP_SERVICES_GET_NUMBER_OF_PROCESSORS > GetNumberOfProcessors; > > EFI_MP_SERVICES_GET_PROCESSOR_INFO GetProcessorInfo; > > EFI_MP_SERVICES_STARTUP_ALL_APS StartupAllAPs; > > EFI_MP_SERVICES_STARTUP_THIS_AP StartupThisAP; > > EFI_MP_SERVICES_SWITCH_BSP SwitchBSP; > EFI_MP_SERVICES_ENABLEDISABLEAP > > EnableDisableAP; EFI_MP_SERVICES_WHOAMI WhoAmI; } > > EFI_MP_SERVICES_PROTOCOL; > > > > Thanks, > > Ray > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel