Revision: 14477
          http://sourceforge.net/p/edk2/code/14477
Author:   oliviermartin
Date:     2013-07-17 06:23:07 +0000 (Wed, 17 Jul 2013)
Log Message:
-----------
ArmPlatformPkg: Removed the check on the CpuId to release the secondary cores 
from their mailbox spinning

The idea is to remove the PCD PcdGicPrimaryCoreId to make the port easier (and 
also to allow changing
the primary boot CPU without adding more platform specific code to UEFI).

There is a risk the mailboxes contain garbage at boot time. But it should be 
easy enough to clear the
mailboxes when starting UEFI to workaround this limitation.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <[email protected]>

Modified Paths:
--------------
    trunk/edk2/ArmPlatformPkg/PrePeiCore/MainMPCore.c
    trunk/edk2/ArmPlatformPkg/PrePi/MainMPCore.c

Modified: trunk/edk2/ArmPlatformPkg/PrePeiCore/MainMPCore.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/PrePeiCore/MainMPCore.c   2013-07-17 02:21:58 UTC 
(rev 14476)
+++ trunk/edk2/ArmPlatformPkg/PrePeiCore/MainMPCore.c   2013-07-17 06:23:07 UTC 
(rev 14477)
@@ -45,7 +45,6 @@
   UINT32                  CoreId;
   VOID                    (*SecondaryStart)(VOID);
   UINTN                   SecondaryEntryAddr;
-  UINTN                   AcknowledgedCoreId;
 
   ClusterId = GET_CLUSTER_ID(MpId);
   CoreId    = GET_CORE_ID(MpId);
@@ -88,8 +87,8 @@
     SecondaryEntryAddr = MmioRead32 
(ArmCoreInfoTable[Index].MailboxGetAddress);
 
     // Acknowledge the interrupt and send End of Interrupt signal.
-    ArmGicAcknowledgeInterrupt (PcdGet32(PcdGicDistributorBase), 
PcdGet32(PcdGicInterruptInterfaceBase), &AcknowledgedCoreId, NULL);
-  } while ((SecondaryEntryAddr == 0) && (AcknowledgedCoreId != PcdGet32 
(PcdGicPrimaryCoreId)));
+    ArmGicAcknowledgeInterrupt (PcdGet32(PcdGicDistributorBase), 
PcdGet32(PcdGicInterruptInterfaceBase), NULL, NULL);
+  } while (SecondaryEntryAddr == 0);
 
   // Jump to secondary core entry point.
   SecondaryStart = (VOID (*)())SecondaryEntryAddr;

Modified: trunk/edk2/ArmPlatformPkg/PrePi/MainMPCore.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/PrePi/MainMPCore.c        2013-07-17 02:21:58 UTC 
(rev 14476)
+++ trunk/edk2/ArmPlatformPkg/PrePi/MainMPCore.c        2013-07-17 06:23:07 UTC 
(rev 14477)
@@ -62,7 +62,6 @@
   UINT32                  CoreId;
   VOID                    (*SecondaryStart)(VOID);
   UINTN                   SecondaryEntryAddr;
-  UINTN                   AcknowledgedCoreId;
 
   ClusterId = GET_CLUSTER_ID(MpId);
   CoreId    = GET_CORE_ID(MpId);
@@ -95,8 +94,8 @@
     SecondaryEntryAddr = MmioRead32 
(ArmCoreInfoTable[Index].MailboxGetAddress);
 
     // Acknowledge the interrupt and send End of Interrupt signal.
-    ArmGicAcknowledgeInterrupt (PcdGet32(PcdGicDistributorBase), 
PcdGet32(PcdGicInterruptInterfaceBase), &AcknowledgedCoreId, NULL);
-  } while ((SecondaryEntryAddr == 0) && (AcknowledgedCoreId != PcdGet32 
(PcdGicPrimaryCoreId)));
+    ArmGicAcknowledgeInterrupt (PcdGet32(PcdGicDistributorBase), 
PcdGet32(PcdGicInterruptInterfaceBase), NULL, NULL);
+  } while (SecondaryEntryAddr == 0);
 
   // Jump to secondary core entry point.
   SecondaryStart = (VOID (*)())SecondaryEntryAddr;

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to