所以,我的问题是我无法读取或写入为 pcie 向我打开的可预取内存。我有两种不同的设置:
1 - 我有一个 linux 内核 4.9 根复杂设备,还有一个 4.9 设备作为端点。我能够对该设备进行寻址,所以我应该能够读取或写入它。但不知何故,我只是在阅读胡言乱语。
2 - 我有与端点相同的根复杂设备和裸机设备。我还能够解决设备的 BAR,但是当我在其上写入时,它会拒绝写入(我可以在 JTAG 调试器上看到内存),而且当我读取它时,它会返回 0xFFFF 一个字(顺便说一句,内存不同于 0xFFFF)。
我研究了 pci 上的可预取内存,但只找到了这些:
- pci 交换机可以通过字节合并(Merging bytes into a word.)对端点设备执行写操作。由于我正在写一个单词,所以问题不应该与此有关。
- 从可预取内存中读取不会产生副作用。(这似乎不是问题的开始。)
感谢您抽出宝贵时间,如果需要,我很乐意澄清我的设置或案例。
编辑说明:
我想向你们传递更多进展:裸机根复合体可以访问另一个根复合体的内存,即使它是可预取的。因此,通常的嫌疑人似乎是内核的默认驱动程序。
谢谢大家, 问题好像是端点设备本身的问题,已经解决了。