【PCIe】ACPI中的PCIe服务

PCI-E和PCI-X规范定义了ECAM机制来通过内存访问设备配置寄存器。这段映射到内存的配置空间地址是BIOS分配的,并会传递给OS来使用。

对支持ECAM的设备来说,和PCI 2.3兼容的配置空间头256个字节(便宜为0-255)可以通过IO端口访问(CF8/CFC),或者使用ECAM。256-4096字节的内容可以用过PCIe驱动的ECAM来访问。

EDKII中创建的所有ACPI Tables。

CPU用来访问设备的地址不是必须和设备BAR中保存的一样。收发信息,如_TRA\_TTP\_TRS对OS来说不可得,直到OS启动了ACPT中断之后。OS必须等待,直到ACPI中断起来后决策好原先由BIOS设置的BAR地址,并设为当前处理器访问地址。在启动资源之前,OS必须用父Host Bridge的_CRS 描述符中定义的地址范围来重新配置BAR寄存器。OS必须确保地址范围没有被Host bridge下的其他设备占用。

ACPI中的MCFG Table

MCFG: 用来记录非热插拔设备或者系统启动设备的MMIO CFG地址,是ACPI表形式提供的。在本次启动过程中,该地址不可更改。

CBA:用来访问设备的高级配置地址的ACPI接口,用来给热插拔设备实时更新用。

MCFG给启动过程中的非热插拔提供MMIO访问地址,CBA给热插拔设备提供MMIO地址。

固件对Host Bridges主桥设备的配置

固件必须配置系统中所有Host Bridges主桥设备,以便OS使用Host Bridges下的设备,即使它们没有连接到console或者boot deviceHost Bridges不属于PCI规范中定义。对Host Bridge配置包括以下:

- 设置Host Bridges的内存和IO空间

- 所有Host Bridges消耗的资源,以及传递给下一级bus所需要的资源都需要被配置

- 桥要设置为能进行收和发包操作

- 桥要在安全模式下操作,安全模式包括

    启动IO Port, Memory addressVGA routingbus number

    启动奇偶校验和系统错误监测等

    配置Cachelinelatency timer和其他PCI要求的寄存器

固件注册Host Bridge信息到ACPI Namespace

固件必须将Host Bridge信息注册到ACPI Namespace. 每个Host Bridge都必须包含如下内容:

- _HID _CID
- _CRS 以决策 Host Bridge 所生产和消耗的资源 (传递给下一级 bus 的)。固件分配资源(内存空间、 IO Port 等)给 Host Bridges _CRS 描述符通知 OS 它可以需要配置 Host Bridges 下的某个设备所需要的资源
- _TRA, _TTP _TRS 会翻译偏移量,用来通知 OS 第一级总线和下一级总线之间的映射关系 
- _PRT 和中断描述符表来决定中断 routing 
- _BBN 以获得 bus number  
- _UID 来匹配 UEFI device path 
- _SEG 如果它有非零的 PCI Segment Group Number 
- _STA 如果支持 hot plug 的话 
- _MAT 如果支持 hot plug 的话

BIOS配置PCIe设备的前提及如何查询某个PCIe设备CFG是否被BIOS配置过了

BIOS只配置boot和console devices,boot device需要在OS被加载前和用户进行交互。BIOS必须配置所有的Host Bridge和PCI-PCI Bridge桥设备。OS检测command registers里的IO Enable Bit、Memory Enable Bit和EXP ROM Enable Bit可以知道某个设备寄存器是否被BIOS配置过了。BIOS中可以打开或关闭某个PCIe slot:EP CFG 0x34->CapPtr->0x10 PCIe Capability Structure -> 0x14h Slot Capability Register -> bit2 MRL Sensor Present -> bit 4 Power indicator present。

EDKII中ACPI Table的构建

参考文档 

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值