Re: Discussion about iopa()
From: Timur Tabi <hidden>
Date: 2007-02-08 13:42:08
Li Yang-r58472 wrote:
Do you think we should remove iopa?
It's not used very much any more. If you do a grep of the code, I think only some legacy drivers use it. As long as ioremap'd memory is both physically and virtually contiguous, I think iopa() is unnecessary.
The information is often not so obvious. The most case of using iopa is that we allocate memory from MURAM using rheap, and then get the physical address of it. We can calculate phy_addr by using: virt_addr - virt_muram_base + phy_muram_base, but it is not as straightforward as just using the page table, let alone we need to keep track of virt_muram_base and phy_muram_base.
Walking the page table is slower than using pointer math, so you want to avoid iopa() if you can. I think in general, the driver that calls ioremap() should store the physical address along with the virtual address of the base pointer.