Multiprocessor support in AARCH64


Matheus Medeiros
 

Hi everyone.
I'm developing an application using EDK2 and I need to implement multiprocessor support. For the X64 architecture I was able to use EFI_MP_SERVICES_PROTOCOL to run code in other processors, but I also need to use this functionality in AARCH64 processors. I tried using it on two machines and was unable to use the MP Services protocol on any of them. Is multiprocessor support not available for ARM machines? Or is there any other protocol to use with this architecture?

Thanks
Matheus Medeiros


Rebecca Cran
 

I committed multiprocessor support for AARCH64 last week. The platform you’re building needs to include the MpServices driver from ArmPkg/Drivers.

Rebecca Cran

On Fri, Jan 20, 2023, at 12:59 PM, Matheus Medeiros via groups.io wrote:
Hi everyone.
I'm developing an application using EDK2 and I need to implement
multiprocessor support. For the X64 architecture I was able to use
EFI_MP_SERVICES_PROTOCOL to run code in other processors, but I also
need to use this functionality in AARCH64 processors. I tried using it
on two machines and was unable to use the MP Services protocol on any
of them. Is multiprocessor support not available for ARM machines? Or
is there any other protocol to use with this architecture?

Thanks
Matheus Medeiros



Matheus Medeiros
 

Hi Rebecca!
Right after posting here, I saw the patch you posted on the "devel" list. I compiled your code into a driver and was able to load it in a Raspberry Pi 3. But the same was not possible on laptops with Snapdragon CPUs, the driver fails to load and returns the EFI_NOT_FOUND error. I think it's caused by GetFirstGuidHob(&gArmMpCoreInfoGuid) returning NULL. Do you have any clues that might help me? 

Thanks!
Matheus Medeiros

On Thu, Feb 2, 2023 at 03:39 PM, Rebecca Cran wrote:


I committed multiprocessor support for AARCH64 last week. The platform
you’re building needs to include the MpServices driver from ArmPkg/Drivers.

Rebecca Cran

On Fri, Jan 20, 2023, at 12:59 PM, Matheus Medeiros via groups.io wrote:
Hi everyone.
I'm developing an application using EDK2 and I need to implement
multiprocessor support. For the X64 architecture I was able to use
EFI_MP_SERVICES_PROTOCOL to run code in other processors, but I also
need to use this functionality in AARCH64 processors. I tried using it
on two machines and was unable to use the MP Services protocol on any
of them. Is multiprocessor support not available for ARM machines? Or
is there any other protocol to use with this architecture?

Thanks
Matheus Medeiros



Rebecca Cran
 

Most platforms only claim to have a single core via the HOB, which will cause that error. For example I’ve had to modify the Neoverse N2 code to add all the cores available in the FVP.

Otherwise, it’s possible that on Snapdragon laptops it’s not creating the HOB at all.

Rebecca

On Thu, Feb 2, 2023, at 12:34 PM, Matheus Medeiros via groups.io wrote:
Hi Rebecca!
Right after posting here, I saw the patch you posted on the "devel"
list. I compiled your code into a driver and was able to load it in a
Raspberry Pi 3. But the same was not possible on laptops with
Snapdragon CPUs, the driver fails to load and returns the EFI_NOT_FOUND
error. I think it's caused by GetFirstGuidHob(&gArmMpCoreInfoGuid)
returning NULL. Do you have any clues that might help me? 

Thanks!
Matheus Medeiros

On Thu, Feb 2, 2023 at 03:39 PM, Rebecca Cran wrote:


I committed multiprocessor support for AARCH64 last week. The platform
you’re building needs to include the MpServices driver from ArmPkg/Drivers.

Rebecca Cran

On Fri, Jan 20, 2023, at 12:59 PM, Matheus Medeiros via groups.io wrote:
Hi everyone.
I'm developing an application using EDK2 and I need to implement
multiprocessor support. For the X64 architecture I was able to use
EFI_MP_SERVICES_PROTOCOL to run code in other processors, but I also
need to use this functionality in AARCH64 processors. I tried using it
on two machines and was unable to use the MP Services protocol on any
of them. Is multiprocessor support not available for ARM machines? Or
is there any other protocol to use with this architecture?

Thanks
Matheus Medeiros




Matheus Medeiros
 

Thanks!
Do you think it is possible to fix the missing HOB on these laptops? Or would it require an updated firmware from the manufacturer?

Regards,
Matheus Medeiros

On Thu, Feb 2, 2023 at 04:45 PM, Rebecca Cran wrote:


Most platforms only claim to have a single core via the HOB, which will cause
that error. For example I’ve had to modify the Neoverse N2 code to add all
the cores available in the FVP.

Otherwise, it’s possible that on Snapdragon laptops it’s not creating the
HOB at all.

Rebecca

On Thu, Feb 2, 2023, at 12:34 PM, Matheus Medeiros via groups.io wrote:
Hi Rebecca!
Right after posting here, I saw the patch you posted on the "devel"
list. I compiled your code into a driver and was able to load it in a
Raspberry Pi 3. But the same was not possible on laptops with
Snapdragon CPUs, the driver fails to load and returns the EFI_NOT_FOUND
error. I think it's caused by GetFirstGuidHob(&gArmMpCoreInfoGuid)
returning NULL. Do you have any clues that might help me? 

Thanks!
Matheus Medeiros

On Thu, Feb 2, 2023 at 03:39 PM, Rebecca Cran wrote:


I committed multiprocessor support for AARCH64 last week. The platform
you’re building needs to include the MpServices driver from
ArmPkg/Drivers.

Rebecca Cran

On Fri, Jan 20, 2023, at 12:59 PM, Matheus Medeiros via groups.io wrote:
Hi everyone.
I'm developing an application using EDK2 and I need to implement
multiprocessor support. For the X64 architecture I was able to use
EFI_MP_SERVICES_PROTOCOL to run code in other processors, but I also
need to use this functionality in AARCH64 processors. I tried using it
on two machines and was unable to use the MP Services protocol on any
of them. Is multiprocessor support not available for ARM machines? Or
is there any other protocol to use with this architecture?

Thanks
Matheus Medeiros