diff --git a/Platforms/AMD/Styx/AcpiTables/AcpiTables.inf b/Platforms/AMD/Styx/AcpiTables/AcpiTables.inf
index de5c20100734..e0e9c40f6599 100644
--- a/Platforms/AMD/Styx/AcpiTables/AcpiTables.inf
+++ b/Platforms/AMD/Styx/AcpiTables/AcpiTables.inf
@@ -86,5 +86,4 @@
   gAmdStyxTokenSpaceGuid.PcdPsciOsSupport
   gAmdStyxTokenSpaceGuid.PcdTrustedFWSupport
   gAmdStyxTokenSpaceGuid.PcdParkingProtocolVersion
-  gAmdStyxTokenSpaceGuid.PcdParkingProtocolBase
 
diff --git a/Platforms/AMD/Styx/AcpiTables/Madt.c b/Platforms/AMD/Styx/AcpiTables/Madt.c
index ac98693d5f0f..0fe3d9e1b611 100644
--- a/Platforms/AMD/Styx/AcpiTables/Madt.c
+++ b/Platforms/AMD/Styx/AcpiTables/Madt.c
@@ -52,11 +52,11 @@
 #endif
 
 #define PARKING_PROTOCOL_VERSION             (FixedPcdGet32 (PcdParkingProtocolVersion))
-#define PARKED_BASE_ADDRESS                  (FixedPcdGet64 (PcdParkingProtocolBase))
 #define PARKED_OFFSET                        ( 4096 )
 
 #define CORES_PER_CLUSTER                    (FixedPcdGet32 (PcdSocCoresPerCluster))
-#define PARKED_ADDRESS(ClusterId, CoreId)    (PARKED_BASE_ADDRESS + (CORES_PER_CLUSTER * ClusterId + CoreId) * PARKED_OFFSET)
+#define PARKED_ADDRESS(Base, ClusterId, CoreId) \
+        ((Base) + (CORES_PER_CLUSTER * ClusterId + CoreId) * PARKED_OFFSET)
 
 
 /* Macro to populate EFI_ACPI_5_1_GIC_STRUCTURE */
@@ -69,7 +69,7 @@
   EFI_ACPI_5_1_GIC_ENABLED,             /* UINT32 Flags */                    \
   PARKING_PROTOCOL_VERSION,             /* UINT32 ParkingProtocolVersion */   \
   PerfInt,                              /* UINT32 PerformanceInterruptGsiv */ \
-  PARKED_ADDRESS(ClusterId, CoreId),    /* UINT64 ParkedAddress */            \
+  0,                                    /* UINT64 ParkedAddress */            \
   GIC_BASE,                             /* UINT64 PhysicalBaseAddress */      \
   GICV_BASE,                            /* UINT64 GICV */                     \
   GICH_BASE,                            /* UINT64 GICH */                     \
