3.2 中断控制器对MSI的支持 若要支持MSI中断,则除了PCIe协议之外,还需要中断控制器的支持。即当PCIe设备向指定地址写入给定的值之后,需要能被中断控制器感知到,并将其转换为中断触发操作。由于不同架构会使用不同的中断控制器,因此它们的实现方式也不同,例如对于Arm AARCH64架构,一般会使用GICv3或GICv4中断控制器 ...
MSI-X就是在MSI的基础上做了扩展,每个PCIe Function支持更多的中断向量(vector),并且每一个中断向量都有一个独立的系统地址(MSI_Addr)和值(MSI_Data),两者向系统软件上报中断信息的机制是相同。 MSI和MSI-X使用独立的Capability structures(就是它们在配置空间中有自己独立的寄存器配置),PCIe function可以同时支持MSI...
在发送MSI的时候,需要提供base address和中断向量号,那么在设计MSI-X的时候,可以由SOC这边提供一个虚构的地址,配置给MSI-X触发模块中。当这些模块使用这个虚构地址产生写操作的时候,这个transaction被送到PCIe的EP HW中,EP HW会比较所有的MEMw操作的目的地址和MSI-X虚拟地址,如果相同,则是一个MSI-X的中断。在中断...
Linux系统初始化PCIe设备的过程包含了几个关键阶段,首先是初始化MSI(消息信号中断)中断,这一过程在start_kernel函数中的init_IRQ函数中得以实现。Init_IRQ函数首先初始化中断特有的栈,为每个CPU设置独立的中断栈,同时在call_on_irq_stack中使用中断栈,包括软中断的处理。函数init_irq_scs关注于配置...
msi-controller:表示是一个MSI(Message Signaled Interrupt)控制器节点,这里需要注意的是,有的SoC中断控制器使用的是GICv2版本,而GICv2并不支持MSI,所以会导致该功能的缺失; device-type:必须是"pci"; interrupts:包含NWL PCIe控制器的中断号; interrupts-name:msi1, msi0用于MSI中断,intx用于旧式中断,与interrupts...
本章将着重讲述PCIe的MSI和MSI-X中断机制,在FPGA应用中主要通过XDMA中断与上位机进行通信,本文略长。 简介 在PCIe总线中,MSI和MSI-X中断机制使用存储器写请求TLP向处理器提交中断请求,所以将MSI/MSI-X中断信息的存储器写报文简称为MSI/MSI-X报文。 x86使用FSB Interrupt Message方式处理MSI/MSI-X中断请求。
本章将着重讲述PCIe的MSI和MSI-X中断机制,在FPGA应用中主要通过XDMA中断与上位机进行通信,本文略长。 简介 在PCIe总线中,MSI和MSI-X中断机制使用存储器写请求TLP向处理器提交中断请求,所以将MSI/MSI-X中断信息的存储器写报文简称为MSI/MSI-X报文。 x86使用FSB Interrupt Message方式处理MSI/MSI-X中断请求。
从CoreLink GIC-500开始支持MSI/MSI-X。CoreLink GIC-400不支持,所以就算PCIe设备支持也无法实现MSI(-X)机制。 2.1.2 PCIe设备支持 每一个具有MSI capability的device都有一组对应的寄存器来表示MSI能力。 MSI Control Register中的multiple message capable(三个比特,假设值为x)表示MSI可产生多少message,计算方法为...
msi-parent = <&msi3>, <&msi1>, <&msi2>; #interrupt-cells = <1>; interrupt-map-mask = <0 0 0 7>; interrupt-map = <0000 0 0 1 &gic GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>, <0000 0 0 2 &gic GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>, ...
<GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "msi"; #interrupt-cells = <1>; interrupt-map-mask = <0 0 0 0x7>; interrupt-map = <0 0 0 1 &gpc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, <0 0 0 2 &gpc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, <0 0 0 3 &gpc GIC_SPI 121...