UEFI - SEC Phase

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,負責處理所有PlatformRestart Events
2. Create 一個暫時的Region,在Memory Initialize 之前使用
3. 因為Boot的時後,整個code最開始是在 SEC Phase,所以Platform Designer Call PEI Foundation前可在SEC Phase Verify PEI FoundationSecurity,所以SEC PhaseSystem Trust root
4. Handoff messagePEI Foundation(SEC Phase最終目地),這個Message包括:
a. Platform Status
b. BFV (Boot Firmware Volume)Address Size
c. 暫時RAMAddress 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;

還有另外一個PPIFORM_INFORMATION_PPI 也可傳送Handoff Message
SEC_PLATFORM_INFORMATION_PPI.PlatformInformation() Define 一個 EFI_HEALTH_FLAGS
包含了ProcessorHardware 以及Itanium Process PLA(Processor Abstract Layer)code中有關於Process ResetStatus

下圖為 SEC Phase 執行的Flow

留言