On Tue, 2006-05-09 at 14:38 -0400, Kenneth Poole wrote: > In our build, (currently based on 2.6.14.3) we define IMAP_ADDR as > follows: > > #define IMAP_ADDR (((bd_t *)__res)->bi_immr_base)
Yes, this is (part of) what our 2.6.11.7-based patch does. > With very few exceptions, nearly all driver code that dereferences > IMAP_ADDR can be used unchanged and the IMMR value is always the value > passed up from the bootloader. We build one image that runs on > multiple platforms and some platforms place the IMMR address space at > different addresses than others. It?s not a constant. Exactly. I think this kind of "automatic adaption" to the particular platform is what should be in the vanilla kernel. > Regardless, I see little reason to ioremap() the IMMR address. This was the second major part of our 2.6.11.7-based patch. It performed a single ioremap(), stored the result in a global pointer, and then used that pointer in all the drivers instead of using IMAP_ADDR directly. Personally, I don't have a strong opinion yet as to whether this is desirable or not. > The MMU is set up in such a way that IMMR based locations can be > accessed directly. I'm still rather fuzzy on whether one can count on this always being the case on all PPC variants. (????) > Ken Poole, MRV Communications, Inc. Thanks! Walt