ArmPkg/ArmPkg.dsc | 1 + ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf | 56 + ArmPkg/Drivers/ArmPsciMpServicesDxe/MpServicesInternal.h | 345 ++++ ArmPkg/Include/Library/ArmLib.h | 16 +- ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.c | 1859 ++++++++++++++++++++ ArmPkg/Drivers/ArmPsciMpServicesDxe/MpFuncs.S | 74 + 6 files changed, 2344 insertions(+), 7 deletions(-) create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/MpServicesInternal.h create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.c create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/MpFuncs.S
Implement EFI_MP_SERVICES_PROTOCOL based on PSCI calls for AArch64. Note that several tests from UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol will fail because there's currently no mechanism implemented to reset APs that are stuck running the user's code (e.g. tests that run an infinite loop). On x86 an IPI is sent to take back control: something similar should be implemented on Arm. Changes from v4: o Changes based on review feedback from Kun Qin. o Dropped the MpServicesTest patch, since UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol implements similar functionality. Changes from v2: Added a CPU exception handler for the APs so that if the user's code causes an exception (e.g. because the application terminates) the AP state is set to CpuStateFinished and the core powered off. Rebecca Cran (2): ArmPkg: Add GET_MPIDR_AFFINITY_BITS and MPIDR_MT_BIT to ArmLib.h ArmPkg: implement EFI_MP_SERVICES_PROTOCOL based on PSCI calls ArmPkg/ArmPkg.dsc | 1 + ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf | 56 + ArmPkg/Drivers/ArmPsciMpServicesDxe/MpServicesInternal.h | 345 ++++ ArmPkg/Include/Library/ArmLib.h | 16 +- ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.c | 1859 ++++++++++++++++++++ ArmPkg/Drivers/ArmPsciMpServicesDxe/MpFuncs.S | 74 + 6 files changed, 2344 insertions(+), 7 deletions(-) create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/MpServicesInternal.h create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.c create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/MpFuncs.S -- 2.30.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#98634): https://edk2.groups.io/g/devel/message/98634 Mute This Topic: https://groups.io/mt/96324766/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Could I get some more reviews on this please? Thanks. Rebecca Cran On 1/16/23 21:57, Rebecca Cran wrote: > Implement EFI_MP_SERVICES_PROTOCOL based on PSCI calls for AArch64. > > Note that several tests from UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol > will fail because there's currently no mechanism implemented to reset > APs that are stuck running the user's code (e.g. tests that run an > infinite loop). > On x86 an IPI is sent to take back control: something similar should be > implemented on Arm. > > Changes from v4: > > o Changes based on review feedback from Kun Qin. > o Dropped the MpServicesTest patch, since > UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol implements similar > functionality. > > Changes from v2: > > Added a CPU exception handler for the APs so that if the user's code > causes an exception (e.g. because the application terminates) the AP > state is set to CpuStateFinished and the core powered off. > > Rebecca Cran (2): > ArmPkg: Add GET_MPIDR_AFFINITY_BITS and MPIDR_MT_BIT to ArmLib.h > ArmPkg: implement EFI_MP_SERVICES_PROTOCOL based on PSCI calls > > ArmPkg/ArmPkg.dsc | 1 + > ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf | 56 + > ArmPkg/Drivers/ArmPsciMpServicesDxe/MpServicesInternal.h | 345 ++++ > ArmPkg/Include/Library/ArmLib.h | 16 +- > ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.c | 1859 ++++++++++++++++++++ > ArmPkg/Drivers/ArmPsciMpServicesDxe/MpFuncs.S | 74 + > 6 files changed, 2344 insertions(+), 7 deletions(-) > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/MpServicesInternal.h > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.c > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/MpFuncs.S > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99121): https://edk2.groups.io/g/devel/message/99121 Mute This Topic: https://groups.io/mt/96324766/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
On Fri, 27 Jan 2023 at 05:10, Rebecca Cran <rebecca@bsdio.com> wrote: > > Could I get some more reviews on this please? > > Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Thanks a lot for your persistence. Queued up here https://github.com/tianocore/edk2/pull/3956 > > On 1/16/23 21:57, Rebecca Cran wrote: > > Implement EFI_MP_SERVICES_PROTOCOL based on PSCI calls for AArch64. > > > > Note that several tests from UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol > > will fail because there's currently no mechanism implemented to reset > > APs that are stuck running the user's code (e.g. tests that run an > > infinite loop). > > On x86 an IPI is sent to take back control: something similar should be > > implemented on Arm. > > > > Changes from v4: > > > > o Changes based on review feedback from Kun Qin. > > o Dropped the MpServicesTest patch, since > > UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol implements similar > > functionality. > > > > Changes from v2: > > > > Added a CPU exception handler for the APs so that if the user's code > > causes an exception (e.g. because the application terminates) the AP > > state is set to CpuStateFinished and the core powered off. > > > > Rebecca Cran (2): > > ArmPkg: Add GET_MPIDR_AFFINITY_BITS and MPIDR_MT_BIT to ArmLib.h > > ArmPkg: implement EFI_MP_SERVICES_PROTOCOL based on PSCI calls > > > > ArmPkg/ArmPkg.dsc | 1 + > > ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf | 56 + > > ArmPkg/Drivers/ArmPsciMpServicesDxe/MpServicesInternal.h | 345 ++++ > > ArmPkg/Include/Library/ArmLib.h | 16 +- > > ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.c | 1859 ++++++++++++++++++++ > > ArmPkg/Drivers/ArmPsciMpServicesDxe/MpFuncs.S | 74 + > > 6 files changed, 2344 insertions(+), 7 deletions(-) > > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf > > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/MpServicesInternal.h > > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.c > > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/MpFuncs.S > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#99158): https://edk2.groups.io/g/devel/message/99158 Mute This Topic: https://groups.io/mt/96324766/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Thanks for sharing the updated patches. I tested the patches on both QEMU and FVP, they work for all my use cases. Although my vote probably does not mean much, thanks again for sharing this update: Tested-by: Kun Qin <kun.qin@microsoft.com> On 1/16/2023 8:57 PM, Rebecca Cran wrote: > Implement EFI_MP_SERVICES_PROTOCOL based on PSCI calls for AArch64. > > Note that several tests from UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol > will fail because there's currently no mechanism implemented to reset > APs that are stuck running the user's code (e.g. tests that run an > infinite loop). > On x86 an IPI is sent to take back control: something similar should be > implemented on Arm. > > Changes from v4: > > o Changes based on review feedback from Kun Qin. > o Dropped the MpServicesTest patch, since > UefiCpuPkg/Test/UnitTest/EfiMpServicesPpiProtocol implements similar > functionality. > > Changes from v2: > > Added a CPU exception handler for the APs so that if the user's code > causes an exception (e.g. because the application terminates) the AP > state is set to CpuStateFinished and the core powered off. > > Rebecca Cran (2): > ArmPkg: Add GET_MPIDR_AFFINITY_BITS and MPIDR_MT_BIT to ArmLib.h > ArmPkg: implement EFI_MP_SERVICES_PROTOCOL based on PSCI calls > > ArmPkg/ArmPkg.dsc | 1 + > ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf | 56 + > ArmPkg/Drivers/ArmPsciMpServicesDxe/MpServicesInternal.h | 345 ++++ > ArmPkg/Include/Library/ArmLib.h | 16 +- > ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.c | 1859 ++++++++++++++++++++ > ArmPkg/Drivers/ArmPsciMpServicesDxe/MpFuncs.S | 74 + > 6 files changed, 2344 insertions(+), 7 deletions(-) > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.inf > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/MpServicesInternal.h > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/ArmPsciMpServicesDxe.c > create mode 100644 ArmPkg/Drivers/ArmPsciMpServicesDxe/MpFuncs.S > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#98972): https://edk2.groups.io/g/devel/message/98972 Mute This Topic: https://groups.io/mt/96324766/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2024 Red Hat, Inc.