diff --git a/Platforms/AMD/Styx/AmdStyx.dec b/Platforms/AMD/Styx/AmdStyx.dec
index ad65fc9eaf8b..3bdb4f83f858 100644
--- a/Platforms/AMD/Styx/AmdStyx.dec
+++ b/Platforms/AMD/Styx/AmdStyx.dec
@@ -42,6 +42,9 @@
   gAmdStyxTokenSpaceGuid     = { 0x220d9653, 0x4a0e, 0x40bc, { 0xb3, 0x65, 0x2f, 0xbb, 0xa2, 0xd9, 0x03, 0x45 } }
   gAmdStyxMpCoreInfoGuid     = { 0x68efeabd, 0xcb77, 0x4aa5, { 0xbf, 0x0c, 0xa3, 0x31, 0xfc, 0xcf, 0x76, 0x66 } }
 
+  # used to manually order the dispatch of FdtDxe after AcpiPlatformDxe
+  gAmdStyxAcpiPlatformDxeFileGuid = { 0xf229c831, 0x6a35, 0x440b, { 0x9c, 0x84, 0xdd, 0x3b, 0xc7, 0x1e, 0x38, 0x65 } }
+
 [PcdsDynamic]
   gAmdStyxTokenSpaceGuid.PcdSocCoreCount|1|UINT32|0x00000100
   gAmdStyxTokenSpaceGuid.PcdSocCpuId|1|UINT32|0x00000101
diff --git a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
index 36db0e2211f3..3b3d36eea007 100644
--- a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
+++ b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
@@ -26,6 +26,7 @@
 #include <Library/UefiBootServicesTableLib.h>
 #include <Library/DebugLib.h>
 
+#include <AcpiPlatformParkingProtocol.h>
 
 #define MAX_ACPI_TABLES    12
 
@@ -55,6 +56,12 @@ AcpiPlatformEntryPoint (
   UINTN                     TableHandle;
   UINTN                     TableIndex;
 
+  // Move secondary cores to a Pen compliant with MP-Parking protocol
+  if (!FixedPcdGetBool (PcdPsciOsSupport) &&
+      FixedPcdGetBool (PcdTrustedFWSupport)) {
+    AmdStyxParkSecondaryCores();
+  }
+
   ZeroMem(AcpiTableList, sizeof(AcpiTableList));
 
   TableIndex = 0;
diff --git a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
index d78d7ef330d8..6a3d6ec0e949 100644
--- a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
+++ b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
@@ -28,10 +28,15 @@
 
 [Sources]
   AcpiPlatform.c
+  AcpiPlatformParkingProtocol.c
+
+[Sources.AARCH64]
+  AcpiPlatformParkingProtocolHelper.S
 
 [Packages]
   MdePkg/MdePkg.dec
   MdeModulePkg/MdeModulePkg.dec
+  AmdModulePkg/AmdModulePkg.dec
   OpenPlatformPkg/Platforms/AMD/Styx/AmdStyx.dec
 
 [LibraryClasses]
@@ -44,10 +49,18 @@
   UefiDriverEntryPoint
   AmdStyxHelperLib
   AmdStyxAcpiLib
+  ArmSmcLib
+  CacheMaintenanceLib
+
+[FixedPcd]
+  gAmdStyxTokenSpaceGuid.PcdParkingProtocolVersion
+  gAmdStyxTokenSpaceGuid.PcdParkingProtocolBase
+  gAmdStyxTokenSpaceGuid.PcdParkingProtocolSize
+  gAmdStyxTokenSpaceGuid.PcdPsciOsSupport
+  gAmdStyxTokenSpaceGuid.PcdTrustedFWSupport
 
 [Protocols]
   gEfiAcpiTableProtocolGuid                     # PROTOCOL ALWAYS_CONSUMED
 
 [Depex]
   gEfiAcpiTableProtocolGuid
-
diff --git a/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/AArch64/BdsLinuxLoader.c b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.c
similarity index 91%
rename from Platforms/AMD/Styx/OverdriveBoard/FdtDxe/AArch64/BdsLinuxLoader.c
rename to Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.c
index 6e0519edd9da..be85f3f442f0 100644
--- a/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/AArch64/BdsLinuxLoader.c
+++ b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.c
@@ -2,6 +2,7 @@
 *
 *  Copyright (c) 2011-2014, ARM Limited. All rights reserved.<BR>
 *  Copyright (c) 2014 - 2015, AMD Inc. All rights reserved.<BR>
+*  Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
 *
 *  This program and the accompanying materials
 *  are licensed and made available under the terms and conditions of the BSD License
@@ -18,11 +19,11 @@
 
 **/
 
+#include <Base.h>
+#include <Library/ArmLib.h>
 #include <Library/ArmSmcLib.h>
 #include <Library/CacheMaintenanceLib.h>
 #include <Library/PcdLib.h>
-#include <Base.h>
-#include <BdsLib/BdsInternal.h>
 
 #include <Common/CoreState.h>
 #include <IndustryStandard/ArmStdSmc.h>
@@ -67,7 +68,7 @@ AmdStyxBringupSecondary (
 
 VOID
 EFIAPI
-AmdStyxParkSecondaryCores(
+AmdStyxParkSecondaryCores (
   VOID
   )
 {
@@ -104,11 +105,7 @@ AmdStyxParkSecondaryCores(
   // Reserve the memory as RuntimeServices
   Status = gBS->AllocatePages (AllocateAddress, EfiRuntimeServicesCode,
                                EFI_SIZE_TO_PAGES (MpParkingSize ), &MpParkingBase );
-  if (EFI_ERROR (Status)) {
-    Print (L"Warning: Failed to reserve memory for MP-Parking protocol at 0x%lX, Status = %r\n",
-          MpParkingBase, Status);
-    // Even if there is a risk of memory corruption we carry on
-  }
+  ASSERT_EFI_ERROR (Status);
 
   // Relocate the Pen code
   CopyMem ((VOID*)(PenBase), (VOID*)&SecondariesPenStart, PenSize);
diff --git a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.h b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.h
new file mode 100644
index 000000000000..fb79a803026d
--- /dev/null
+++ b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.h
@@ -0,0 +1,19 @@
+/** @file
+*
+*  Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
+*
+*  This program and the accompanying materials
+*  are licensed and made available under the terms and conditions of the BSD License
+*  which accompanies this distribution.  The full text of the license may be found at
+*  http://opensource.org/licenses/bsd-license.php
+*
+*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+VOID
+EFIAPI
+AmdStyxParkSecondaryCores (
+  VOID
+  );
diff --git a/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/AArch64/BdsLinuxLoaderHelper.S b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocolHelper.S
similarity index 100%
rename from Platforms/AMD/Styx/OverdriveBoard/FdtDxe/AArch64/BdsLinuxLoaderHelper.S
rename to Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocolHelper.S
diff --git a/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/FdtDxe.c b/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/FdtDxe.c
index 08430730f6ca..58599e8e1714 100644
--- a/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/FdtDxe.c
+++ b/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/FdtDxe.c
@@ -117,11 +117,6 @@ FdtReadyToBoot (
   UINTN                         FdtBlobSize = 0;
   EFI_DEVICE_PATH               *FdtDevicePath;
 
-  // Move secondary cores to a Pen complaint with MP-Parking protocol
-  if (!FixedPcdGetBool (PcdPsciOsSupport) && FixedPcdGetBool (PcdTrustedFWSupport)) {
-    AmdStyxParkSecondaryCores();
-  }
-
   // Search for FDT blob in EFI partition
   Status = FdtOverrideDevicePath(L"fdt.dtb", &FdtDevicePath);
   if (!EFI_ERROR (Status)) {
diff --git a/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/FdtDxe.inf b/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/FdtDxe.inf
index 5653cac39b71..813324f6d308 100644
--- a/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/FdtDxe.inf
+++ b/Platforms/AMD/Styx/OverdriveBoard/FdtDxe/FdtDxe.inf
@@ -32,10 +32,6 @@
   BdsLinuxFdt.c
   LinuxLoaderHelper.c
 
-[Sources.AARCH64]
-  AArch64/BdsLinuxLoader.c
-  AArch64/BdsLinuxLoaderHelper.S  | GCC
-
 [Packages]
   ArmPkg/ArmPkg.dec
   EmbeddedPkg/EmbeddedPkg.dec
@@ -78,8 +74,6 @@
   gArmTokenSpaceGuid.PcdArmLinuxFdtAlignment
   gAmdStyxTokenSpaceGuid.PcdPsciOsSupport
   gAmdStyxTokenSpaceGuid.PcdTrustedFWSupport
-  gAmdStyxTokenSpaceGuid.PcdParkingProtocolBase
-  gAmdStyxTokenSpaceGuid.PcdParkingProtocolSize
 
 [Depex]
-  TRUE
+  AFTER gAmdStyxAcpiPlatformDxeFileGuid
