Ard Biesheuvel
2015-07-06 18:26:23 UTC
This fixes an issue reported by Ryan Harkin where 32-bit ARM platforms without
PSCI compliant firmware cannot be rebooted or powered off successfully at
boot time.
This is caused by a change which aimed to prevent system register accesses at
runtime. These registers are not virtually remapped, so their availability is
not guaranteed in that case. However, since the reboot/poweroff driver now
uses PSCI unconditionally, these non-PSCI platforms break.
This series addresses this regression by introducing a new system register
access library which switches into a non-functional mode at runtime, and wiring
it up for 32-bit VExpress platforms.
Ard Biesheuvel (3):
ArmPlatformPkg/ArmVExpressPkg: add ArmPlatformSysConfigLib for runtime
ArmVExpressPkg: use ArmVExpressSysConfigRuntimeLib by default
ArmVExpressPkg: use PSCI for system reset only on AARCH64 platforms
ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc | 3 ++-
ArmPlatformPkg/ArmVExpressPkg/Library/{ArmVExpressSysConfigLib/ArmVExpressSysConfig.c => ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.c} | 10 ++++++++++
ArmPlatformPkg/ArmVExpressPkg/Library/{ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf => ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.inf} | 12 +++++++-----
3 files changed, 19 insertions(+), 6 deletions(-)
copy ArmPlatformPkg/ArmVExpressPkg/Library/{ArmVExpressSysConfigLib/ArmVExpressSysConfig.c => ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.c} (93%)
copy ArmPlatformPkg/ArmVExpressPkg/Library/{ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf => ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.inf} (65%)
PSCI compliant firmware cannot be rebooted or powered off successfully at
boot time.
This is caused by a change which aimed to prevent system register accesses at
runtime. These registers are not virtually remapped, so their availability is
not guaranteed in that case. However, since the reboot/poweroff driver now
uses PSCI unconditionally, these non-PSCI platforms break.
This series addresses this regression by introducing a new system register
access library which switches into a non-functional mode at runtime, and wiring
it up for 32-bit VExpress platforms.
Ard Biesheuvel (3):
ArmPlatformPkg/ArmVExpressPkg: add ArmPlatformSysConfigLib for runtime
ArmVExpressPkg: use ArmVExpressSysConfigRuntimeLib by default
ArmVExpressPkg: use PSCI for system reset only on AARCH64 platforms
ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc | 3 ++-
ArmPlatformPkg/ArmVExpressPkg/Library/{ArmVExpressSysConfigLib/ArmVExpressSysConfig.c => ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.c} | 10 ++++++++++
ArmPlatformPkg/ArmVExpressPkg/Library/{ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf => ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.inf} | 12 +++++++-----
3 files changed, 19 insertions(+), 6 deletions(-)
copy ArmPlatformPkg/ArmVExpressPkg/Library/{ArmVExpressSysConfigLib/ArmVExpressSysConfig.c => ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.c} (93%)
copy ArmPlatformPkg/ArmVExpressPkg/Library/{ArmVExpressSysConfigLib/ArmVExpressSysConfigLib.inf => ArmVExpressSysConfigRuntimeLib/ArmVExpressSysConfigRuntimeLib.inf} (65%)
--
1.9.1
1.9.1