fixup_bigphys_addr and ioremap64 question

Kumar Gala galak at kernel.crashing.org
Tue Nov 7 06:27:43 EST 2006


On Nov 6, 2006, at 10:45 AM, Matt Porter wrote:

> On Sun, Nov 05, 2006 at 10:16:20PM -0600, Josh Boyer wrote:
>> On Mon, 2006-11-06 at 15:09 +1100, Benjamin Herrenschmidt wrote:
>>>>> So why do we have both ioremap and ioremap64 knowing that the  
>>>>> former is
>>>>> defined to take a phys_addr_t argument ?
>>>>>
>>>>> Currently, we have both, with the only difference being that  
>>>>> ioremap
>>>>> calls ioremap64 but also passes the argument through a
>>>>> fixup_bigphys_addr() function first.
>>>>>
>>>>> It took me a while to find it ... it's not defined in generic  
>>>>> code but
>>>>> in platform code (ugh !). In fact, the only version of it we  
>>>>> have in
>>>>> arch/powerpc is in the 85xx support and does:
>>>>
>>>> It's in arch/ppc/syslib/44x_common.c and it's used to trap the  
>>>> least
>>>> significant 32 bits of an address and set the right ERPN for io  
>>>> space on
>>>> 44x.  Something like that might be needed when 44x merges to
>>>> arch/powerpc.
>>>
>>> Well, my point is that since nowadays we have 64 bits struct  
>>> resource
>>> and 64 bits phys_addr_t passed to ioremap, do we still need  
>>> that ? In
>>> fact, in my upcoming patch merging io.h for 32 and 64 bits in
>>> asm-powerpc, I've simply removed that hook and ioremap64 :-) I  
>>> can add
>>> it back still, but so far, I yet have to be convinced there is  
>>> still a
>>> good reason for that hook.
>>
>> Hm.. that might be ok.  I'm hoping to get back to working on  
>> something
>> soon so I'll be able to tell more later.  Maybe Matt knows for sure.
>
> Yes, that's the right way to go.  The history on this is that when
> the 64-bit resource change came relatively recently, ioremap64 and
> friends weren't killed off in arch/ppc.  ioremap64 only existed  
> because
> a long time ago several people blocked the idea of 64-bit resources
> (on 32-bit platforms) and we needed a way around it plus all the
> fixup garbage. Going forward, we now can handle everything through
> ioremap() with no fixup stuff. There's a related issue with mmap and
> 64-bits but that's a separate issue yet that should now be addressed.
>
>> It'll probably break out-of-tree drivers though once the merge  
>> happens
>> for 4xx.  Could we leave ioremap64 around for a bit with a  
>> deprecation
>> warning?
>
> The kernel APIs break all the time. Every out of tree driver has to
> have that built into their expectation when moving to a new kernel
> so I don't see a good reason for making a special case here.

On 85xx I just put the place holder in for handling the larger  
address space, but we never did anything real with it.  Now that we  
have 64-bit resources I'm happy to see ioremap() fixed and ioremap64  
go away.

- k



More information about the Linuxppc-dev mailing list