我在x86_64平台上的Linux内核上遇到关于PCIE预取BAR访问的一些问题 对于我的PCIE设备,BAR 2是可预取的,而BAR5是不可预取的,并且两者都是IORESOURCE_MEM。 我使用了ioremap来映射两个栏,并使用writel来访问它们。
奇怪的是,使用writel编写BAR2(可预取)有时会丢失,但是写入BAR5可以。两个BAR的写入频率相同且非常高。
有人可以提出一些建议吗?尝试映射和访问可预取的PCIE BAR时,Linux内核中有什么特别的东西吗? ioremap是映射可预取的PCIE BAR的最佳API吗?