MSI可以中断路由到多个CPU吗?

问题描述 投票:0回答:2

消息信号中断 (MSI) 是一项可选功能,使 PCI 设备能够通过将系统指定的消息写入系统指定的地址(PCI DWORD 内存写入事务)来请求服务。事务地址指定消息目的地,而事务数据指定消息。系统软件应在设备配置期间初始化消息目的地和消息,将一个或多个非共享消息分配给每个支持 MSI 的功能。

MSI中断可以路由到多个CPU吗?
例如:

echo F > /proc/irq/msi_irq/smp_affinity

我的看法:

  1. MSI 中断可以路由到多个 cpu。当CPU收到中断消息时,使用目标信息将中断路由到多个CPU。

  2. MSI 中断无法路由到多个 cpu。 MSI中断消息只能写入LAPIC,因此只能触发一个CPU的中断。

但是,哪种意见是正确的?

linux x86 intel interrupt pci-e
2个回答
0
投票

是的,MSI 可以分派到多个逻辑 CPU。

Intel SDM vol 3 的第 10.11 章(高级可编程中断控制器/消息信号中断)描述了 MSI 的地址目标的格式:

RH
(重定向提示)和
DM
(目标模式)字段更改
Destination ID
字段的含义:

• 当 RH 为 0 时,中断将定向到目标 ID 字段中列出的处理器。
• 当RH 为1 且使用物理目的地模式时,目的地ID 字段不得设置为FFH; 它必须指向存在并启用以接收中断的处理器。
• 当 RH 为 1 并且逻辑目标模式在使用平面寻址模型的系统中处于活动状态时,必须设置目标 ID 字段,以便设置为 1 的位可识别存在并启用的处理器。 接收中断。 • 如果 RH 设置为 1 并且逻辑目标模式在使用集群寻址模型的系统中处于活动状态, 那么 Destination ID 字段不得设置为 FFH;
用此字段标识的处理器必须是 存在并启用以接收中断


如果

msi_irq

 中的 
/proc/irq/msi_irq/smp_affinity
 指的是使用 MSI 的 IRQ 编号,那么是的,将该伪文件设置为 
f
 会将所述 IRQ 限制为所选的四个逻辑 CPU。
事实上,就中断调度而言,只有使用传统 PIC 的中断不能具有关联性。 IO-APIC 中断和 MSI 始终可以针对一组处理器。


0
投票
“是的,MSI 可以分派到多个逻辑 CPU。” 那决定哪个逻辑CPU将执行中断处理程序的仲裁逻辑是什么?

© www.soinside.com 2019 - 2024. All rights reserved.