3
我有關於ioremap的基本查詢,用於映射到內核虛擬內存中的設備IO。內核中的映射地址
我想知道如果返回的地址從ioremap傳遞到像virt_to_phys()這樣的例程,它會返回設備IO地址嗎?
感謝
我有關於ioremap的基本查詢,用於映射到內核虛擬內存中的設備IO。內核中的映射地址
我想知道如果返回的地址從ioremap傳遞到像virt_to_phys()這樣的例程,它會返回設備IO地址嗎?
感謝
virt_to_phys()
僅適用於內核線性地圖內的虛擬地址,因爲它只是一些快速地址運算,而不是一個完整的軟件錶行走。線性地圖通常只包含RAM。但是,由ioremap()
返回的虛擬地址通常(可能總是,但我沒有耐心檢查每個實現)是否爲vmalloc地址,因此如果您將此地址傳遞給virt_to_phys()
,那麼您會收到無意義的回報。
感謝您的回覆。我看到你關於快速地址算術的觀點,它只是從虛擬地址中減去一些偏移地址來獲得物理地址。但是有沒有可用於從ioremap返回的虛擬地址返回設備IO地址的任何API? –
通常的方法可能是「首先記住你所謂的'ioremap()'」。我正在努力想出一個想要某個映射設備的物理地址的合理原因_outside_該設備的驅動程序,並且在驅動程序中,如果您知道要發佈,您可以將私有數據中的物理地址存儲在CPU地址旁邊在未來需要它(例如,用於設置dmaengine請求)。 – Notlikethat