Security(SEC) Phase
SEC Phase 簡介
SEC是reset 或 power-on 後 PI ( Platform Initialization)的第一個phase定義在Platform Initialization Specification, Ver. 1.2.1,Volume 1, Chapter 13。SEC必須確保firmware的 "完整"。 SEC他是相依於platform及CPU的,也就是說必須針對不同的CPU或平台來做移植。另外,SEC大部分的實作都是在assembly下的,而且是不可以壓縮的。
SEC Phase 的責任
SEC有四個主要的任務分別如下:
1. Restart SEC必須要處理所有的platform restart event,包含開機、重開機或是其他異常的重啟。
2. Memory Sotre SEC必須要建立一塊臨時的memory在系統初始化前使用。使用例如CAR( Cache as Ram)或SRAM的技術。
3. Root of Trustestart SEC從power on 開始要尋找和驗證PEI的最初步驟。目的是要保證Processor最開始的code是可以信賴的。
4. Passing 傳送Handoff訊息和把control給PEI Fondation。傳送的訊息包含了a. 平台狀態、b. BFV(Boot Firmware Volume)位置及大小、c. temporary RAM的位置大小等等。
SEC透過
EFI_PEI_STARTUP_DESCRIPTOR
將上述Passing的資料pass給PEI。
EFI_PEI_STARTUP_DESCRIPTOR
的資料結構是長這樣子的:
1 2 3 4 5 |
typedef struct { UINTN BootFirmwareVolume; UINTN SizeOfCacheAsRam; EFI_PEI_PPI_DESCRIPTOR *DispatchTable; } EFI_PEI_STARTUP_DESCRIPTOR; |
SEC Platform Information PPI
在上面我們有提到SEC利用(強制使用)
EFI_PEI_STARTUP_DESCRIPTOR這個資料結構將Handoff德資訊pass給PEI。另外,我們也可以pass"額外"(optional)的PPI
EFI_SEC_PLATFORM_INFORMATION_PPI給PEI。這個PPI 抽象化了PEI Fondation所需要用來discover dispatching PEIM的起始位置的platform-specific資訊。這個PPI也可以存在
EFI_PEI_STARTUP_DESCRIPTOR這個資料結構的最後一個參數裡(*DispatchTable)。
Health Flag Bit Format
Health Flag Bit Format
在SEC_PLATFORM_INFORMATION_PPI.PlatformInformation()
定義了PFI_HEALTH_FLAGS
存放由microcode、hardware或是Itanium才有的PAL 產生的CPU status。Health Flag的bit format如下圖:
下圖則是每一個bit的說明。
Self-Test State Parameter
Self-test state定義的參數for IA-32 Intel® processors 和 Intel® Itanium® processor family 是一樣的。某些 bit可能沒辦法直接對應到IA-32的CPU,這時候讀到的值就會是NULL
下圖說明了每一個bit 的意義。
如果Status顯示functionally restricted,我們可以從vm,ia,fp得到failure的訊息。下面列出導致functionally restricted的情況:
1. Processor 或 PAL偵測到且獨立出錯誤的component,所以不會被使用。
2. Processor必須至少要有一個可以用的memory unit、ALU、shifter及branch unit。
3. Floating-point may be disable。
4. For Itanium,RSE(Register Stack Engine)is not required to work,但register renaming logic必須要能正常work。
5. Processor-controlled caches和register files之間的path在測試的過程中必須要能work。
6. 讀取firmware address space必須要能正常work。
Processor-Specific Detail
下面以IA-32為例,解釋SEC Phase在IA-32架構下的運作狀況。
1. Locating PEI Foundation。
2. 使用 architecture define的Handoff state把control交給PEI。
3. 初始化processor-controlled memory resource例如processor data cache。
參考資料:http://clhjoe.blogspot.tw/2012/05/uefipi-3-securitysec-phase.html
VOLUME 1: Platform Initialization Specification Pre-EFI Initialization Core Interface Version 1.2.1
限會員,要發表迴響,請先登入