扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
IRQ 与 PCI
然而,PCI 总线有点不同。在系统中,PCI 分配了四个 IRQ 可供 PCI/AGP 卡使用。通常,多个设备可以共享这些 IRQ。(如果是这种情况,要确保共享 IRQ 的所有设备是 PCI 和 AGP。)尤其对于在可能有五个 PCI 和一个 AGP 插槽的现代机器,共享 IRQ 技术是非常重要的。没有共享 IRQ 技术,系统中使用 IRQ 的卡不可能超过四个。
但是,PCI IRQ 共享有一些限制。现代主板的 BIOS 和 Linux 内核通常支持 PCI IRQ 共享技术,但也有某些 PCI 卡在与另一个设备共享 IRQ 时,会直接拒绝正常工作。如果遇到系统随机死锁,特别是死锁发生与使用某个特定的硬件设备相关时,不妨尝试让 PCI 设备使用自己的 IRQ。第一步是查看系统中是否有任何设备共享 IRQ。可以遵循以下步骤来做到:
使用系统中的各种设备,如,磁盘、声卡、显示卡、SCSI 卡等等。这确保 Linux 会处理这些设备的中断。
用 "cat /proc/interrupts" 命令,会显示 Linux 内核到目前为止处理的所有中断的列表及其数目。查看该列表的最右栏。如果同一行中列有两个或更多设备,那么这些设备共享那个特定的 IRQ。
如果遇到有问题的设备是非 PCI 设备(ISA 或其它旧卡),那么您会发现 IRQ 冲突,可以尝试通过 BIOS、isapnptools 包或者对外设进行物理跳线来解决。请注意,如果设备是集成在主板上,即使它不占用物理 PCI 插槽,它也是 PCI 设备。
如果有问题的所有设备是 PCI 或 AGP 设备,那么是否有问题取决于硬件。通过以下步骤使所有的 PCI/AGP 设备有自己的 IRQ:
进入系统 BIOS,禁用所有不用的外设(USB、并行端口等等)。这可以释放一些 IRQ, 让每个设备尽可能的分配它自己的唯一的 IRQ。
进入 BIOS 的 PnP 部分,确保 BIOS 被配置成“非 PnP”操作系统。选中 "Reset ESCD data" 选项。这会强制 BIOS 在下次重新引导系统时给所有硬件设备重新分配 IRQ。
重新引导 Linux,使用硬件,用 "cat /proc/interrupts" 命令查看结果。现在,希望所有设备都使用自己的 IRQ。
如果仍有两个受怀疑的设备共享 IRQ,那么还有两种额外选项。有些 BIOS 设置程序可以允许您将确定的某个 IRQ 分配给特定的 PCI 插槽。很少见这种 BIOS 设置程序,如果您有其中之一,可以使用这种功能来消除冲突。如果 BIOS 中没有这个选项(大多数情况下没有),那么还有一种方法可以确保解决这种问题-关机,关闭电源,从插座上拔掉电源,并等几分钟。然后,打开系统机箱, 将 PCI 卡换一个插槽。这种办法好象不常见,但绝对管用,特别是当系统中有多余的 PCI 插槽时,这种办法特别有用(但您要花一些时间来给每一块卡找正确的插槽。)
我使用了这个“PCI 调换诀窍”,能够使系统中的所有设备都使用唯一的 IRQ。差不多了。正如您所见,有两个 IDE 设备仍然共享一个 IRQ:
|
但这是正常的,因为 ide2 和 ide3 设备是集成在 Promise FastTrak IDE 卡的同一芯片上。
现在(几乎)所有设备都有唯一的 IRQ,我尝试加速驱动程序,并且……仍然在不到一个小时内经历了一次死锁。显然,共享的 PCI IRQ 根本不是问题所在。唉……得花些时间看看其它地方(再一次)。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者