1.7. OS 和平台符合性
ACPI 规范只包含接口规范。ACPI 不包含任何平台符合性要求。以下各节提供了针对引用 ACPI 定义接口的特定类别平台实现的指南,以及操作系统为完整支持 OSPM/ACPI 可能需要的增强功能指南。还提供了 ACPI 兼容操作系统的最低特性实现要求。
1.7.1. ACPI 定义接口的平台实现
系统平台通过平台硬件实现 ACPI 定义的硬件接口,并通过 ACPI 系统固件实现 ACPI 定义的软件接口和系统描述表。某些 ACPI 定义的接口和 OSPM 概念虽然适用于一种机器类别(例如移动系统),但可能不适用于另一种机器类别(例如多域企业服务器)。本规范无能力也无范围去规定所有平台类别,以及该平台类别应要求的、适当的 ACPI 定义接口。
鼓励平台设计指南作者针对特定设计指南所涵盖的系统平台类别,规定适当的 ACPI 定义接口和硬件要求。平台设计指南不应定义提供与 ACPI 规范中所定义功能类似的替代接口。
1.7.1.1. 设计指南的推荐特性和接口说明
设计指南中应使用通用的说明文本和类别名称来描述 ACPI 规范定义为平台类别要求的所有特性、概念和接口。下面列出了建议用于描述 ACPI 定义的特性、概念和接口的高层文本和类别名称集合。
注
下面所指定接口的定义和相关要求通常分散在 ACPI 规范的各处:
带 S5 覆盖的电源或睡眠按钮(也可位于通用空间中)
实时时钟唤醒闹钟控制/状态
用于电源管理和通用事件的 SCI/SMI 路由控制/状态
系统电源状态控制(睡眠/唤醒控制)
处理器电源状态控制(C 状态)
处理器节流控制/状态
处理器性能状态控制/状态
通用事件控制/状态
全局锁控制/状态
系统复位控制
嵌入式控制器控制/状态
SMBus 主机控制器控制/状态
智能电池子系统
ACPI 定义的通用寄存器接口以及 ACPI 命名空间中的对象定义。
通用事件处理
主板设备标识、配置和插入/移除
热区
电源资源控制
设备电源状态控制
系统电源状态控制
系统指示器
设备及设备控制:
处理器
控制方法电池
智能电池子系统
移动设备盖板
带 S5 覆盖的电源或睡眠按钮(也可位于固定空间中)
嵌入式控制器
风扇
通用总线桥
ATA 控制器
软盘控制器
GPE 块
模块
内存
与全局锁相关的接口
ACPI 事件编程模型
ACPI 定义的平台固件职责
ACPI 定义的状态定义:
全局系统电源状态(G 状态、S0、S5)
系统睡眠状态(S 状态 S1-S4)
设备电源状态(D 状态)
处理器电源状态(C 状态)
设备和处理器性能状态(P 状态)
1.7.1.2. 设计指南的术语示例
以下示例展示了客户端平台设计指南如何使用推荐术语来定义 ACPI 要求,其目标是为该系统类别要求健壮的配置和电源管理。
注
此示例仅作为如何使用 ACPI 术语的指南,不应解释为 ACPI 要求的陈述。
符合此平台设计指南的平台必须实现以下 ACPI 定义的系统特性、概念和接口,以及其相关事件模型:
系统地址映射接口
由系统固件提供的 ACPI 系统描述表
ACPI 定义的固定寄存器接口:
电源管理定时器控制/状态
带 S5 覆盖的电源或睡眠按钮(也可在通用寄存器空间中实现)
实时时钟唤醒闹钟控制/状态
通用事件控制/状态
用于电源管理和通用事件的 SCI/SMI 路由控制/状态(仅当系统支持传统模式时才要求控制)
系统电源状态控制(睡眠/唤醒控制)
处理器电源状态控制(用于 C1)
全局锁控制/状态(如果系统要求全局锁接口)
ACPI 定义的通用寄存器接口以及 ACPI 命名空间中的对象定义:
通用事件处理
主板设备标识、配置和插入/移除
系统电源状态控制(第 7.3 节)
设备及设备控制:
处理器
控制方法电池(或移动系统上的智能电池子系统)
智能电池子系统(或移动系统上的控制方法电池)
带 S5 覆盖的电源或睡眠按钮(也可在固定寄存器空间中实现)
当硬件中的某个逻辑寄存器在操作系统和固件环境之间共享时,与全局锁相关的接口
ACPI 事件编程模型
ACPI 定义的平台固件职责
ACPI 定义的状态定义:
系统睡眠状态(必须实现至少一种系统睡眠状态,S1-S4)
设备电源状态(必须依据设备类别规范实现 D 状态)
处理器电源状态(所有处理器都必须支持 C1 电源状态)
以下示例展示了设计指南如何使用推荐术语来定义对执行多个操作系统实例的系统的 ACPI 相关要求,其目标是为该系统类别要求健壮的配置和持续可用性。
注
此示例作为 ACPI 术语用法的指南提供。不应将其解释为 ACPI 要求的声明。
符合本平台设计指南的平台必须实现以下 ACPI 定义的系统特性和接口,以及与其关联的事件模型:
系统地址映射接口
由系统固件提供的 ACPI 系统描述表
ACPI 定义的固定寄存器接口:
电源管理定时器控制/状态
通用事件控制/状态
用于电源管理和通用事件的 SCI /SMI 路由控制/状态
(仅当系统支持传统模式时才要求控制)
系统电源状态控制(睡眠/唤醒控制)
处理器电源状态控制(用于 C1)
全局锁控制/状态(如果系统需要全局锁接口)
ACPI Namespace 中 ACPI 定义的通用寄存器接口和对象定义:
当硬件中的逻辑寄存器由 OS 和固件环境共享时,与全局锁相关的接口
ACPI 事件编程模型(第 5.6 节)
ACPI 定义的平台固件职责(第 15 节)
ACPI 定义的状态定义:
处理器电源状态(所有处理器都必须支持 C1 电源状态)
1.7.2. OSPM 实现
需要对 OS 进行增强,以支持 ACPI 定义的特性、概念和接口,以及适用于 OS 所运行系统平台类别的相关事件模型。这就是 OSPM 的实现。以下概述了支持所有 ACPI 定义接口所需的 OS 增强和要素。为了通过实现 OSPM 来支持 ACPI,OS 需要修改为:
使用系统地址映射接口。
查找并使用 ACPI 系统描述表。
解释 ACPI 机器语言(AML)。
枚举并配置 ACPI Namespace 中描述的主板设备。
与电源管理定时器交互。
与实时时钟唤醒闹钟交互。
进入 ACPI 模式(在传统硬件系统上)。
实现设备电源管理策略。
实现电源资源管理。
在调度器空闲处理程序中实现处理器电源状态。
控制处理器和设备性能状态。
实现 ACPI 热模型。
支持 ACPI 事件编程模型,包括处理 SCI 中断、管理固定事件、通用事件、嵌入式控制器中断以及动态设备支持。
支持获取和释放全局锁。
使用复位寄存器对系统进行复位。
提供用于影响电源管理策略的 API。
为 ACPI 定义的设备实现驱动程序支持。
实现支持系统指示器的 API。
支持所有系统状态 S1-S5。
1.7.3. OS 要求
以下列表描述了 OSPM/ACPI 兼容 OS 的最低要求:
在 Intel Architecture(IA)平台上,使用第 15 节获取系统地址映射:
INT 15H, E820H - 查询系统地址映射接口(参见第 15 节)
EFI GetMemoryMap() 启动服务函数(参见第 15 节)
查找并使用 ACPI 系统描述表(参见第 5 节)。
实现 AML 解释器,支持所有已定义的 AML 语法元素(参见第 20 节)。
支持 ACPI 事件编程模型,包括处理 SCI 中断、管理固定事件、通用事件、嵌入式控制器中断以及动态设备支持。
枚举并配置 ACPI Namespace 中描述的主板设备。
实现对本规范中定义的以下 ACPI 设备的支持:
嵌入式控制器设备(参见第 12 节)
GPE 块设备(参见第 9.11 节)
实现 ACPI 热模型(参见第 3.10 节)。
支持获取和释放全局锁。
支持由 OS 定向的电源管理(设备驱动程序负责按照
appendix-a中描述的设备电源管理类规范维护设备上下文)。