5.2.20. ACPI RAS 功能表 (RASF)
下表描述了ACPIRAS功能表的结构。
| 表 5.65 RASF 表格式 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 标题 | |||
| - 签名 | 4 | 0 | “RASF”是RAS 功能表的签名 |
| - 长度 | 4 | 4 | 整个RASF 的长度(以字节为单位)。长度表示表末尾的 Entry 字段的数量 |
| - 修订 | 1 | 8 | 1 |
| - 校验和 | 1 | 9 | 整个表的总和必须为零 |
| - OEMID | 6 | 10 | 10 OEM ID |
| - OEM 表 ID | 8 | 16 | 16表ID是制造商型号ID |
| - OEM 修订 | 4 | 24 | OEM 所提供表格的修订版 OEM 表 ID |
| - 创建者ID | 4 | 28 | 28创建该表的实用程序的供应商ID |
| - 创建者修订 | 4 | 32 | 32修改创建表的实用程序 |
| RASF 特定条目 | |||
| - RASF 平台通信通道标识符 | 12 | 12 36 | 36 RASF平台通信通道的标识符。 OSPM 应使用该值来标识 RASF 表中的 PCC 子通道结构 |
5.2.20.1. RASF PCC 子通道标识符
RASF PCC 子通道标识符由OSPM 用于标识PCC 子通道结构。 RASF 表通过此标识符引用其PCC 子空间,如表 5.65 所示。
5.2.20.2. 使用 PCC 寄存器
OSPM 将写入PCC 寄存器,方法是将寄存器值填入PCC 子通道空间并发出PCC 执行命令。参见表 5.67。
为了最大限度地降低PCC事务的成本,OSPM应通过单个读或写命令读取或写入同一PCC子空间中的所有寄存器。
5.2.20.3. RASF 通信通道
RASF 操作条目在PCC 子通道中定义如下。
| 表 5.66 RASF 平台通信通道共享内存区域 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 签名 | 4 | 0 | 0x52415346 的PCC签名(对应于RASF的ASCII签名) |
| 命令 | 2 | 4 | PCC 命令字段;请参阅PCC、RASF平台通信通道使用的命令代码以及“平台通信通道”(PCC)。 |
| 状态 | 2 | 6 | PCC 状态字段。请参阅平台通信通道 (PCC)。 |
| 交流空间: |
- 版本
| 2 | 8 |字节 0 - 次要版本 |字节 1 - 主要版本
- RAS 能力
| 16 | 16 10 | 10描述平台RAS功能的位图,如平台RAS功能中所示。平台填充此字段。 OSPM使用此字段来确定平台的RAS功能。
- 设置RAS 功能
| 16 | 16 26 | 26 OSPM 为其调用命令的 RAS 功能的位图。位图在第 5.2.20.4 节中描述。 OSPM设置与RAS功能相对应的位,以调用该功能上的命令。位图实现允许OSPM同时调用平台支持的每个RAS功能上的命令。
- RASF 参数块的数量
| 2 | 42 | 42参数块的数量取决于平台支持的RAS功能数量。通常,每个RAS功能都有一个参数块,OSPM可以使用该参数块来管理该功能。
- 设置RAS 能力状态
| 4 | 44 | 44状态:
0000b = Success
0001b = Not Valid
0010b = Not Supported
0011b = Busy
0100b = FailedF
0101b = Aborted
0110b = Invalid Data
- 参数块
|变化(N 字节)| 48 | 48参数块的开始,其结构如PATROL_SCRUB的参数块结构所示。这些参数块用作OSPM与平台之间的通信邮箱,每个RAS功能有1个参数块。 NOTE:每种类型只能有一个参数块。
| 表 5.67 PCC RASF 平台通信通道使用的命令代码 命令 | 描述 |
|---|---|
| 0x00 | 0x00保留 |
| 0x01 | 0x01执行RASF命令。 |
| 0x02-0xFF | 0x02-0xFF |
5.2.20.4. 平台RAS 功能
下表定义了平台RAS功能:
| 表 5.68 平台RAS 功能位图 位 | RAS 功能 | 描述 |
|---|---|---|
| 0 | 支持基于硬件的巡检擦洗 | 表示平台支持基于硬件的DRAM内存巡检清理 |
| 1 | 基于硬件的巡检清理支持并暴露于软件 | 表示平台支持基于硬件的DRAM内存巡检清理,并且平台使用此RASF机制向软件公开此功能 |
| 2-127 | 2-127 保留 | 保留供将来使用 |
5.2.20.5. 参数块
下表描述了参数块。该结构体用于传递控制相应RAS功能的参数。
每个RAS功能都分配有一个TYPE编号,它是表 5.68 中描述的RAS功能位图的位索引。
| 表 5.69 PATROL_SCRUB 的参数块结构 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| 类型 | 2 | 0 | 0x0000 - 巡逻擦洗 |
| 版本 | 2 | 2 | 字节 0 - 次要版本 |
| 长度 | 2 | 4 | 整个参数块结构的长度(以字节为单位) |
| 巡逻擦洗命令 (INPUT) | 2 | 6 | 0x01 - GET_PATROL_PARAMETERS 0x02 - START_PATROL_SCRUBBER 0x03 - STOP_PATROL_SCRUBBER |
| 请求的地址范围(INPUT) | 16 | 16 8 | OSPM 指定要巡检的地址范围的BASE(字节7-0)和SIZE(字节15-8)。 OSPM 为以下命令设置此参数:GET_PATROL_PARAMETERS 和 START_PATROL_SCRUBBER |
| 实际地址范围 (OUTPUT) | 16 | 16 24 | 平台返回该值以响应GET_PATROL_PARAMETERS。平台从可以开始的地方计算最近的巡逻擦洗边界地址。该范围应该是请求地址范围的超集。地址的BASE(字节7-0)和SIZE(字节15-8) |
| 旗帜 (OUTPUT) | 2 | 40 | 平台返回此值以响应GET_PATROL_PARAMETERS: 位 [0]:如果巡检洗涤器已在“实际地址范围”中指定的地址范围运行,则将被设置 位 [3:1]:当前巡检速度,如果设置了位 [0]: 000b - 慢速 100b - 中速 111b - 快速 所有其他组合均保留。位[15:4]:RESERVED |
| 请求的速度 (INPUT) | 1 | 42 | 42 OSPM 对于 START_PATROL_SCRUBBER 命令,对该字段的设置如下: 位 [0]:如果巡检洗涤器已在“实际地址范围”中指定的地址范围内运行,则将被设置 位 [2:0]:请求的巡检速度 000b - 慢速 100b - 中速 111b - 快 所有其他组合均保留。位[7:3]:RESERVED |
5.2.20.5.1. 操作顺序:
以下序列记录了OSPM的步骤,用于识别平台是否支持基于硬件的巡检清理,并调用命令来请求硬件巡检清理指定的地址范围。
确定平台是否支持基于硬件的巡检清理,并通过读取RASF表中的RAS功能位图来向软件提供支持。
通过设置请求的地址范围来调用GET_PATROL_PARAMETERS。
平台返回实际地址范围和标志。
根据以上两个数据,如果 OSPM 决定启动巡检洗涤器或更改巡检洗涤器的速度,则 OSPM 通过设置“请求地址范围”和“请求速度”来调用 START_PATROL_SCRUBBER。