当前位置: 代码迷 >> 综合 >> UEFI SMM
  详细解决方案

UEFI SMM

热度:12   发布时间:2023-12-14 22:19:50.0

SMM 介绍

SMM (System Management Mode) 是Intel IA32/Intel64 CPU 架构的一种特殊模式。CPU

通过SMI(System Management Interrupt) 进入SMM 模式。然后,CPU 保存当前环境,跳转到

预先定义的地址,执行完后通过RSM指令返回。目前主流的的操作系统和Intel CPU 都支持SMM.

     BIOS 对于SMM 的支持包括以下几个方面:

  1.      初始化SMRAM
  2.      提供平台相关的SMM 回调函数

SMM 的运行分为两阶段:

1 SMRAM 初始化  在DXE 阶段, SMM IPL/Core 驱动负责打开SMRAM, 创建SMRAM 的

Memory Map, 为其他SMM 驱动提供必要的服务,最后关闭并锁住SMRAM.

 2 SMI 管理  当系统SMI 产生,SMM CPU/Core 驱动负责建立SMI 执行环境,找出SMI

    Handler, 并且调用 。

 

SmmIpl

SmmIpl (smm Initialization Program Loader), 顾名思义,是指把SmmCore 加载到smram 的一

段程序。流程如下:

 

SMM IPL 基本会使用由Memory Controller 提供的SMM_ACCESS

 

 

 

SmmIplReadyToLocakEventNotify 函数

smmIplReadyToLockEventNotify 是由platform 负责通知SmmIpl 来关闭并锁住SMRAM.

SmmIpl 再通知SmmCore, 来关闭SmmCore 的部分服务,例如Dispatch SMM 驱动。

 

 

检查是否已经Lock. 如果是的话,直接返回。

检查是否由DxesmmReadyToLockProtocol 触发的ReadyToLock 事件,如果不是的话,

则表明是ReadytoBoot 事件产生,打印警告信息。

锁住Smram.

关闭所有需要关闭的事件。

通知smmCore 产生了ReadyToLock 事件。

设置标志位表示SmmLock 已经发生。