MSI MSIX

MSI Capability

Capability ID = 0x5

Message Control bit说明

0: msi enable

1-3:  支持的中断数量,0b000=支持一个中断 0b001=支持4个中断

4-6: 使能的中断数量

7: 1表示64位地址结构,0表示32位

8: 1表示支持中断mask

Message Address:存放MSI存储器写事务的目的地址,中断到来的时候,PCIE会向这个地址写message data数据

Message address格式如下:

地址格式 0xFEEx-xxxx

destination id : 目标CPU id

3bit: 0表示直接发送到destination id 所代表的CPU,1表示开启中断转发,即中断重映射

RH: 0代表发送到所有目标CPU, 1代表从目标cpu列表中选一个发送

DM: 0代表物理CPU 1代表虚拟CPU

X86系统下,message address对应的LAPIC的地址linux下面查看如下:

也就是说往0FEEXXXX写入数据,实际写入了LAPIC,就会触发CPU的中断。

Message Data:存放MSI报文使用的数据

Message Data Message Address 都是由BIOS配置

Message Data 格式

高32位未使用

0-7 是中断向量编号, 如果是MSI,则中断向量号连续,msi-x则不要求连续

8-10 表示处理器如何处理PCIE的中断请求

MSI-X

Table size 11bit, 最多2048个中断

Function Mask 位1, 则所有中断被屏蔽

Msi-x table offset : 0-2bit表示table在第几个bar, 3-31表示在bar上的偏移量

linux如下图:

MSI-X Table

QAT 2.0 的MSI-X Table

ffffc402`45e61cb4  00000000 00000000 00000000 fee027f0

ffffc402`45e61cc4  00000000 00000000 00000000 fee027d0

重映射表寄存器,存放重映射表地址

Interrupt Remapping Table Address Register

 IRTA

dmar_writeq(iommu->reg + DMAR_IRTA_REG,

    (addr) | IR_X2APIC_MODE(mode) | INTR_REMAP_TABLE_REG_SIZE);

中断重映射address 和 data个字段的意义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luopandeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值