如何在收到msi中断时如何保证将所有DMA数据写入ram?

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

有些问题让我感到困惑:

  1. Msi中断是存储器写请求。 MSI可以确保所有DMA数据都已写入ram吗?还是仅确保数据已在pci网桥上完全传输?

  2. 如果msi中断仅确保在pci网桥上完全传输数据。如何在收到msi中断时保证所有DMA数据都写入ram?

  3. msi内存写入请求是否确实写入ram?

提前感谢。

linux-kernel interrupt pci pci-e
1个回答
0
投票

确保在MSI写入之前将DMA数据写入总线] >>是设备的责任。在驱动程序/ OS需要完成与设备请求有关的所有操作之前,设备不应该发出MSI写操作,无论是否需要进行内存读取,内存写入或其他操作。但是,假设设备已按照适当的顺序(在总线上)完成了事情(在DMA中写入,然后在MSI中写入),则取决于主机桥,以确保将数据写入到RAM中的RAM中。正确的顺序。但通常,MSI写入本身与任何保证无关。主机桥接器只是确保按给定的顺序执行其内存事务(并且内存子系统确保所有CPU和外围设备之间的一致性,从而即使存在高速缓存等,数据也似乎已按照正确的顺序写入到内存中。 )。

关于您的问题3,当您在设备寄存器中设置MSI时,MSI写入将转到设备被告知将其发送到的任何位置。通常,“ MSI内存写入”被定向到与系统中断控制器相关联的地址,而不是实际的RAM,但是OS /驱动程序负责配置正确的地址。

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