为啥pcie上的MMIO需要中断?

Posted

技术标签:

【中文标题】为啥pcie上的MMIO需要中断?【英文标题】:Why are interrupts needed for MMIO on pcie?为什么pcie上的MMIO需要中断? 【发布时间】:2021-10-02 21:06:24 【问题描述】:

这篇博文讨论了为 ARM 设备带来 pci passtrhough 支持的困难:https://www.linaro.org/blog/kvm-pciemsi-passthrough-armarm64/

它包括 GICv2/GICv3,它们是 ARM 的中断控制器。您可以通过 MMIO 对其进行写入,并使其向 CPU 发送中断。

但是,为什么需要中断? PCIe 驱动程序不应该通过 MMIO 与 PCIe 设备通信。也就是从内存中写/读?

【问题讨论】:

【参考方案1】:

这是必要的,因为否则操作系统无法知道事件的发生。操作系统不会不断地轮询内存。他们仍然需要知道事件发生以及何时发生。这就是中断进来的地方。

假设您有一个硬盘 PCIe 控制器。操作系统如何知道磁盘何时将其数据写入 RAM?

【讨论】:

以上是关于为啥pcie上的MMIO需要中断?的主要内容,如果未能解决你的问题,请参考以下文章

DPDK 网卡收包流程

pcie与DMA求助

pcie设备如何发送 msi中断请求

PCIe AER中断

RK3399平台开发系列讲解(PCI/PCI-E)5.54PCIE INTx中断机制

RK3399平台开发系列讲解(PCI/PCI-E)5.54PCIE INTx中断机制