Cohen, Eugene
2015-05-16 15:02:30 UTC
Olivier (or if you prefer "Dear ArmPkg and ArmPlatformPkg maintainer"),
Here are three patches (in addition to the one I sent earlier) to fix issues I encountered booting the FVP Base platform using SEC from ArmPlatformPkg instead of Trusted Firmware. This boot path is still one where SEC runs at EL3 and the remaining boot stages run at EL2/EL1.
As a preface to these patch sets I should add that I'm unclear about the structure of the ARM platforms. From a directory naming perspective I see an ArmVExpressPkg which supports an FVP-AArch64 platform but I don't know whether this platform is intended to support both the FVP_Base platforms as well as the FVP_VE (Versatile Express) platforms. There are significant differences between these platforms, for example the GIC revision, the memory maps and peripherals are all different. As such it's not clear whether I'm making changes in the right place but that being said I am able to boot to the EFI Shell after these few fixes. Olivier, please advise what the proper way is to handle Versatile Express and Base platform differences.
The fixes break down as follows:
1. The intent on the FVP is to use main memory at 0x880000000 but a PCD value causes PEI and the DXE core to be loaded at a a sub-4GB address. This patch brings all of the DRAM usage into the same area.
2. The architectural timer was not advancing because the FVP Reference Counter, which feeds the processor's timer, must be started by EL3 firmware on the FVP Base platforms
3. Interrupts were not being delivered to the core because EL3 firmware must clear the ProcessorSleep bit in the GICv3 redistributor.
I've been trying to use the github development model for this so I've created a pull request with these changes for your convenience: https://github.com/tianocore/edk2/pull/10 . This tool has a significantly better code review capability than what is possible on a mailing list.
(My next efforts will be around extending EL3 into DXE to support SMM-style initialization but that's a future subject.)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eugene Cohen <***@hp.com<mailto:***@hp.com>>
Here are three patches (in addition to the one I sent earlier) to fix issues I encountered booting the FVP Base platform using SEC from ArmPlatformPkg instead of Trusted Firmware. This boot path is still one where SEC runs at EL3 and the remaining boot stages run at EL2/EL1.
As a preface to these patch sets I should add that I'm unclear about the structure of the ARM platforms. From a directory naming perspective I see an ArmVExpressPkg which supports an FVP-AArch64 platform but I don't know whether this platform is intended to support both the FVP_Base platforms as well as the FVP_VE (Versatile Express) platforms. There are significant differences between these platforms, for example the GIC revision, the memory maps and peripherals are all different. As such it's not clear whether I'm making changes in the right place but that being said I am able to boot to the EFI Shell after these few fixes. Olivier, please advise what the proper way is to handle Versatile Express and Base platform differences.
The fixes break down as follows:
1. The intent on the FVP is to use main memory at 0x880000000 but a PCD value causes PEI and the DXE core to be loaded at a a sub-4GB address. This patch brings all of the DRAM usage into the same area.
2. The architectural timer was not advancing because the FVP Reference Counter, which feeds the processor's timer, must be started by EL3 firmware on the FVP Base platforms
3. Interrupts were not being delivered to the core because EL3 firmware must clear the ProcessorSleep bit in the GICv3 redistributor.
I've been trying to use the github development model for this so I've created a pull request with these changes for your convenience: https://github.com/tianocore/edk2/pull/10 . This tool has a significantly better code review capability than what is possible on a mailing list.
(My next efforts will be around extending EL3 into DXE to support SMM-style initialization but that's a future subject.)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eugene Cohen <***@hp.com<mailto:***@hp.com>>