@@ -188,7 +188,8 @@ BuildGicC (
   EFI_ACPI_5_1_GIC_STRUCTURE *GicC,
   UINT32 CpuNum,
   UINT32 ClusterId,
-  UINT32 CoreId
+  UINT32 CoreId,
+  EFI_PHYSICAL_ADDRESS MpParkingBase
   )
 {
   UINT32 MpId, PmuSpi;
@@ -206,7 +207,7 @@ BuildGicC (
   GicC->AcpiProcessorUid = MpId;
   GicC->Flags = EFI_ACPI_5_1_GIC_ENABLED;
   GicC->ParkingProtocolVersion = PARKING_PROTOCOL_VERSION;
-  GicC->ParkedAddress = PARKED_ADDRESS(ClusterId, CoreId);
+  GicC->ParkedAddress = PARKED_ADDRESS(MpParkingBase, ClusterId, CoreId);
   GicC->PhysicalBaseAddress = GIC_BASE;
   GicC->GICV = GICV_BASE;
   GicC->GICH = GICH_BASE;
@@ -265,7 +266,7 @@ BuildGicM (
 
 EFI_ACPI_DESCRIPTION_HEADER *
 MadtHeader (
-  VOID
+  UINT64     MpParkingBase
   )
 {
   EFI_ACPI_5_1_GIC_STRUCTURE             *GicC;
@@ -292,7 +293,8 @@ MadtHeader (
 
     Status = BuildGicC (GicC, CpuNum,
                 ArmCoreInfoTable[CpuNum].ClusterId,
-                ArmCoreInfoTable[CpuNum].CoreId
+                ArmCoreInfoTable[CpuNum].CoreId,
+                MpParkingBase
                 );
     ASSERT_EFI_ERROR (Status);
 
diff --git a/Platforms/AMD/Styx/AmdStyx.dec b/Platforms/AMD/Styx/AmdStyx.dec
index 3bdb4f83f858..bec1d21ee4bb 100644
--- a/Platforms/AMD/Styx/AmdStyx.dec
+++ b/Platforms/AMD/Styx/AmdStyx.dec
@@ -108,8 +108,7 @@
   # UEFI entry point
   gAmdStyxTokenSpaceGuid.PcdUefiEntryAddress|0x8000E80000|UINT64|0x000a0000
 
-  # Parking Protocol (re-use 32K at start of DRAM)
+  # Parking Protocol
   gAmdStyxTokenSpaceGuid.PcdParkingProtocolVersion|1|UINT32|0x000b0000
-  gAmdStyxTokenSpaceGuid.PcdParkingProtocolBase|0x8000E80000|UINT64|0x000b0001
   gAmdStyxTokenSpaceGuid.PcdParkingProtocolSize|0x0000008000|UINT64|0x000b0002
 
diff --git a/Platforms/AMD/Styx/Common/AmdStyxAcpiLib.h b/Platforms/AMD/Styx/Common/AmdStyxAcpiLib.h
index f2de82e3860c..6d6ca03ae5a2 100644
--- a/Platforms/AMD/Styx/Common/AmdStyxAcpiLib.h
+++ b/Platforms/AMD/Styx/Common/AmdStyxAcpiLib.h
@@ -26,7 +26,7 @@
 
 EFI_ACPI_DESCRIPTION_HEADER *FadtTable (void);
 EFI_ACPI_DESCRIPTION_HEADER *FacsTable (void);
-EFI_ACPI_DESCRIPTION_HEADER *MadtHeader (void);
+EFI_ACPI_DESCRIPTION_HEADER *MadtHeader (UINT64 MpParkingBase);
 EFI_ACPI_DESCRIPTION_HEADER *GtdtHeader (void);
 EFI_ACPI_DESCRIPTION_HEADER *DsdtHeader (void);
 EFI_ACPI_DESCRIPTION_HEADER *McfgHeader (void);
diff --git a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
index 3b3d36eea007..5c6a00e9eef8 100644
--- a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
+++ b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
@@ -55,11 +55,21 @@ AcpiPlatformEntryPoint (
   EFI_ACPI_TABLE_PROTOCOL   *AcpiTable;
   UINTN                     TableHandle;
   UINTN                     TableIndex;
+  EFI_PHYSICAL_ADDRESS      MpParkingBase;
 
   // Move secondary cores to a Pen compliant with MP-Parking protocol
   if (!FixedPcdGetBool (PcdPsciOsSupport) &&
       FixedPcdGetBool (PcdTrustedFWSupport)) {
-    AmdStyxParkSecondaryCores();
+
+    // Allocate Parking area (4KB-aligned, 4KB per core) as Reserved memory
+    Status = gBS->AllocatePages (AllocateAnyPages, EfiReservedMemoryType,
+                    EFI_SIZE_TO_PAGES (FixedPcdGet64 (PcdParkingProtocolSize)),
+                    &MpParkingBase);
+    ASSERT_EFI_ERROR (Status);
+
+    AmdStyxParkSecondaryCores(MpParkingBase);
+  } else {
+    MpParkingBase = 0;
   }
 
   ZeroMem(AcpiTableList, sizeof(AcpiTableList));
@@ -67,7 +77,7 @@ AcpiPlatformEntryPoint (
   TableIndex = 0;
   AcpiTableList[TableIndex++] = FadtTable();
   AcpiTableList[TableIndex++] = DsdtHeader();
-  AcpiTableList[TableIndex++] = MadtHeader();
+  AcpiTableList[TableIndex++] = MadtHeader(MpParkingBase);
   AcpiTableList[TableIndex++] = GtdtHeader();
   AcpiTableList[TableIndex++] = Dbg2Header();
   AcpiTableList[TableIndex++] = SpcrHeader();
diff --git a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
index 6a3d6ec0e949..931a86ed0123 100644
--- a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
+++ b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
@@ -54,7 +54,6 @@
 
 [FixedPcd]
   gAmdStyxTokenSpaceGuid.PcdParkingProtocolVersion
-  gAmdStyxTokenSpaceGuid.PcdParkingProtocolBase
   gAmdStyxTokenSpaceGuid.PcdParkingProtocolSize
   gAmdStyxTokenSpaceGuid.PcdPsciOsSupport
   gAmdStyxTokenSpaceGuid.PcdTrustedFWSupport
diff --git a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.c b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.c
index be85f3f442f0..98bdd53a82cc 100644
--- a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.c
+++ b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.c
@@ -69,11 +69,9 @@ AmdStyxBringupSecondary (
 VOID
 EFIAPI
 AmdStyxParkSecondaryCores (
-  VOID
+  EFI_PHYSICAL_ADDRESS     MpParkingBase
   )
 {
-  EFI_STATUS               Status;
-  EFI_PHYSICAL_ADDRESS     MpParkingBase;
   UINTN                    MpParkingSize;
   EFI_PHYSICAL_ADDRESS     PenBase;
   UINTN                    PenSize;
@@ -88,9 +86,6 @@ AmdStyxParkSecondaryCores (
   ArmCoreInfoTable = AmdStyxGetArmCoreInfoTable (&ArmCoreCount);
   ASSERT (ArmCoreInfoTable != NULL);
 
-  // Get Parking area (4KB-aligned, 4KB per core)
-  MpParkingBase = FixedPcdGet64 (PcdParkingProtocolBase);
-  ASSERT ((MpParkingBase & (SIZE_4KB - 1)) == 0);
   MpParkingSize = ArmCoreCount * SIZE_4KB;
   ASSERT (MpParkingSize <= FixedPcdGet64 (PcdParkingProtocolSize));
 
@@ -102,11 +97,6 @@ AmdStyxParkSecondaryCores (
   PenBase = (EFI_PHYSICAL_ADDRESS)((UINTN)MpParkingBase + SIZE_2KB + sizeof(UINT64));
   PenSize  = (UINTN)&SecondariesPenEnd - (UINTN)&SecondariesPenStart;
 
-  // Reserve the memory as RuntimeServices
-  Status = gBS->AllocatePages (AllocateAddress, EfiRuntimeServicesCode,
-                               EFI_SIZE_TO_PAGES (MpParkingSize ), &MpParkingBase );
-  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
index fb79a803026d..05a63f2fba2b 100644
--- a/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.h
+++ b/Platforms/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformParkingProtocol.h
@@ -15,5 +15,5 @@
 VOID
 EFIAPI
 AmdStyxParkSecondaryCores (
-  VOID
+  EFI_PHYSICAL_ADDRESS     MpParkingBase
   );
