System Management Mode (SMM)
1. Overview
SMM是一個只有韌體才可以使用的操作模式,在SMM下主要可以處理電源管理,系統硬體控制或是OEM自己設計的功能。
SMM有如下幾個機制:
SMM有如下幾個機制:
- 只能被SMI戳起來
- CPU會在一個特定的定址空間執行SMM的code,這個空間基本上不能夠被其他人存取
- 進入SMM後,CPU會將現有的中斷和任務記錄起來
- OS產生的中斷在SMM中會無法使用
2.進入SMM
當CPU的實體SMI# pin收到SMI訊號或是APIC bus收到SMI message的話,CPU會等待所有指令停止然後把當前上下的指令記錄在SMRAM裡面,接著進入SMM後CPU會跟外部的硬體說我要開始處理SMI了並開始執行SMI Handler。3.離開SMM
唯一的方法就是在SMI Handler裡面執行RSM,RSM主要的目的是把剛剛存在SMRAM裡面的東西放回原位,之後CPU會跟外部硬體說我離開SMM了。4.System Management RAM (SMRAM)
SMRAM就是存放SMI Handler code和data的記憶體空間。- SMRAM的大小是64KB(default)
- SMRAM的physical address (SMBASE)是0x30000h(default)
- SMI Handler的code放在[SMBASE+8000h]
- CPU的Registers放在[SMBASE+FE00h]到[SMBASE+FFFFh]裡
4-1.SMRAM State Save Map
CPU的registers會從[SMBASE+FFFFh]開始依序放到[SMBASE+FE00h],有些register的值是可以更改的,但在RSM的時候會還原回去。
5 SMI Handler Execution Environment
5.1 初始化SMM執行環境
CPU把當前上下的的指令丟進SMRAM之後,CPU會把CR0裡面的PE和PG清掉讓當前的環境類似於real-address mode。
Bit | Name | Full Name | Description |
---|---|---|---|
0 | PE | Protected Mode Enable | If 1, system is in protected mode, else system is in real mode |
31 | PG | Paging | If 1, enable paging and use the § CR3 register, else disable paging. |
沒有留言:
張貼留言