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.13. _PRT(PCI 路由表)

PCI 中断本质上是非分层的。PCI 中断引脚连接到中断控制器的中断输入。_PRT 对象提供从 PCI 中断引脚到中断控制器中断输入的映射。所有 PCI 根桥下都必须有 _PRT 对象。_PRT 求值为一个包,其中包含一组包列表,每个包描述一个 PCI 中断引脚的映射。

参数:

无

返回值:

一个 Package,包含如下所述的可变长度 PCI 中断映射包列表

注

_PRT 包中的 Address 字段里的 PCI 功能号必须为 0xFFFF,表示“任意”功能号或“所有功能”。

_PRT 映射包具有下表列出的字段。

表 6.16 映射字段

字段类型描述
AddressDWORD设备地址(使用与 _ADR 相同的格式)。
PinByte设备的 PCI 引脚编号(0-INTA,1-INTB,2-INTC,3-INTD)。
SourceNamePath Or Byte为上述引脚所连接的中断分配中断资源的设备名称。该名称可以是完全限定路径、相对路径,或利用命名空间搜索规则的简单名称段。注:此字段是 NamePath,而不是 String 字面量,这意味着它不应被引号包围。如果此字段是整数常量 Zero(或值为 0 的 Byte),则该中断从全局中断池中分配。
Source IndexDWORD指示该中断从 Source 字段所指向设备的资源模板中哪个资源描述符分配而来的索引。如果 Source 字段是值为零的 Byte,则此字段是该引脚所连接到的全局系统中断号。

_PRT 有两种使用方式。通常,给定 PCI 中断所连接的中断输入是可配置的。例如,在 8259 中断控制器上,某个给定的 PCI 中断可以被配置为 IRQ 10 或 11。在这种模型中,每个中断在 ACPI 命名空间中都表示为一个 PCI 中断链接设备。

这些对象具有 _PRS、_CRS、_SRS 和 _DIS 控制方法来分配中断。然后,OSPM 处理这些中断时,不是将它们视为中断控制器上的中断输入,而是将其视为 PCI 中断引脚。驱动程序会在 _PRT 中查找设备的引脚,以确定哪些设备对象分配这些中断。为了将 PCI 中断移动到中断控制器上的不同中断输入,OSPM 会对 PCI 中断链接设备使用 _PRS、_CRS、_SRS 和 _DIS 控制方法。

在第二种模型中,PCI 中断被硬连线到中断控制器上的特定中断输入,并且不可配置。在这种情况下,_PRT 中的 Source 字段不引用设备,而是包含值零,Source Index 字段则包含该 PCI 中断硬连线到的全局系统中断。

6.2.13.1. 示例:使用 _PRT 描述 PCI IRQ 路由

以下示例描述了两个 PCI 插槽和一个 PCI 视频芯片。请注意,这两个 PCI 插槽上的中断采用不同的布线方式(barber-poled):

Scope(\_SB) {
    Device(LNKA){
        Name(_HID, EISAID("PNP0C0F"))               // PCI interrupt link
        Name(_UID, 1)
        Name(_PRS, ResourceTemplate(){
            Interrupt(ResourceProducer,...) {10,11} // IRQs 10,11
        })
        Method(_DIS) {...}
        Method(_CRS) {...}
        Method(_SRS, 1) {...}
    }
    Device(LNKB){
        Name(_HID, EISAID("PNP0C0F"))               // PCI interrupt link
        Name(_UID, 2)
        Name(_PRS, ResourceTemplate(){
            Interrupt(ResourceProducer,...) {11,12} // IRQs 11,12
        })
        Method(_DIS) {...}
        Method(_CRS) {...}
        Method(_SRS, 1) {...}
    }
    Device(LNKC){
        Name(_HID, EISAID("PNP0C0F"))               // PCI interrupt link
        Name(_UID, 3)
        Name(_PRS, ResourceTemplate(){
            Interrupt(ResourceProducer,...) {12,14} // IRQs 12,14
        })
        Method(_DIS) {...}
        Method(_CRS) {...}
        Method(_SRS, 1) {...}
    }
    Device(LNKD){
        Name(_HID, EISAID("PNP0C0F"))               // PCI interrupt link
        Name(_UID, 4)
        Name(_PRS, ResourceTemplate(){
            Interrupt(ResourceProducer,...) {10,15} // IRQs 10,15
        })
        Method(_DIS) {...}
        Method(_CRS) {...}
        Method(_SRS, 1) {...}
    }
    Device(PCI0){
        ...
        Name(_PRT, Package{ // A fully qualified pathname can be used, or a
                            // osimple name segment utilizing the search rules.
            Package{0x0004FFFF, 0, \\_SB_.LNKA, 0}, // Slot 1, INTA
            Package{0x0004FFFF, 1, \\_SB_.LNKB, 0}, // Slot 1, INTB
            Package{0x0004FFFF, 2, \\_SB_.LNKC, 0}, // Slot 1, INTC
            Package{0x0004FFFF, 3, \\_SB_.LNKD, 0}, // Slot 1, INTD
            Package{0x0005FFFF, 0, LNKB, 0},        // Slot 2, INTA
            Package{0x0005FFFF, 1, LNKC, 0},        // Slot 2, INTB
            Package{0x0005FFFF, 2, LNKD, 0},        // Slot 2, INTC
            Package{0x0005FFFF, 3, LNKA, 0}, // Slot 2, INTD
            Package{0x0006FFFF, 0, LNKC, 0}         // Video, INTA
        })
    }
}
Prev
6.2.12. _PRS(可能的资源设置)
Next
6.2.14. _PXM(邻近性)