[Linaro-uefi] Platforms/ARM/Juno: move to unicore PrePi

Message ID 1462172029-3897-1-git-send-email-ard.biesheuvel@linaro.org
State New
Headers show

Commit Message

Ard Biesheuvel May 2, 2016, 6:53 a.m.
Move to the unicore PrePi implementation. This is possible, since we only
support executing under ATF anyway, so only the boot CPU enters UEFI in
EL2, and booting multiple cores using the ARM_MP_CORE protocol is only
supported when using the LinuxLoader.

The reason we need to make this change is because Juno implements this
protocol using 32-bit wide mailbox registers, which is awkward on an
otherwise 64-bit architecture, and this is holding back progress for
other platforms that need to implement the ACPI parking protocol.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 Platforms/ARM/Juno/ArmJuno.dsc | 5 ++---
 Platforms/ARM/Juno/ArmJuno.fdf | 2 +-
 2 files changed, 3 insertions(+), 4 deletions(-)

Comments

Ryan Harkin May 3, 2016, 12:47 p.m. | #1
On 2 May 2016 at 07:53, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
> Move to the unicore PrePi implementation. This is possible, since we only
> support executing under ATF anyway, so only the boot CPU enters UEFI in
> EL2, and booting multiple cores using the ARM_MP_CORE protocol is only
> supported when using the LinuxLoader.
>
> The reason we need to make this change is because Juno implements this
> protocol using 32-bit wide mailbox registers, which is awkward on an
> otherwise 64-bit architecture, and this is holding back progress for
> other platforms that need to implement the ACPI parking protocol.
>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Tested-by: Ryan Harkin <ryan.harkin@linaro.org>

Tested with the first hunk dropped.

> ---
>  Platforms/ARM/Juno/ArmJuno.dsc | 5 ++---
>  Platforms/ARM/Juno/ArmJuno.fdf | 2 +-
>  2 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc
> index 09396c0f8b64..377faa4cac2f 100644
> --- a/Platforms/ARM/Juno/ArmJuno.dsc
> +++ b/Platforms/ARM/Juno/ArmJuno.dsc
> @@ -109,8 +109,7 @@
>    gArmTokenSpaceGuid.PcdSystemMemorySize|0x7F000000
>
>    # Juno Dual-Cluster profile
> -  gArmPlatformTokenSpaceGuid.PcdCoreCount|6
> -  gArmPlatformTokenSpaceGuid.PcdClusterCount|2
> +  gArmPlatformTokenSpaceGuid.PcdCoreCount|1
>

As agreed on IRC, please drop this hunk.  For others' info: we need
PcdCoreCount|6 to be able to compile Madt.aslc.


>    gArmTokenSpaceGuid.PcdVFPEnabled|1
>
> @@ -200,7 +199,7 @@
>    #
>    # PEI Phase modules
>    #
> -  ArmPlatformPkg/PrePi/PeiMPCore.inf
> +  ArmPlatformPkg/PrePi/PeiUniCore.inf
>
>    #
>    # DXE
> diff --git a/Platforms/ARM/Juno/ArmJuno.fdf b/Platforms/ARM/Juno/ArmJuno.fdf
> index 3983c20de8e0..9f50c6bb3cbb 100644
> --- a/Platforms/ARM/Juno/ArmJuno.fdf
> +++ b/Platforms/ARM/Juno/ArmJuno.fdf
> @@ -229,7 +229,7 @@ READ_STATUS        = TRUE
>  READ_LOCK_CAP      = TRUE
>  READ_LOCK_STATUS   = TRUE
>
> -  INF ArmPlatformPkg/PrePi/PeiMPCore.inf
> +  INF ArmPlatformPkg/PrePi/PeiUniCore.inf
>
>    FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
>      SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {
> --
> 2.7.4
>

Patch

diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc
index 09396c0f8b64..377faa4cac2f 100644
--- a/Platforms/ARM/Juno/ArmJuno.dsc
+++ b/Platforms/ARM/Juno/ArmJuno.dsc
@@ -109,8 +109,7 @@ 
   gArmTokenSpaceGuid.PcdSystemMemorySize|0x7F000000
 
   # Juno Dual-Cluster profile
-  gArmPlatformTokenSpaceGuid.PcdCoreCount|6
-  gArmPlatformTokenSpaceGuid.PcdClusterCount|2
+  gArmPlatformTokenSpaceGuid.PcdCoreCount|1
 
   gArmTokenSpaceGuid.PcdVFPEnabled|1
 
@@ -200,7 +199,7 @@ 
   #
   # PEI Phase modules
   #
-  ArmPlatformPkg/PrePi/PeiMPCore.inf
+  ArmPlatformPkg/PrePi/PeiUniCore.inf
 
   #
   # DXE
diff --git a/Platforms/ARM/Juno/ArmJuno.fdf b/Platforms/ARM/Juno/ArmJuno.fdf
index 3983c20de8e0..9f50c6bb3cbb 100644
--- a/Platforms/ARM/Juno/ArmJuno.fdf
+++ b/Platforms/ARM/Juno/ArmJuno.fdf
@@ -229,7 +229,7 @@  READ_STATUS        = TRUE
 READ_LOCK_CAP      = TRUE
 READ_LOCK_STATUS   = TRUE
 
-  INF ArmPlatformPkg/PrePi/PeiMPCore.inf
+  INF ArmPlatformPkg/PrePi/PeiUniCore.inf
 
   FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
     SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF PROCESSING_REQUIRED = TRUE {