ACPI 中文文档ACPI 中文文档
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
  • 第 5 章

    • 总览
    • 5.1. 系统描述表架构概述
    • 5.2. ACPI 系统描述表
      • 5.2.1. 保留位和字段
      • 5.2.2. 兼容性
      • 5.2.3. 地址格式
      • 5.2.4. 通用唯一标识符 (UUID)
      • 5.2.5. 根系统描述指针 (RSDP)
      • 5.2.6. 系统描述表头
      • 5.2.7. 根系统描述表 (RSDT)
      • 5.2.8. 扩展系统描述表 (XSDT)
      • 5.2.9. 固定 ACPI 描述表 (FADT)
      • 5.2.10. 固件 ACPI 控制结构 (FACS)
      • 5.2.11. 定义块
      • 5.2.12. 多个APIC描述表(MADT)
      • 5.2.13. 全局系统中断
      • 5.2.14. 智能电池表 (SBST)
      • 5.2.15. 嵌入式控制器启动资源表 (ECDT)
      • 5.2.16. 系统资源关联表 (SRAT)
      • 5.2.17. 系统局部性信息表 (SLIT)
      • 5.2.18. 更正平台错误轮询表 (CPEP)
      • 5.2.19. 最大系统特性表 (MSCT)
      • 5.2.20. ACPI RAS 功能表 (RASF)
      • 5.2.21. 内存电源状态表 (MPST)
      • 5.2.22. 启动图形资源表 (BGRT)
      • 5.2.23. 固件性能数据表 (FPDT)
      • 5.2.24. 通用定时器描述表 (GTDT)
      • 5.2.25. NVDIMM 固件接口表 (NFIT)
      • 5.2.26. 安全设备 (SDEV) ACPI 表
      • 5.2.27. 异构内存属性表(HMAT)
      • 5.2.28. 平台调试触发器表 (PDTT)
      • 5.2.29. 处理器属性拓扑表 (PPTT)
      • 5.2.30. 平台健康评估表 (PHAT)
    • 5.3. ACPI 命名空间
    • 5.4. 定义块编码
    • 5.5. 控制方法和 ACPI 源语言 (ASL)
      • 5.5.1. ASL 报表
      • 5.5.2. 控制方法执行
        • 5.5.2.1. 论点
        • 5.5.2.2. 方法调用约定
        • 5.5.2.3. 局部变量和本地创建的数据对象
        • 5.5.2.4. 进入运营区域
          • 5.5.2.4.1. 运营地区
          • 5.5.2.4.2. CMOS 协议
          • 5.5.2.4.3. PCI 设备 BAR 目标协议
          • 5.5.2.4.4. 声明IPMI运营区域
          • 5.5.2.4.5. 声明 GeneralPurposeIO 操作区域
          • 5.5.2.4.6. 声明 GenericSerialBus 操作区域
            • 5.5.2.4.6.1. 声明 GenericSerialBus 字段
            • 5.5.2.4.6.2. 声明和使用 GenericSerialBus 数据缓冲区
            • 5.5.2.4.6.3. 使用通用串行总线协议
          • 5.5.2.4.7. 声明PCC运营区域
    • 5.6. ACPI 事件编程模型
      • 5.6.1. ACPI 事件编程模型组件
      • 5.6.2. ACPI 事件类型
      • 5.6.3. 固定事件处理
      • 5.6.4. 通用事件处理
      • 5.6.5. GPIO 信号 ACPI 事件
      • 5.6.6. 设备对象通知
      • 5.6.7. 设备类特定对象
      • 5.6.8. 对象、方法和资源的预定义ACPI名称
      • 5.6.9. 中断信号ACPI事件
      • 5.6.10. 使用设备 _PRW 对象管理唤醒事件
    • 5.7. 预定义对象
    • 5.8. 系统配置对象

5.2.26. 安全设备 (SDEV) ACPI 表

安全设备 (SDEV) 表是系统已知的安全设备的列表。该表适用于安全OS分区和非安全OS分区共存的系统。安全设备是受安全OS保护的设备,防止来自非安全OS的访问。

该表提供了有关哪些设备应受安全OS保护的提示。该表的执行由安全OS及其之前的任何预引导环境提供。该表本身不提供任何安全保证。系统制造商有责任确保操作系统配置为启用使用SDEV表的安全功能。

