x86 UEFI系统启动阶段CPU特权模式/环的机制问询
现代UEFI x86平台初始化特权模式相关问题解答
一、特权模式定义、切换时机与方式
- x86系统启动初始处于实模式,地址空间仅1MiB,UEFI的PEI阶段前期会在此模式下完成最基础的硬件初始化(如内存控制器、CPU核心配置),随后会切换到保护模式,部分平台会进一步进入64位长模式以突破1MiB内存限制:切换操作通过修改
CR0寄存器的PE位(保护模式启用位)、加载全局描述符表(GDT)完成;长模式切换则需额外设置CR4的PAE位及IA32_EFERMSR的LME位。 - Intel文档中MCHBAR访问区分的BIOS/SMM/OS模式里,BIOS模式并非独立特权级,而是指UEFI在SMM之外的执行上下文(处于最高特权级Ring 0)。SMM(系统管理模式)是x86的Ring -1特权级环境,是硬件触发的隔离执行空间,属于现有通用模式中特权等级最高的,不存在比SMM更具特权的通用执行模式。三者的MCHBAR访问权限优先级为:BIOS模式 > SMM > OS模式。
二、UEFI各阶段的特权级情况
- PEI阶段:前期运行在实模式,后期切换至保护模式/Ring 0;部分平台的PEI会进入64位长模式,但多数仍以32位保护模式为主。
- DXE阶段:全程运行在Ring 0(64位长模式或32位保护模式),所有DXE驱动均拥有最高系统特权,阶段内无特权级区分——因为UEFI初始化过程无需用户态/内核态的隔离,所有代码都需要直接访问硬件资源。
三、微码加载后的硬件配置锁定机制
- 你的猜测成立:Intel平台加载微码后,会通过特定MSR或芯片组配置寄存器锁定PCIe配置空间、MCHBAR等关键硬件资源的写入权限,防止后续OS或恶意代码修改核心配置。例如SGX相关的
IA32_SGX_PRMRR_PHYS_BASE、IA32_SGX_PRMRR_PHYS_MASKMSR,在初始化完成后会被锁定;部分芯片组还会通过MCHBAR_LOCK配置位(多位于PCI配置寄存器)锁定MCHBAR的修改权限,逻辑与SGX的PRM lock一致。 - 以coreboot的SGX实现为例,初始化流程中会设置
IA32_SGX_CONTROLMSR的LOCK位,禁止后续对SGX相关配置的修改,这正是这类锁定机制的具体体现。
内容的提问来源于stack exchange,提问作者Benedict Schlütter
相关产品推荐
相关产品推荐

