PCI IRQ Routing

本文详细介绍了PCI IRQ路由的必要性、实现方法以及如何将路由信息报告给操作系统。内容涉及内部设备、PCIE根端口和PCI扩展插槽的中断路由,以及在Legacy OS和ACPI OS下通过PCI IRQ Routing Table和_PRT Packages向操作系统报告中断路由信息。
摘要由CSDN通过智能技术生成

PCI IRQ Routing

1.  Why IRQ Routing

 

在计算机发展的历史中,很多技术的出现都是为了解决当前所面临的问题而产生和发展出来的,PCI IRQ Routing也不例外,随着计算机系统的功能需求的增加,越来越多的PCI/PCIE设备被加入到系统中来,可是PIC mode下却只有15 IRQ可供使用(即使是APIC,目前也只是有24INTIN),而且在早期device都是直接拉线到8259  IRQ,所以一旦确定就没法改变,没有灵活性。于是中断共享就是这种情况下解决这一问题的一个方法(当然其他的方法如使用MSI,SIRQ等也都可以实现中断的复用),可是中断共享了以后又会有新的问题出现 那就是如何分配这些中断的使用 才能够达到负载均衡(Loading Banlance),上述的这些问题就使得PCI IRQ Routing应运而生了。

2.  How to Routing

 

1.     Routing for Internal Device

 

新的chipset为了Internal Device Interrupt Routing有更大的灵活性,在chipset内部加入了以下几个新的register 为方便SBIOS去配置;这几个register分别是D**IPIntertupt Pin Register)用于设定对应的device所使用的Interupt PinD**IRInterrupt Router Register)用于设定Interrupt Pin所使用的Interrupt RouterPIRQA#-H#);PIRQ_ROUT Routing Control Register),用于设定PCI Device Interrupt Pin INTA#-H# 连接到具体PIC controllerIRQ*上,在8259 PIC ModeSBIOS需要去设置PIRQ_ROUTregister 用于指定具体的IRQAPIC Mode PIRQ_ROUT则是固定的连接到APIC INTIN pin上,PIRQA#-H#分别连接到INTIN16-INT23。比如我们想配置Device31 Function2 也就是Sata Controller 1IRQ Routing 是使用INTA#  PIRQA# 最终接到PIC IRQ5,那么我们需要做的配置将会如下图所示:

 

    

 


2.     Routing for PCIE Root Ports

 

PCIE Root Ports扮演的是一个P2P bridge的角色,Root Ports自身产生的Intterupts的处理方式和Internal Devices处理方式一样;Root Ports所接入的设备所产生的Intterupts,则会有Root Ports转发给上一级的Root Complex去处理。为了Intterupt Sharing更加的均衡合理, 在转发给Root Complex之前这些来自Downstream PCIE Devices产生的Intterupt将会被chipset内部的称之为swizzling的一个机制处理过之后再丢给Root Complex,这个部分就是完全的HW机制,它的基本原理就是将来自Downstream PCIE Devices INTA#=H# 产生的中断请求 再转化一遍,比如接在Root Ports 2上的INTA#将会被转成INTB# 然后再丢给上层的Root Complex。经过Swizzling之后,INTA#-H# 会被分别连接到PIRQA#-H#.

3.     Routing for PCI Expansion Slots

 

PCI Expansion Slots通常是指通过PNP Bridge扩展出来的PCI 插槽(slots),在这些slots上可以接入PCI Device。这些PCI Expansion Slots IRQ RoutingPCIE Root Ports非常接近,主要的区别可能就是swizzling的部分需要HW自己去拉,实现的原理和chipset 内置的swizzling应该是类似的。最终PCI Slot上的device经过swizzling之后 INTA#-H#会被分别连接到PIRQA#-H#.

3.  Reporting IRQ Routing to OS

 

SBIOSPCI IRQ Routing

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值