mirror of https://github.com/acidanthera/audk.git
ArmPlatformPkg/Sec: Fixed Primary Non-Cold Boot Path
Signed-off-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13499 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
ae42bc88ee
commit
8cfd2e2457
|
@ -56,7 +56,7 @@ CEntryPoint (
|
|||
ArmPlatformSecInitialize (MpId);
|
||||
|
||||
// Primary CPU clears out the SCU tag RAMs, secondaries wait
|
||||
if (IS_PRIMARY_CORE(MpId)) {
|
||||
if (IS_PRIMARY_CORE(MpId) && (SecBootMode == ARM_SEC_COLD_BOOT)) {
|
||||
if (ArmIsMpCore()) {
|
||||
// Signal for the initial memory is configured (event: BOOT_MEM_INIT)
|
||||
ArmCallSEV ();
|
||||
|
@ -150,17 +150,19 @@ TrustedWorldInitialization (
|
|||
ArmPlatformSecTrustzoneInit (MpId);
|
||||
|
||||
// Setup the Trustzone Chipsets
|
||||
if (IS_PRIMARY_CORE(MpId)) {
|
||||
if (ArmIsMpCore()) {
|
||||
// Signal the secondary core the Security settings is done (event: EVENT_SECURE_INIT)
|
||||
ArmCallSEV ();
|
||||
}
|
||||
} else if ((SecBootMode & ARM_SEC_BOOT_MASK) == ARM_SEC_COLD_BOOT) {
|
||||
// The secondary cores need to wait until the Trustzone chipsets configuration is done
|
||||
// before switching to Non Secure World
|
||||
if (SecBootMode == ARM_SEC_COLD_BOOT) {
|
||||
if (IS_PRIMARY_CORE(MpId)) {
|
||||
if (ArmIsMpCore()) {
|
||||
// Signal the secondary core the Security settings is done (event: EVENT_SECURE_INIT)
|
||||
ArmCallSEV ();
|
||||
}
|
||||
} else {
|
||||
// The secondary cores need to wait until the Trustzone chipsets configuration is done
|
||||
// before switching to Non Secure World
|
||||
|
||||
// Wait for the Primary Core to finish the initialization of the Secure World (event: EVENT_SECURE_INIT)
|
||||
ArmCallWFE ();
|
||||
// Wait for the Primary Core to finish the initialization of the Secure World (event: EVENT_SECURE_INIT)
|
||||
ArmCallWFE ();
|
||||
}
|
||||
}
|
||||
|
||||
// Call the Platform specific function to execute additional actions if required
|
||||
|
|
|
@ -73,6 +73,10 @@ _WaitInitMem:
|
|||
b _SetupSecondaryCoreStack
|
||||
|
||||
_InitMem:
|
||||
// If we are not doing a cold boot in this case we should assume the Initial Memory to be already initialized
|
||||
cmp r10, #ARM_SEC_COLD_BOOT
|
||||
bne _SetupPrimaryCoreStack
|
||||
|
||||
// Initialize Init Boot Memory
|
||||
bl ASM_PFX(ArmPlatformSecBootMemoryInit)
|
||||
|
||||
|
|
|
@ -75,6 +75,10 @@ _WaitInitMem
|
|||
b _SetupSecondaryCoreStack
|
||||
|
||||
_InitMem
|
||||
// If we are not doing a cold boot in this case we should assume the Initial Memory to be already initialized
|
||||
cmp r10, #ARM_SEC_COLD_BOOT
|
||||
bne _SetupPrimaryCoreStack
|
||||
|
||||
// Initialize Init Boot Memory
|
||||
bl ArmPlatformSecBootMemoryInit
|
||||
|
||||
|
|
Loading…
Reference in New Issue