The current GIC revision detection code infers the GIC revision from
the AA64PFR0_EL1.GIC feature bit that tells us whether the GIC system
register interface is implemented in the hardware, and then proceeds
to attempt and enable it.
The library containing this code deliberately does not cache the
detected revision since it may execute in place before PEI memory
has been set up.
However, since the detection code runs very often, and is quite
heavy-weight when running under virtualization (especially KVM),
this series refactors the GIC revision detection to:
- use fewer system register accesses if possible (*)
- provide an alternative that does cache the detected revision
- use the DT supplied revision when executing on a DT based platform
Changes since v1:
- the original patch #1 which implements (*) above was already merged as
SVN r17596, so it has been dropped from this series
- added R-b's and acks from Laszlo
Ard Biesheuvel (6):
ArmPkg: merge ArmGicV[23]Lib.h into ArmGicLib.h
ArmPkg: split off ArmGicArchLib from ArmGicLib
ArmPkg: copy ArmGicArchLib to ArmGicArchSecLib
ArmPkg: cache detected revision in ArmGicArchLib
ArmVirtPkg: record GIC revision in dynamic PCD
ArmVirtPkg: implement DT-based ArmGicArchLib
ArmPkg/ArmPkg.dec
| 1 +
ArmPkg/ArmPkg.dsc
| 1 +
ArmPkg/Drivers/ArmGic/ArmGicLib.c
| 3 -
ArmPkg/Drivers/ArmGic/ArmGicLib.inf
| 3 +-
ArmPkg/Drivers/ArmGic/ArmGicSecLib.c
| 2 -
ArmPkg/Drivers/ArmGic/ArmGicSecLib.inf
| 3 +-
ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c
| 3 +-
ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Lib.h
| 54 ----------
ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Dxe.c
| 3 +-
ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Lib.h
| 68 ------------
ArmPkg/Include/Library/ArmGicArchLib.h
| 33 ++++++
ArmPkg/Include/Library/ArmGicLib.h
| 108 +++++++++++++++++---
ArmPkg/{Drivers/ArmGic => Library/ArmGicArchLib}/AArch64/ArmGicArchLib.c
| 23 ++++-
ArmPkg/{Drivers/ArmGic => Library/ArmGicArchLib}/Arm/ArmGicArchLib.c
| 23 ++++-
ArmPkg/{Drivers/ArmCpuLib/ArmCortexA5xLib/ArmCortexA5xLib.inf =>
Library/ArmGicArchLib/ArmGicArchLib.inf} | 28 +++--
ArmPkg/{Drivers/ArmGic => Library/ArmGicArchSecLib}/AArch64/ArmGicArchLib.c
| 2 -
ArmPkg/{Drivers/ArmGic => Library/ArmGicArchSecLib}/Arm/ArmGicArchLib.c
| 2 -
ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.inf =>
ArmPkg/Library/ArmGicArchSecLib/ArmGicArchSecLib.inf | 18
++--
ArmPlatformPkg/ArmPlatformPkg-2ndstage.dsc
| 2 +
ArmPlatformPkg/ArmPlatformPkg.dsc
| 3 +
ArmPlatformPkg/ArmRealViewEbPkg/ArmRealViewEb.dsc.inc
| 3 +
ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
| 3 +
ArmVirtPkg/ArmVirt.dsc.inc
| 1 +
ArmVirtPkg/ArmVirtPkg.dec
| 7 +-
ArmVirtPkg/ArmVirtQemu.dsc
| 1 +
ArmVirtPkg/ArmVirtXen.dsc
| 1 +
ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.c
| 75 ++++++++++++++
OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.inf =>
ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.inf | 25 +++--
ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.c
| 2 +
ArmVirtPkg/VirtFdtDxe/VirtFdtDxe.inf
| 1 +
30 files changed, 306 insertions(+), 196 deletions(-)
delete mode 100644 ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Lib.h
delete mode 100644 ArmPkg/Drivers/ArmGic/GicV3/ArmGicV3Lib.h
create mode 100644 ArmPkg/Include/Library/ArmGicArchLib.h
copy ArmPkg/{Drivers/ArmGic => Library/ArmGicArchLib}/AArch64/ArmGicArchLib.c
(83%)
copy ArmPkg/{Drivers/ArmGic => Library/ArmGicArchLib}/Arm/ArmGicArchLib.c (83%)
copy ArmPkg/{Drivers/ArmCpuLib/ArmCortexA5xLib/ArmCortexA5xLib.inf =>
Library/ArmGicArchLib/ArmGicArchLib.inf} (60%)
rename ArmPkg/{Drivers/ArmGic =>
Library/ArmGicArchSecLib}/AArch64/ArmGicArchLib.c (95%)
rename ArmPkg/{Drivers/ArmGic => Library/ArmGicArchSecLib}/Arm/ArmGicArchLib.c
(95%)
copy ArmPlatformPkg/Drivers/ArmTrustZone/ArmTrustZone.inf =>
ArmPkg/Library/ArmGicArchSecLib/ArmGicArchSecLib.inf (64%)
create mode 100644 ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.c
copy OvmfPkg/Library/XenConsoleSerialPortLib/XenConsoleSerialPortLib.inf =>
ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.inf (56%)
--
1.9.1
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel