On Wed, 26 Sep 2007, Franck Bui-Huu wrote: > Except that if CONFIG_BUILD_ELF64 is set then we assume that the kernel > is linked in XKPHYS which results in Martin's crash since his kernel is > linked in CKSEG0. > > If you can recall that was done for a micro-optimization in __pa() but it > was a huge mistake because it relies on the configuration of BUILD_ELF64 > to be setup correctly by the user... So in this case there's no point to > set CONFIG_BUILD_ELF64='y' since it makes the kernel bigger and slower. > But it used to work until my change, so my own fault. While, as expressed previously, the assumption of CONFIG_BUILD_ELF64 meaning XKPHYS mapping is questionable, a requirement for the user to somehow magically know that the two became related somehow is unreasonable. Especially as in many cases people just copy an old .config over to a new version of the kernel and run `make oldconfig'; I have certainly not done anything else for years. Given the dependency is quite straightforward it could have been sorted out with a reverse dependency in Kconfig based on the load addresses specified in Makefile -- boring, but easily done. That assuming the failure of -msym32 resulting from the use of an older unsupported toolchain would be reported as fatal to the user, together with information of which versions are the minimum. Of course requiring a different version of the toolchain based on whether XKPHYS or KSEG0 mapping is used (i.e. newer for the latter!) is questionable too, but that is a different matter. Maciej