系统中的每个设备都有三个选项:

  1. 设备列在SDEV中。 “允许切换……”标志很明确。这提示设备应始终受到安全OS的保护。例如,安全OS可能要求用于用户身份验证的设备必须受到保护,以防止恶意软件的篡改。

  2. 设备列在SDEV中。 “允许切换...”标志已设置。这暗示设备最初应由安全OS保护,但由安全OS自行决定是否允许在请求时将设备移交给非安全OS。任何期望设备在安全模式下运行的OS组件在切换完成后将无法正常工作。例如,设备可用于多种目的,包括用户身份验证。如果安全OS确定驱动设备所需的组件丢失,它可能会将设备的控制权释放给非安全OS。在这种情况下,设备无法进行安全认证,但其他操作可以正常进行。

  3. 设备未在SDEV 中列出。例如,现状是没有提供任何提示。任何期望设备处于安全模式的OS组件将无法正常工作。

OS供应商提供有关SDEV表中可以列出哪些设备的指南。换句话说,哪些设备与安全OS兼容,以及哪些设备应设置“允许切换”标志。

请参阅下表了解SDEVACPI定义。

表 5.118 SDEV ACPI 表 字段字节长度字节偏移描述
标题
- 签名40“SDEV”。表签名
- 长度44整个表的长度(以字节为单位)。
- 修订181
- 校验和19整个表的总和必须为零。
- OEM ID61010 OEM ID
- OEM 表 ID81616对于SDEV表,表ID是制造商型号ID。
- OEM 修订424OEM 所提供OEM 表ID 的修订版SDEV 表。
- 创建者ID42828创建该表的实用程序的供应商ID。
- 创建者修订43232创建表的实用程序的修订。
安全设备结构[]—3636包含一个或多个安全设备结构的结构列表,如下一节中定义。

5.2.26.1. 安全设备结构

表 5.119 安全设备结构 值描述
0基于ACPI_NAMESPACE_DEVICE的安全设备。
1基于 PCIe 端点设备的安全设备。
所有其他值保留以供将来使用。为了向前兼容,软件通过跳过长度字段指示的适当字节数来跳过它不理解的结构。所有新设备结构必须分别包含类型、标志和长度字段作为前 3 个字段。

5.2.26.1.1. 基于ACPI_NAMESPACE_DEVICE的安全设备结构

表 5.120 ACPI_NAMESPACE_DEVICE 基于安全设备结构 字段字节长度字节偏移描述
类型100x00:ACPI集成设备
旗帜11位 0:允许切换到非安全OS。所有其他位均保留且必须为零。位 1:存在安全访问组件。所有其他位均保留且必须为零。
长度22该条目的长度(以字节为单位)。
设备标识符偏移24在安全ACPI设备结构中,以空结尾的ASCII字符串的偏移量,该字符串包含对此设备的ACPI命名空间对象的完全限定引用。 (例如,\\_SB.I2C0 表示南桥嵌入式 I2C 设备的 ACPI 对象名称;数据字段中省略引号)。有关ACPI名称空间对象的完全限定引用,请参阅ACPI规范。
设备标识符长度26设备标识符字符串的长度(以字节为单位),包括终止字节。
供应商特定数据偏移28在安全ACPI设备结构中,供应商提供的设备特定数据的偏移量。
供应商特定数据长度21010供应商提供的设备特定的数据长度。
安全访问组件偏移21212在基于ACPI_NAMESPACE_DEVICE的安全设备结构中,在安全OS中执行设备所需的安全访问组件列表的偏移量。仅当“安全访问组件存在”位被设置时才存在。
安全访问组件长度21414安全访问组件数据列表的长度。仅当“安全访问组件存在”位被设置时才存在。
表 5.121 安全访问组件类型 值描述
------
0基于识别的安全访问组件。安全设备至少需要一个。当存在多个标识组件时,优先级由列表顺序确定。见表 5.122
1基于内存的安全访问组件。见表5.123
所有其他值保留以供将来使用。为了向前兼容,软件通过跳过长度字段指示的适当字节数来跳过它不理解的结构。所有新设备结构必须分别包含类型、标志和长度字段作为前 3 个字段。
表 5.122 基于身份的安全访问组件 字段字节长度字节偏移描述
------------
类型100x00:标识组件。见表5.121
旗帜11保留以供将来使用。
长度22该条目的长度(以字节为单位)。
硬件标识符偏移24标识组件结构中包含硬件标识符的空终止ASCII字符串的偏移量。硬件标识符是PNP或ACPIID。有效的 PNP ID 格式必须为“AAA####”,其中 A 是大写字母,# 是十六进制数字。有效的 ACPI ID 格式必须为“NNNN####”,其中 N 是大写字母或数字。硬件标识符是必填字段。
硬件标识符长度26硬件标识符的长度(以字节为单位),包括终止字节。

