A couple of fixes I applied to get Cello in a slightly better shape
(although the observed SATA timeout issue requires a change in the
core code)
v2:
- added patch to disable second SATA controller on Overdrive
- use correct port mode mask for overdrive (#3)
- update binary AmdModulePkg modules to latest version
- add UEFI shell app to reflash to EFI code partition in the NOR
- add SMMU enable switch to Cello and Overdrive 1000
Ard Biesheuvel (10):
Platforms/AMD/Styx: remove incorrect timer frequency
Platforms/AMD/Overdrive: disable second SATA port
Platforms/AMD/Styx: set SATA port mode to Gen3 on all ports
Platforms/AMD/StyxDtbLoaderLib: disable SMMUs for absent hardware
Platform/AMD/Styx: add SMMU override to Cello and Overdrive1000
Platforms/AMD/Cello: add device tree support
Platforms/AMD/Cello: reduce core count to 4
Platforms/AMD/Cello: set firmware vendor field to 'LeMaker Cello'
Platforms/AMD/Styx/Binary: update binary modules to latest version
Platforms/AMD/Styx: add command line flash tool
Platforms/AMD/Styx/Applications/StyxFlashUefi/Scripts/GccBase.lds | 86 ++++++++++++++++++
Platforms/AMD/Styx/Applications/StyxFlashUefi/StyxFlashImage.S | 25 +++++
Platforms/AMD/Styx/Applications/StyxFlashUefi/StyxFlashUefi.c | 96 ++++++++++++++++++++
Platforms/AMD/Styx/Applications/StyxFlashUefi/StyxFlashUefi.inf | 53 +++++++++++
Platforms/AMD/Styx/Binary/AmdModulePkg/Gionb/Gionb.efi | Bin 43296 -> 36768 bytes
Platforms/AMD/Styx/Binary/AmdModulePkg/Gionb/Gionb.inf | 14 ++-
Platforms/AMD/Styx/Binary/AmdModulePkg/Iscp/IscpDxe.efi | Bin 262144 -> 262144 bytes
Platforms/AMD/Styx/Binary/AmdModulePkg/Iscp/IscpPei.efi | Bin 10336 -> 6976 bytes
Platforms/AMD/Styx/Binary/AmdModulePkg/SnpDxe/SnpDxePort0.efi | Bin 30272 -> 24992 bytes
Platforms/AMD/Styx/Binary/AmdModulePkg/SnpDxe/SnpDxePort1.efi | Bin 30272 -> 24992 bytes
Platforms/AMD/Styx/CelloBoard/CelloBoard.dsc | 39 ++++++--
Platforms/AMD/Styx/CelloBoard/CelloBoard.fdf | 9 ++
Platforms/AMD/Styx/Library/StyxDtbLoaderLib/StyxDtbLoaderLib.c | 9 +-
Platforms/AMD/Styx/Overdrive1000Board/Overdrive1000Board.dsc | 19 ++--
Platforms/AMD/Styx/OverdriveBoard/OverdriveBoard.dsc | 20 ++--
15 files changed, 338 insertions(+), 32 deletions(-)
create mode 100644 Platforms/AMD/Styx/Applications/StyxFlashUefi/Scripts/GccBase.lds
create mode 100644 Platforms/AMD/Styx/Applications/StyxFlashUefi/StyxFlashImage.S
create mode 100644 Platforms/AMD/Styx/Applications/StyxFlashUefi/StyxFlashUefi.c
create mode 100644 Platforms/AMD/Styx/Applications/StyxFlashUefi/StyxFlashUefi.inf
--
2.9.3
With
https://github.com/OP-TEE/optee_os/commit/66df8a2c723c8d3b2911701792b3ad1bb…
TOS_PLATFORM_FLAVOR must be set and not empty to prevent the error below:
core/arch/arm/plat-hikey/platform_config.h:60:2: error: #error Unknown console UART
Signed-off-by: Victor Chong <victor.chong(a)linaro.org>
---
platforms.config | 1 +
1 file changed, 1 insertion(+)
diff --git a/platforms.config b/platforms.config
index 6db1340..6fc8f1f 100644
--- a/platforms.config
+++ b/platforms.config
@@ -203,6 +203,7 @@ UEFI_IMAGE_DIR=HiKey
BUILD_ATF=yes
ATF_SPD=opteed
TOS_BIN=tee.bin
+TOS_PLATFORM_FLAVOR=hikey
BUILD_TOS=yes
SCP_BIN=OpenPlatformPkg/Platforms/Hisilicon/HiKey/Binary/mcuimage.bin
# Uncomment this to use UART0 as the EDK2 console
--
2.13.0
Hi Leif,
I am planning to upstream ZTE/Sanchip UEFI platform code to
OpenPlatformPkg. Are you compiling below master branch of below
OpenPlatformPkg tree with mainline edk2? My work is based on
96boards-hikey repo currently. Do you prefer to add all initial code
to one patch, or split to platform/driver/bds patches? Or you have
other plan for new platform?
https://git.linaro.org/uefi/OpenPlatformPkg.git
Thanks!
Jun
Switch to the generic implementation of the ResetSystem() runtime
service call, which is preferred over the one in EmbeddedPkg. This
involves selecting another DXE runtime driver, and given that the
Marvell platforms support PSCI these days, we can drop the existing
MvResetSystemLib entirely and switch to the shared PSCI based one.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel(a)linaro.org>
---
v2: - switch to PSCI while we're at it.
Platforms/Marvell/Armada/Armada.dsc.inc | 4 +-
Platforms/Marvell/Armada/Armada70x0.fdf | 2 +-
Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.c | 159 --------------------
Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf | 58 -------
4 files changed, 3 insertions(+), 220 deletions(-)
diff --git a/Platforms/Marvell/Armada/Armada.dsc.inc b/Platforms/Marvell/Armada/Armada.dsc.inc
index 475fc6d05379..c30f39fc12dd 100644
--- a/Platforms/Marvell/Armada/Armada.dsc.inc
+++ b/Platforms/Marvell/Armada/Armada.dsc.inc
@@ -94,7 +94,7 @@
# Reset and Time libraries
EfiTimeBaseLib|OpenPlatformPkg/Library/EfiTimeBaseLib/EfiTimeBaseLib.inf
RealTimeClockLib|OpenPlatformPkg/Platforms/Marvell/Armada/Library/RealTimeClockLib/RealTimeClockLib.inf
- EfiResetSystemLib|OpenPlatformPkg/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf
+ ResetSystemLib|ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf
# Network support
NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
@@ -416,7 +416,7 @@
MdeModulePkg/Universal/Variable/EmuRuntimeDxe/EmuVariableRuntimeDxe.inf
EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf
- EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
+ MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
diff --git a/Platforms/Marvell/Armada/Armada70x0.fdf b/Platforms/Marvell/Armada/Armada70x0.fdf
index 280b40be1d39..8091ea260261 100644
--- a/Platforms/Marvell/Armada/Armada70x0.fdf
+++ b/Platforms/Marvell/Armada/Armada70x0.fdf
@@ -99,7 +99,7 @@ FvNameGuid = 5eda4200-2c5f-43cb-9da3-0baf74b1b30c
INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
INF MdeModulePkg/Universal/Variable/EmuRuntimeDxe/EmuVariableRuntimeDxe.inf
INF EmbeddedPkg/EmbeddedMonotonicCounter/EmbeddedMonotonicCounter.inf
- INF EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
+ INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
INF OpenPlatformPkg/Drivers/I2c/MvI2cDxe/MvI2cDxe.inf
diff --git a/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.c b/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.c
deleted file mode 100644
index c0787aceac9c..000000000000
--- a/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/********************************************************************************
-Copyright (C) 2016 Marvell International Ltd.
-
-Marvell BSD License Option
-
-If you received this File from Marvell, you may opt to use, redistribute and/or
-modify this File under the following licensing terms.
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of Marvell nor the names of its contributors may be
- used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*******************************************************************************/
-
-
-#include <PiDxe.h>
-#include <Uefi.h>
-
-#include <Library/BaseLib.h>
-#include <Library/DebugLib.h>
-#include <Library/DxeServicesTableLib.h>
-#include <Library/IoLib.h>
-#include <Library/UefiLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiRuntimeLib.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
-
-#include <Guid/EventGroup.h>
-
-STATIC EFI_EVENT mResetSystemVirtualAddrChangeEvent;
-STATIC UINT64 mAddress;
-
-STATIC
-VOID
-EFIAPI
-LibResetSystemVirtualNotifyEvent (
- IN EFI_EVENT Event,
- IN VOID *Context
- )
-{
- //
- // Convert physical address to virtual address.
- //
- EfiConvertPointer (0x0, (VOID**)&mAddress);
- return;
-}
-
-/**
- Resets the entire platform.
-
- @param ResetType The type of reset to perform.
- @param ResetStatus The status code for the reset.
- @param DataSize The size, in bytes, of WatchdogData.
- @param ResetData For a ResetType of EfiResetCold, EfiResetWarm,
- or EfiResetShutdown the data buffer starts with
- a Null-terminated Unicode string, optionally
- followed by additional binary data.
-**/
-EFI_STATUS
-EFIAPI
-LibResetSystem (
- IN EFI_RESET_TYPE ResetType,
- IN EFI_STATUS ResetStatus,
- IN UINTN DataSize,
- IN VOID *ResetData OPTIONAL
- )
-{
- UINT32 Data;
-
- switch (ResetType) {
- case EfiResetCold:
- case EfiResetWarm:
- Data = MmioRead32 (mAddress);
- Data &= ~PcdGet32 (PcdResetRegMask);
- MmioWrite32 (mAddress, Data);
- break;
- case EfiResetShutdown:
- //
- // Currently there is no support for power-off platform
- //
- break;
- default:
- break;
- }
-
- return EFI_DEVICE_ERROR;
-}
-
-EFI_STATUS
-EFIAPI
-LibInitializeResetSystem (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
-{
- UINT64 Alignment;
- EFI_STATUS Status;
-
- mAddress = PcdGet64 (PcdResetRegAddress);
-
- Alignment = ~(SIZE_64KB - 1);
- //
- // Add 64KB aligned and 64KB long memory space
- //
- Status = gDS->AddMemorySpace (
- EfiGcdMemoryTypeMemoryMappedIo,
- mAddress & Alignment, SIZE_64KB,
- EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
- );
- if (EFI_ERROR (Status)) {
- ASSERT_EFI_ERROR (Status);
- return Status;
- }
-
- //
- // Mark 64KB aligned and 64KB long memory space as runtime
- //
- Status = gDS->SetMemorySpaceAttributes (mAddress & Alignment, SIZE_64KB,
- EFI_MEMORY_UC | EFI_MEMORY_RUNTIME);
- if (EFI_ERROR (Status)) {
- ASSERT_EFI_ERROR (Status);
- return Status;
- }
-
- //
- // Register for the virtual address change event
- //
- Status = gBS->CreateEventEx (
- EVT_NOTIFY_SIGNAL,
- TPL_NOTIFY,
- LibResetSystemVirtualNotifyEvent,
- NULL,
- &gEfiEventVirtualAddressChangeGuid,
- &mResetSystemVirtualAddrChangeEvent
- );
- ASSERT_EFI_ERROR (Status);
-
- return Status;
-}
diff --git a/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf b/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf
deleted file mode 100644
index 87fff5707909..000000000000
--- a/Platforms/Marvell/Library/ResetSystemLib/MvResetSystemLib.inf
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2016 Marvell International Ltd.
-#
-# Marvell BSD License Option
-#
-# If you received this File from Marvell, you may opt to use, redistribute and/or
-# modify this File under the following licensing terms.
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-#
-# * Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# * Neither the name of Marvell nor the names of its contributors may be
-# used to endorse or promote products derived from this software without
-# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-[Defines]
- INF_VERSION = 0x00010019
- BASE_NAME = Reset
- FILE_GUID = 9d1373c0-6fac-432c-88e7-818744dc45d9
- MODULE_TYPE = BASE
- VERSION_STRING = 1.0
- LIBRARY_CLASS = EfiResetSystemLib
-
-[Sources.common]
- MvResetSystemLib.c
-
-[Packages]
- MdePkg/MdePkg.dec
- OpenPlatformPkg/Platforms/Marvell/Marvell.dec
-
-[LibraryClasses]
- DebugLib
- DxeServicesTableLib
- IoLib
- UefiBootServicesTableLib
- UefiLib
- UefiRuntimeLib
-
-[Pcd]
- gMarvellTokenSpaceGuid.PcdResetRegAddress
- gMarvellTokenSpaceGuid.PcdResetRegMask
--
2.9.3
For historic reasons, ArmVExpress.dsc.inc defaulted to the ArmVExpress
MMIO-based implementation of *Efi*ResetSystemLib - invoked via
EmbeddedPkg/ResetRuntimeDxe.
Since the majority of our platforms are now 64-bit and PSCI-based, flip
this logic to default to the ArmPkg ArmSmcPsciResetSystemLib
implementation of ResetSystemLib - with ARM-targets retaining the old
behaviour.
At the same time update FVP and Juno targets to use the new generic
ResetSystemRuntimeDxe.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Leif Lindholm <leif.lindholm(a)linaro.org>
---
Platforms/ARM/Juno/ArmJuno.dsc | 3 +--
Platforms/ARM/Juno/ArmJuno.fdf | 2 +-
Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc | 2 +-
Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf | 2 +-
Platforms/ARM/VExpress/ArmVExpress.dsc.inc | 13 ++++++-------
5 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/Platforms/ARM/Juno/ArmJuno.dsc b/Platforms/ARM/Juno/ArmJuno.dsc
index 4ff2246822..bbaaf42aa2 100644
--- a/Platforms/ARM/Juno/ArmJuno.dsc
+++ b/Platforms/ARM/Juno/ArmJuno.dsc
@@ -41,7 +41,6 @@
ArmPlatformSysConfigLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf
NorFlashPlatformLib|ArmPlatformPkg/ArmJunoPkg/Library/NorFlashJunoLib/NorFlashJunoLib.inf
- EfiResetSystemLib|ArmPkg/Library/ArmPsciResetSystemLib/ArmPsciResetSystemLib.inf
TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf
CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf
@@ -236,7 +235,7 @@
MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
- EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
+ MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
diff --git a/Platforms/ARM/Juno/ArmJuno.fdf b/Platforms/ARM/Juno/ArmJuno.fdf
index 7de995a255..61d4f616f4 100644
--- a/Platforms/ARM/Juno/ArmJuno.fdf
+++ b/Platforms/ARM/Juno/ArmJuno.fdf
@@ -97,7 +97,7 @@ FvNameGuid = B73FE497-B92E-416e-8326-45AD0D270092
INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
- INF EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
+ INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
diff --git a/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc b/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
index 1e95971cdd..d194af5f91 100644
--- a/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
+++ b/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.dsc
@@ -240,7 +240,7 @@
}
MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
- EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
+ MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
diff --git a/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf b/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf
index 39fa325163..906364723c 100644
--- a/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf
+++ b/Platforms/ARM/VExpress/ArmVExpress-FVP-AArch64.fdf
@@ -89,7 +89,7 @@ FvNameGuid = 87940482-fc81-41c3-87e6-399cf85ac8a0
INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf
INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
- INF EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe.inf
+ INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
diff --git a/Platforms/ARM/VExpress/ArmVExpress.dsc.inc b/Platforms/ARM/VExpress/ArmVExpress.dsc.inc
index 0bad7c963c..3f6e50573c 100644
--- a/Platforms/ARM/VExpress/ArmVExpress.dsc.inc
+++ b/Platforms/ARM/VExpress/ArmVExpress.dsc.inc
@@ -83,7 +83,7 @@
PlatformPeiLib|ArmPlatformPkg/PlatformPei/PlatformPeiLib.inf
ArmPlatformSysConfigLib|ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf
NorFlashPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/NorFlashArmVExpressLib/NorFlashArmVExpressLib.inf
- EfiResetSystemLib|ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.inf
+ ResetSystemLib|ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf
!ifdef EDK2_ENABLE_PL111
# ARM PL111 Lcd Driver
LcdPlatformLib|ArmPlatformPkg/ArmVExpressPkg/Library/PL111LcdArmVExpressLib/PL111LcdArmVExpressLib.inf
@@ -247,15 +247,14 @@
BaseCryptLib|CryptoPkg/Library/BaseCryptLib/RuntimeCryptLib.inf
!endif
-[LibraryClasses.AARCH64.DXE_RUNTIME_DRIVER]
+[LibraryClasses.ARM]
#
# PSCI support in EL3 may not be available if we are not running under a PSCI
- # compliant secure firmware, but since the default VExpress EfiResetSystemLib
- # cannot be supported at runtime (due to the fact that the syscfg MMIO registers
- # cannot be runtime remapped), it is our best bet to get ResetSystem functionality
- # on these platforms.
+ # compliant secure firmware. Assume PSCI on AARCH64, and fall back to the
+ # syscfg MMIO register implementation on ARM.
+ # This will not work at actual runtime.
#
- EfiResetSystemLib|ArmPkg/Library/ArmPsciResetSystemLib/ArmPsciResetSystemLib.inf
+ EfiResetSystemLib|ArmPlatformPkg/ArmVExpressPkg/Library/ResetSystemLib/ResetSystemLib.inf
[LibraryClasses.ARM, LibraryClasses.AARCH64]
#
--
2.11.0