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

    • 总览
    • 9.1. 设备对象名称冲突
    • 9.2. \_SI 系统指示器
    • 9.3. 环境光传感器设备
    • 9.4. 电池设备
    • 9.5. 控制方法盖板设备
    • 9.6. 控制方法电源按钮和睡眠按钮设备
    • 9.7. 嵌入式控制器设备
    • 9.8. 通用容器设备
    • 9.9. ATA 控制器设备
    • 9.10. 软盘控制器设备对象
    • 9.11. GPE 块设备
    • 9.12. 模块设备
    • 9.13. 内存设备
    • 9.14. _UPC(USB 端口能力)
    • 9.15. PC/AT RTC/CMOS 设备
    • 9.16. 用户存在检测设备
    • 9.17. I/O APIC 设备
    • 9.18. 时间和报警设备
    • 9.19. 通用按钮设备
    • 9.20. NVDIMM 设备
      • 9.20.1. 概述
      • 9.20.2. NVDIMM 根设备
      • 9.20.3. NVDIMM 设备
      • 9.20.4. 示例
      • 9.20.5. 加载 NVDIMM 驱动程序
      • 9.20.6. 热插拔支持
      • 9.20.7. NVDIMM 根设备 _DSMs
      • 9.20.8. NVDIMM 设备方法

9.20.6. 热插拔支持

本节描述 ACPI 名称空间中 NVDIMM 内存热插拔的表示方式。NVDR 设备是 NVDIMM 根设备,NVD1 和 NVD2 是 NVDIMM 设备,MEM0 是对应于 NVD1 和 NVD2 设备的内存模块设备。NVDR 设备下的 _FIT 方法返回所有 NFIT 条目,包括热添加的设备。

Device (NVDR)                       // Root device
{
   Name (_HID, "ACPI0012")
   Method (_STA) {...}
   Method (_FIT) {...}
   Method (_DSM, ...) {
   ...
   }
      Device (NVD1)                 // NVDIMM1
      {
         Name(_ADR, h1)             // where h1 is NFIT Device Handle for this NVDIMM1
         Method (_DSM, ...) {
         ...
         }
   }
   Device (NVD2)                    // NVDIMM2
   {
         Name(_ADR, h2)             // where h2 is NFIT Device Handle for this NVDIMM2
         Method (_DSM, ...) {
         ...
         }
   }
}

Device (MEM0)                       // Memory module
{
   Name (_HID, EISAID ("PNP0C80"))
   Method (_STA) {...}
   Method (_CRS) {...}
}

Scope (\_GPE)
{
   Method (_L00) {
      Notify (\_SB.NVDR, 0x80)      // Notify to NVDIMM root device
      Notify (\_SB.MEM0, 1)         // Device Check to Memory Module
   }
}

热插拔的内存通过具有 PNPID 为 PNP0C80 的 ACPI 名称空间设备向 OS 指示。由热插拔 NVDIMM 创建的 NFIT 条目通过带有 ACPI0012 的 ACPI 名称空间设备进行传达。

NVDIMM 热添加流程:

  1. 在 NVDIMM 热添加之前,相应的 ACPI 名称空间设备 NVD1、NVD2 从 _ADR 对象返回一个地址(NFIT 设备句柄),该地址与 NFIT 中存在的任何条目(无论是静态的还是来自 _FIT 的)都不匹配,这表明相应的 NVDIMM 不存在。此外,ACPI 名称空间设备 MEM0 返回 _STA 状态 0,表示这些设备不存在、未启用且不工作。

  2. 在热添加时:

a. 向 NVDR 发送 Notify 0x80,以使 NVDIMM 总线驱动程序枚举根层级下的所有设备

b. NVDIMM 总线驱动程序对 NVDR 设备下的 _FIT 方法求值,并识别当前存在的 NVDIMM 设备的变化(通过识别新添加的 NFIT 设备句柄)。

c. NVDIMM 总线驱动程序现在为 NVD1 和 NVD2 的 _ADR 对象返回的地址找到匹配条目,并加载相应的驱动程序。

d. 向 MEM0 发送 Notify 设备检查,以导致设备重新枚举,从而使内存管理器将 _CRS 范围添加到内存池中。

  1. MEM0 现在将报告所有当前已创建并变为可见的内存范围。
Prev
9.20.5. 加载 NVDIMM 驱动程序
Next
9.20.7. NVDIMM 根设备 _DSMs