On May 9, 2006, at 3:52 PM, Walter L. Wimer III wrote: > Exactly. I think this kind of "automatic adaption" to the particular > platform is what should be in the vanilla kernel.
This does not mean you can choose some arbitrary value. There is a small range of high memory addresses that will work successfully for IMMR. You may not see any problems right away, but depending upon drivers selected and the software features used, some problems will crop up. There are also MMU performance enhancements that may be used with certain values, and guaranteed kernel crashes at some point in the future when abused. With Linux, the IMMR should always have a value of 0xf0000000 or 0xff000000 for best results. > 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. This is not an acceptable practice. We are removing all global pointers like this, and any driver that needs access to some or all of the IMMR space should be individually mapping those regions it needs. Under the covers of ioremap() we are performing various alignment and reuse of address spaces in order to support things like performance enhancements and cache coherent regions. Thanks. -- Dan