5.2.24. 通用定时器描述表 (GTDT)
本节介绍通用定时器描述表 (GTDT) 的格式,该表为 OSPM 提供有关系统通用定时器配置的信息。通用定时器 (GT) 是在基于 ARM 处理器的系统上实现的标准定时器接口。 GT硬件规范可在_ACPI相关文档链接_ (http://uefi.org/acpi) 的_ARM 架构_ 标题下找到。 GTDT为OSPM提供有关系统GT中断配置的信息,适用于每个处理器定时器和平台(内存映射)定时器。
GT规范定义了以下每处理器定时器:
安全EL1定时器
非安全EL1定时器
*EL2定时器
虚拟EL1计时器
虚拟EL2定时器
并定义以下内存映射平台定时器:
GT 区块
Arm 通用看门狗
| 表 5.98 GTDT 表结构 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 标题 | |||
| - 签名 | 4 | 0 | “GTDT”。通用定时器描述表的签名。 |
| - 长度 | 4 | 4 | 整个通用定时器描述表的长度(以字节为单位)。 |
| - 修订 | 1 | 8 | 3 |
| - 校验和 | 1 | 9 | 整个表的总和必须为零。 |
| - OEMID | 6 | 10 | 10 OEM ID。 |
| - OEM 表 ID | 8 | 16 | 16制造商型号ID。 |
| - OEM 修订 | 4 | 24 | OEM 提供的OEM 表ID 的修订版。 |
| - 创建者ID | 4 | 28 | 28创建该表的实用程序的供应商ID。 |
| - 创建者修订 | 4 | 32 | 32创建表的实用程序的修订。 |
| CntControlBase 物理地址 | 8 | 36 | 36计数器控制块所在的 64 位物理地址。如果系统实现EL3(安全扩展),则该值是可选的。如果未提供,则该字段必须为 0xFFFFFFFFFFFFFFFF。 |
| 保留 | 4 | 44 | 44必须为零 |
| 安全EL1 定时器GSIV | 4 | 48 | 48 GSIV 用于安全EL1 计时器。该值是可选的,因为在非安全环境(EL2或EL1)中执行的操作系统将忽略这些字段的内容。 |
| 安全 EL1 定时器标志 | 4 | 52 | 52安全EL1计时器的标志(定义如下)。该值是可选的,因为在非安全环境(EL2或EL1)中执行的操作系统将忽略该字段的内容。 |
| 非安全EL1 定时器GSIV | 4 | 56 | 56 GSIV用于非安全EL1计时器。 |
| 非安全EL1 定时器标志 | 4 | 60 | 非安全EL1计时器的标志(定义如下)。 |
| 虚拟EL1 计时器GSIV | 4 | 64 | 64 GSIV 为虚拟EL1 计时器。 |
| 虚拟EL1 定时器标志 | 4 | 68 | 68虚拟EL1计时器的标志(定义如下) |
| EL2 定时器 GSIV | 4 | 72 | 72 GSIV 用于 EL2 计时器。 |
| EL2 定时器标志 | 4 | 76 | 76 EL2 定时器的标志(定义如下)。 |
| CntReadBase 物理地址 | 8 | 80 | 计数器读取块所在的 64 位物理地址。如果系统实现EL3(安全扩展),则该值是可选的。如果未提供,则该字段必须为 0xFFFFFFFFFFFFFFFF。 |
| 平台定时器计数 | 4 | 88 | 88 Platform Timer Structure[] 数组中的条目数 |
| 平台定时器偏移 | 4 | 92 | 92平台计时器结构 [] 数组相对于该表开头的偏移量 |
| 虚拟EL2 计时器GSIV | 4 | 96 | 96 GSIV 为虚拟EL2 计时器。对于实施 ARMv8.1VHE 的系统,此字段是强制性的。对于未实现 ARMv8.1VHE 的系统,该字段为 0。 |
| 虚拟EL2 定时器标志 | 4 | 100 | 100虚拟EL2计时器的标志(定义如下)。对于实施 ARMv8.1VHE 的系统,此字段是必需的。对于未实现 ARMv8.1VHE 的系统,该字段为 0。 |
| 平台定时器结构[] | — | 平台定时器偏移 | 平台定时器类型结构数组,描述该平台上可用的内存映射定时器。这些结构将在下面的部分中描述。 |
以下标志各自具有相同的定义,如下表所示:安全EL1定时器标志、非安全EL1定时器标志、EL2定时器标志、虚拟EL1定时器标志和虚拟EL2定时器标志。
| 表 5.99 标志定义:安全EL1定时器、非安全EL1定时器、EL2定时器、虚拟EL1定时器和虚拟EL2定时器 位字段 | 位偏移 | 位数 | 描述 |
|---|---|---|---|
| 定时器中断模式 | 0 | 1 | 该位指示定时器中断的模式: 1:中断为边沿触发 0:中断为电平触发 |
| 定时器中断极性 | 1 | 1 | 该位指示定时器中断的极性: 1:中断为低电平有效 0:中断为高电平有效 |
| 始终在线的能力 | 2 | 1 | 该位指示定时器实现的始终开启功能: 1:无论处理器的电源状态如何,该定时器都保证断言其中断并唤醒处理器。必须支持ARM通用定时器生成中断的所有方法,并且必须能够唤醒处理器。 0:当其关联的处理器进入低功耗状态时,该定时器可能会丢失上下文或无法保证发出中断。 |
| 保留 | 3 | 29 | 29保留,必须为零。 |
GTDT平台定时器结构[]字段是平台定时器类型结构的数组,每个结构描述了可用平台定时器的配置。这些定时器是对上面GTDT中描述的每处理器定时器的补充。
| 表 5.100 平台定时器类型结构 值 | 描述 |
|---|---|
| 0 | GT 区块 |
| 1 | Arm 通用看门狗 |
| 0x02-0xFF | 0x02-0xFF |
每个结构的第一个字节声明该结构的类型,第二个和第三个字节声明该结构的长度。
5.2.24.1. GT 块结构
GT块是映射到系统地址空间的标准定时器块。每个GT块最多可实现 8 个 GT(GT0-GT7)。
GT块结构的格式如下表所示。
| 表 5.101 GT 块结构格式 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 1 | 0 | 0x0GT 块 |
| 长度 | 2 | 1 | 20+n*40,其中n是GT块中实现的定时器数量 |
| 保留 | 1 | 3 | 必须为零 |
| GT 块物理地址(CntCtlBase) | 8 | 4 | GTCntCTLBase 块所在的 64 位物理地址 |
| GT 块定时器计数 | 4 | 12 | 12此GT块中实现的定时器数量(“n”)。 。必须小于或等于 8。 |
| GT 块定时器偏移 | 4 | 16 | 16从该结构开始到平台定时器结构数组的偏移量 |
| GT 块定时器结构[] | n * 40 | GT 块定时器偏移 | GT 块定时器结构数组。请参见GT块定时器结构格式表。 |
| 表 5.102 GT 块定时器结构格式 字段 | 字节长度 | 字节偏移 | 描述 |
| --- | --- | --- | --- |
| GT 车架号 | 1 | 0 | 该计时器的帧编号 (0-7) (‘x’) |
| 保留 | 3 | 1 | 必须为零 |
| GTx 物理地址 (CntBaseX) | 8 | 4 | GTx 的 CntBase 块所在的物理地址 |
| GTx 物理地址 (CntEL0BaseX) | 8 | 12 | 12 GTx 的 CntEL0Base 块所在的物理地址。如果该块未针对 GTx 实现,则必须为 0xFFFFFFFFFFFFFFFF。 |
| GTx 物理定时器GSIV | 4 | 20 | GSIV GTx 物理定时器 |
| GTx 物理定时器标志 | 4 | 24 | GTx 物理定时器的标志。请参阅标志定义:GT 块物理定时器和虚拟定时器。 |
| GTx 虚拟计时器GSIV | 4 | 28 | 28 GSIV GTx 虚拟定时器 如果 GTx 没有实现虚拟定时器,则该字段必须为 0。 |
| GTx 虚拟计时器标志 | 4 | 32 | 32 GTx 虚拟计时器的标志(如果已实现)。请参阅标志定义:GT 块物理定时器和虚拟定时器。 |
| GTx 通用标志 | 4 | 36 | 36请参阅通用标志。 |
| 表 5.103 标志定义:GT 块物理定时器和虚拟定时器 位字段 | 位偏移 | 位数 | 描述 |
| --- | --- | --- | --- |
| 定时器中断模式 | 0 | 1 | 该位指示定时器中断的模式: 1:中断为边沿触发。 0:中断是电平触发的。 |
| 定时器中断极性 | 1 | 1 | 该位指示定时器中断的极性: 1:中断为低电平有效 0:中断为高电平有效 |
| 保留 | 2 | 30 | 保留,必须为零。 |
标志定义:常用标志
| 表 5.104 标志定义 - 通用标志 位字段 | 位偏移 | 位数 | 描述 |
|---|---|---|---|
| 安全定时器 | 0 | 1 | 该位指示定时器是安全的还是非安全的: 1:定时器是安全的 0:定时器是非安全的 |
| 始终在线的能力 | 1 | 1 | 该位指示物理和虚拟定时器实现的始终开启功能: 1:无论处理器的电源状态如何,该定时器都保证断言其中断并唤醒处理器。必须支持ARM通用定时器生成中断的所有方法,并且必须能够唤醒处理器。 0:当其关联的处理器进入低功耗状态时,该定时器可能会丢失上下文或无法保证发出中断。 |
| 保留 | 2 | 30 | 保留,必须为零。 |
5.2.24.2. Arm 通用看门狗结构
Arm 通用看门狗是一个平台GT,内置支持在符合服务器基本系统架构 (SBSA) 或基本系统架构 (BSA) 的平台上用作看门狗定时器。有关更多信息,请参阅 Arm 基础系统架构 (BSA) 标题下的 ACPI 相关文档链接。
Arm 通用看门狗结构的格式如下表所示。
| 表 5.105 Arm 通用看门狗结构格式 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 1 | 0 | 0x1 看门狗GT |
| 长度 | 2 | 1 | 28 |
| 保留 | 1 | 3 | 必须为零 |
| RefreshFrame物理地址 | 8 | 4 | RefreshFrame块所在的物理地址 |
| WatchdogControlFrame 物理地址 | 8 | 12 | 12看门狗控制帧块所在的物理地址 |
| 看门狗定时器GSIV | 4 | 20 | GSIV 用于 Arm 通用看门狗定时器 |
| 看门狗定时器标志 | 4 | 24 | Arm 通用看门狗定时器的标志。请参见标志定义:Arm 通用看门狗定时器。 |
| 表 5.106 标志定义 - Arm 通用看门狗定时器 位字段 | 位偏移 | 位数 | 描述 |
| --- | --- | --- | --- |
| 定时器中断模式 | 0 | 1 | 该位指示定时器中断的模式: 1:中断为边沿触发 0:中断为电平触发 |
| 定时器中断极性 | 1 | 1 | 该位指示定时器中断的极性: 1:中断为低电平有效 0:中断为高电平有效 |
| 安全定时器 | 2 | 1 | 该位指示定时器是安全的还是非安全的: 1:定时器是安全的 0:定时器是非安全的 |
| 保留 | 3 | 29 | 29保留,必须为零。 |