我对用于将设备IO映射到内核虚拟内存的ioremap有基本查询。
我想知道,如果从ioremap返回的地址被传递到像virt_to_phys()这样的例程,它会返回设备IO地址吗?
感谢
virt_to_phys()
仅对内核线性映射中的虚拟地址有效,因为它只是一些快速地址运算,而不是完整的软件表遍历。线性映射通常只覆盖RAM。然而,ioremap()
返回的虚拟地址通常(可能总是,但我没有耐心检查每个实现)是vmalloc地址,所以如果您将其传递给virt_to_phys()
,您将得到胡说八道。