2019年6月16日 星期日

System Management Mode (SMM)

System Management Mode (SMM)

1. Overview

SMM是一個只有韌體才可以使用的操作模式,在SMM下主要可以處理電源管理,系統硬體控制或是OEM自己設計的功能。
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。
BitNameFull NameDescription
0PEProtected Mode EnableIf 1, system is in protected mode, else system is in real mode
31PGPagingIf 1, enable paging and use the § CR3 register, else disable paging.

沒有留言:

張貼留言