SEC Phase (Security)
Why??
1. 需要用Assembly 完成C無法處理的工作,像是CPU 的 特殊Register (MSR , MTRR , CPX)
2. C 需要Memory當作Stack處理Local Variable,但是剛Boot的時後,Memory還沒被Initialize 所以無法使用,這時後需要 Cache As Ram。
3. 使CPU進入 Protected Mode (Flat Mode)。
Task
1. 系統Boot / Restart 的Entry point,負責處理所有Platform的Restart Events
2. Create 一個暫時的Region,在Memory Initialize 之前使用
3. 因為Boot的時後,整個code最開始是在 SEC Phase,所以Platform Designer 在Call PEI Foundation前可在SEC Phase Verify PEI Foundation的Security,所以SEC Phase是System Trust root。
4. 傳Handoff message到PEI Foundation(SEC Phase最終目地),這個Message包括:
a. Platform Status
b. BFV (Boot Firmware Volume)的Address 和 Size
c. 暫時RAM的Address 和 Size
d. Stack Address 和 Size
Data Structure 為:EFI_PEI_STARTUP_DESCRIPTOR
typedef struct {UINTN BootFirmwareVolume;UINTN SizeOfCacheAsRam;EFI_PEI_PPI_DESCRIPTOR *DispatchTable;} EFI_PEI_STARTUP_DESCRIPTOR;
還有另外一個PPI:FORM_INFORMATION_PPI 也可傳送Handoff Message
在SEC_PLATFORM_INFORMATION_PPI.PlatformInformation() Define 一個 EFI_HEALTH_FLAGS,
包含了Processor,Hardware 以及Itanium Process的 PLA(Processor Abstract Layer),code中有關於Process Reset的Status。
下圖為 SEC Phase 執行的Flow
留言
張貼留言