"Can we please finish up this merge a little more before we freeze 2.6.24? The way we currently have leftovers of arch/i386/ and arch/x86_64/ is quite a nightmare and not how the other architectures were merged," Christoph Hellwig asked, leading to an insightful reply by Ingo Molnar. Ingo began by noting, "to answer that question one should first be aware of the fundamental code quality problems that the unified x86 architecture has inherited from the split i386 and x86_64 architectures." He then utilized the
checkpatch script to generate a table of "coding style errors per one thousand lines of source code". In his table,
arch/i386/ rated 77.3 errors per thousand lines of source, with
arch/x86_64/ rating 96.0. The new unified
arch/x86/ rated a lower but still very high 74.1. He summarized, "it is plainly obvious that the x86_64 and i386 architectures were in a dreadful state of code quality before the unification. Their code quality was almost an order of magnitude worse than that of the core kernel (!) - and their code quality was significantly worse than that of a couple of other, comparable architectures." Ingo continued:
"So to answer your question: full unification is no easy task and it is not automatic at all. The x86_64 tree has diverged from the i386 tree in the past 5 years due to their illogical, forced separation and a resulting bitrot. The two architectures have grown different sets of cleanliness problems and different sets of functions with arbitrary differences that often cover the same functionality. It's all compounded by the fact that the 64-bit code is in worse shape than the 32-bit - so it's not like we could just pick the 64-bit code and use that as the unified code. The 32-bit code is also used about 8-10 times more frequently than the 64-bit code. So there is no easy 'just unify it' path."
"The new maintainers of the x86 architecture (Thomas, Peter and me), and many other x86 developers are highly motivated to improve the x86 architecture's code quality and unify the heck out of it, and there are some real improvements in 2.6.24-rc1 already, but we _must_ be (and are) working on this carefully. So we do unifications on a case by case basis, with the highest priority being to not introduce 'unification regressions'. The x86 architecture is the most common Linux architecture after all - and users care much more about having a working kernel than they care about cleanups and unifications. So yes, we agree with you, but please be patient! :-) This cannot be realistically finished in v2.6.24, without upsetting the codebase."