子系统标识符偏移| 2 | 8 | 在标识组件结构中,包含子系统标识符的空终止ASCII字符串的偏移量。子系统标识符是PNP或ACPIID。硬件标识符是PNP或ACPIID。有效的 PNP ID 格式必须为“AAA####”,其中 A 是大写字母,# 是十六进制数字。有效的 ACPI ID 格式必须为“NNNN####”,其中 N 是大写字母或数字。子系统标识符是可选的。如果子系统标识符不存在。该值应为 0。 子系统标识符长度 | 2 | 10 | 10子系统标识符的长度(以字节为单位),包括终止字节。 硬件修订| 2 | 12 | 12硬件修订。 存在硬件修订| 1 | 14 | 14如果为 0,则忽略硬件修订版。 存在类别代码 | 1 | 15 | 15如果为 0,则忽略PCI兼容类代码。 PCI-兼容基类| 1 | 16 | 16 PCI兼容基类代码。 PCI-兼容子类| 1 | 17 | 17 PCI-兼容子类代码。 PCI-兼容编程接口| 1 | 18 | 18 PCI兼容编程接口代码。

表 5.123 基于内存的安全访问组件 字段字节长度字节偏移描述
类型100x01:内存组件。
旗帜11保留以供将来使用。
长度22该条目的长度(以字节为单位)。
保留44填充。
内存地址基址88内存组件的起始地址。
内存长度81616内存组件的长度(以字节为单位)。

5.2.26.1.2. 基于 PCIe 端点设备的设备结构

表 5.124 基于 PCIe 端点设备的设备结构 字段字节长度字节偏移描述
类型100x01:PCIe 端点设备。
旗帜11位 0:允许切换到非安全OS。所有其他位均保留且必须为零。
长度22该条目的长度(以字节为单位)。
PCI 段号24PCI 设备的段号。
起始巴士号码26该字段描述安全设备所在的总线号(由PCI主桥生成的第一个PCI总线的总线号)。
PCI 路径偏移28指向安全PCI设备结构数据区域中PCI路径条目偏移量的指针。 PCI路径描述了从主机桥到设备的分层路径。例如,N 深层次结构中的设备由 N 个{PCI 设备编号,PCI 功能编号}对标识,其中 N 是正整数。偶数编号的偏移量包含设备编号,奇数编号的偏移量包含功能编号。第一个 {Device, Function} 对驻留在由“Start Bus Number”字段标识的总线上。每个后续对都驻留在前一对所标识的设备总线后面的总线上。目标设备的身份(总线、设备和功能)是通过递归地遍历这 N 个{设备,功能}对来获得的。
PCI 路径长度21010 PCI路径条目的长度。
供应商特定数据偏移21212特定于设备的数据的偏移量。
供应商特定数据长度21414特定于设备的数据长度。

示例

下表是为 PCIe 设备(总线 1、开发 2、功能 1)实现基于 PCIe 端点设备的设备结构的示例,该设备是 PCIe 根端口(总线 0、开发 18、功能 0)的子端口。

表 5.125 基于 PCIe 端点设备的设备结构示例 字段字节长度字节偏移价值
类型100x01:PCIe 端点设备。
旗帜110x01
长度220x18
PCI 段号240x0
起始巴士号码260x0
PCI 路径偏移280x10(16DEC)
PCI 路径长度21010 0x4
供应商特定数据偏移21212 0x14(20DEC)
供应商特定数据长度21414 0x4
PCI 路径
PCI 设备11616 0x12(18DEC)
PCI 功能11717 0x0
PCI 设备11818 0x2
PCI 功能11919 0x1
供应商特定数据4200x死牛肉
Prev
5.2.25. NVDIMM 固件接口表 (NFIT)
Next
5.2.27. 异构内存属性表(HMAT)