Subject: Re: Discussion about iopa()

From: Timur Tabi <[email-masked]>
Date: Thu, 08 Feb 2007 07:41:58 -0600

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.