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(-)
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 {
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