Hi Samer,

On Mon, Oct 11, 2021 at 14:20:17 +0000, Samer El-Haj-Mahmoud wrote:
> > In PI, the only references I find to the protocol are in MM and SAL 
> > protocols.
> > And we're not even looking at EFI_MP_SERVICES_PPI at this point.
> 
> The PI 1.7 spec defined the EFI_MP_SERVICES_PROTOCOL in page 2-180,
> with the PPI and MM versions in 1-193 and 4-57 respectively.

Yes, I was referring to references, as in any protocols explicitly
stating compatibility with being called from an AP.

> > But it might be good to hear something from ARM whether the use of this
> > protocol which "must be produced on any system with more than one logical 
> > processor"
> > *should* be able to rely on anything being set up for it, or whether we
> > need an aforementioned helper library.
> 
> This statement (from the PI spec) is overly ambitious. I bet that it
> does not hold true today on most DXE-based UEFI implementations on
> other architectures, not just AARCH64. If we agree, I will file an
> ECR to remove this statement from the PI spec.

That feels like a weird response to the submission of a patch set
adding the functionality for AArch64.

> 
> From AARCH64 SBBR systems point of view:
> 
>   *   The requirements from Arm SBBR point of view are around using
>       PSCI to online/offline Secondary cores, and leaving them
>       offlined before ReadyToBoot is signaled.

SBBR is not relevant here. PI covers firmware internals, not OS
boot compatibility.

>   *   PI-based UEFI implementations are not required. And even when
>       they are implemented, the EFI_MP_SERVICES_PROTOCOL is not
>       required

So ARM's strategy is to encourage people not to us it *in* PI
implementations, even when it is portably implemented on top of PSCI?

Regards,

Leif

>   *   I agree with the analysis in this thread. EFI_MP
>       implementations on AARCh64 need to be severely limited in the
>       general case. Platforms (upstream or downstream) can still
>       innovate and write their own code to run in these services as
>       they wish.

> 
> 
> Thanks,
> --Samer
> 
> 
> 
> From: Leif Lindholm <l...@nuviainc.com>
> Sent: Monday, October 11, 2021 8:28 AM
> To: Ard Biesheuvel <a...@kernel.org>; Samer El-Haj-Mahmoud 
> <samer.el-haj-mahm...@arm.com>
> Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org>; Sami Mujawar 
> <sami.muja...@arm.com>; edk2-devel-groups-io <devel@edk2.groups.io>; Rebecca 
> Cran <rebe...@nuviainc.com>; Gerd Hoffmann <kra...@redhat.com>; edk2 RFC list 
> <r...@edk2.groups.io>
> Subject: Re: [RFC] [PATCH 0/2] Proposal to add EFI_MP_SERVICES_PROTOCOL 
> support for AARCH64
> 
> +Samer
> 
> On Fri, Oct 8, 2021 at 3:51 PM Ard Biesheuvel 
> <a...@kernel.org<mailto:a...@kernel.org>> wrote:
> > > So either we severely constrain the kind of code that we permit to run
> > > on other cores, or we enable the MMU and caches on each core as it
> > > comes out of reset, as well as do any other CPU specific
> > > initialization that we do for the primary core as well.
> >
> > The description for StartupAllAPs() has a note:
> > It is the responsibility of the consumer of the
> > EFI_MP_SERVICES_PROTOCOL.StartupAllAPs() to make sure that the nature
> > of the code that is executed on the BSP and the dispatched APs is well
> > controlled. The MP Services Protocol does not guarantee that the
> > Procedure function is MP-safe. Hence, the tasks that can be run in
> > parallel are limited to certain independent tasks and well-controlled
> > exclusive code. EFI services and protocols may not be called by APs
> > unless otherwise specified.
> >
> > So I think this is actually fine, implementation-wise. *Except* for
> > the SwitchBSP function (where we're currently bailing out anyway).
> 
> Ok, so that doesn't look as bad as I thought. But we'll have to be
> more strict than other arches: even EFI services and protocols that
> are marked as safe for execution under this MP protocol are likely to
> explode if they rely on CopyMem() or SetMem() for in/outputs that are
> not a multiple of 8 bytes in case the platform uses the
> BaseMemoryLibOptDxe flavour of this library, since it relies heavily
> on deliberately misaligned loads and stores.
> 
> I think there is no way a protocol defined in the UEFI specification could be
> safe to use by non-BSP. In PI, the only references I find to the protocol are
> in MM and SAL protocols.
> And we're not even looking at EFI_MP_SERVICES_PPI at this point.
> 
> But it might be good to hear something from ARM whether the use of this
> protocol which "must be produced on any system with more than one logical 
> processor"
> *should* be able to rely on anything being set up for it, or whether we
> need an aforementioned helper library.
> 
> /
>     Leif
> 
> IMPORTANT NOTICE: The contents of this email and any attachments are 
> confidential and may also be privileged. If you are not the intended 
> recipient, please notify the sender immediately and do not disclose the 
> contents to any other person, use it for any purpose, or store or copy the 
> information in any medium. Thank you.
> 
> 
> 
> 
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#81752): https://edk2.groups.io/g/devel/message/81752
Mute This Topic: https://groups.io/mt/86239012/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to