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
  • 第 6 章

    • 总览
    • 6.1. 设备标识对象
    • 6.2. 设备配置对象
      • 6.2.1. _CDM(时钟域)
      • 6.2.2. _CRS(当前资源设置)
      • 6.2.3. _DIS(禁用)
      • 6.2.4. _DMA(直接内存访问)
      • 6.2.5. _DSD(设备特定数据)
      • 6.2.6. _FIX(固定寄存器资源提供程序)
      • 6.2.7. _GSB(全局系统中断基址)
      • 6.2.8. _HPP(热插拔参数)
      • 6.2.9. _HPX(热插拔参数扩展)
      • 6.2.10. _MAT(多个 APIC 表条目)
      • 6.2.11. _OSC(操作系统能力)
      • 6.2.12. _PRS(可能的资源设置)
      • 6.2.13. _PRT(PCI 路由表)
      • 6.2.14. _PXM(邻近性)
      • 6.2.15. _SLI(系统局部性信息)
      • 6.2.16. _SRS(设置资源设置)
      • 6.2.17. _CCA(缓存一致性属性)
      • 6.2.18. _HMA(异构内存属性)
    • 6.3. 设备插入、移除和状态对象
    • 6.4. ACPI 的资源数据类型
      • 6.4.1. 资源描述符的 ASL 宏
      • 6.4.2. 小型资源数据类型
      • 6.4.3. 大型资源数据类型
        • 6.4.3.1. 24 位内存范围描述符
        • 6.4.3.2. 厂商定义描述符,类型 1
        • 6.4.3.3. 32 位内存范围描述符
        • 6.4.3.4. 32 位固定内存范围描述符
        • 6.4.3.5. 地址空间资源描述符
        • 6.4.3.6. 扩展中断描述符
        • 6.4.3.7. 通用寄存器描述符
        • 6.4.3.8. 连接描述符
        • 6.4.3.9. 引脚功能描述符
        • 6.4.3.10. 引脚配置描述符
        • 6.4.3.11. 引脚组描述符
        • 6.4.3.12. 引脚组功能描述符
        • 6.4.3.13. 引脚组配置描述符
    • 6.5. 其他对象和控制方法

6.2.17. _CCA(缓存一致性属性)

_CCA 对象返回总线主控设备是否支持硬件管理的缓存一致性。预期值为 0,表示不支持;1,表示支持。所有其他值均为保留值。

对于现有 OS 默认缓存一致性行为不足以满足需求的平台,_CCA 使 OS 能够适应这些差异。如果使用 _CCA,则必须将其包含在 \_SB 的所有定义为子节点的、具备总线主控能力的设备之下,以确保操作系统知道何时可以依赖硬件管理的缓存一致性。_CCA 的值会被这些设备的所有后代继承,因此无需在其子设备中重复提供;如果在那里提供,OSPM 将忽略它。这也包括共享 DMA 控制器上的从设备;因此,这些 DMA 控制器也必须在系统总线下的命名空间中定义,并包含 _CCA 对象。

如果某个设备表明它不支持硬件缓存一致性,则 OSPM 必须使用软件缓存刷新算法,以确保不会从缓存中访问到陈旧或无效的数据。

_CCA 对象仅与能够访问 CPU 可见内存的设备相关,例如具备 DMA 能力的设备。在基于 ARM 的系统上,必须为所有此类设备提供 _CCA 对象。在 Intel 平台上,如果未提供 _CCA 对象,OSPM 将假定这些设备具有硬件缓存一致性。

参数:

无

返回值:

一个 Integer,指示设备对硬件缓存一致性的支持情况:

0 - 该设备不具有硬件管理的缓存一致性
1 - 该设备具有硬件管理的缓存一致性
其他值 - 保留

注

关于何时对此对象进行求值存在一些限制,这会影响将此对象实现为控制方法。_CCA 方法只能访问那些已由 _REG 方法指示为可用的 Operation Regions。_REG 方法在 _REG(区域)中描述。

6.2.17.1. _CCA ASL 示例:

Scope (\_SB) {
    ...
    Device (XHCI) {
        ...
        Name (_CCA, ZERO)     // Cache-incoherent bus-master, child of \\_SB
        ...
    }
    ...
    Device (PCI0) {           // Root PCI Bus
        ...
        Name (_CCA, ONE)      // Cache-coherent bus-master, child of \\_SB
        ...
        Device (PRT0) {
            ...               // Bus-master-capable, not a child of \\_SB
            ...               // Will inherit coherency from PCI0, no \_CCA required
            Device (NIC0) {
                ...           // Bus-master-capable, not a child of \\_SB
                ...           // Will inherit coherency from PRT0, no \_CCA required
            }
        }
    }
    ...
    Device (SDHC) {
        ...
        Name (_CCA, ONE)      // Cache-coherent bus-master-capable, child of \\_SB
        ...
    }
    ...
    Device (GPIO) {
        ...                   // Not bus-master-capable
        ...                   // \_CCA not valid
    }
    ...
    Device (DMAC) {
        ...                   // DMA controller; \_CCA must be specified
        Name (_CCA, ONE)      // Cache coherent bus-master, child of \\_SB
        ...
    }
    ...
    Device (SPI1) {
        ...
        Name (_CRS, ResourceTemplate()
            {
                FixedDMA(...) // Sharing the DMA, thus inherits coherency from it
                ...
                ...
            })
        ...                   // \_CCA not valid
      }
    }
Prev
6.2.16. _SRS(设置资源设置)
Next
6.2.18. _HMA(异构内存属性)