I've made an executive decision to roll back to 3.0.31 for the next crespo (Nexus S) release and not apply any mainline patches. This will also give me chance to clean the garbage out of my git which I should have never carried over from the ICS kernel.
There are a few reasons for this:
- Mainline stable updates often introduce subtle issues/bugs. I can recall many bugs which have been introduced by merging mainline ‘stable’ code.
- They are of little benefit, if any benefit at all to our phones. If you look through a lot of the fixes in mainline stable, it's all for very large systems. All those 3.0.39 mm patches for instance, after looking through them all, they are all for huge systems and will not benefit our devices in the slightest.
- Mainline stable has become a complete farce, with far too much code being merged. There are far too many updates, there is far too much code churn. It is supposed to be stable, updates should be small, infrequent and well tested to fix critical bugs or security issues only, but that appears to have been forgotten, with new features being added, unnecessary code refactoring, and general churn that shouldn’t be happening.
My tests on maguro (Nexus Prime) show that between 3.0.31 and 3.0.40, boot time slowed by 4 seconds, which is approximately 15% on that device. This doesn't make me happy, and although I haven't tested specifically on crespo (Nexus S) yet because I’m still waiting for it back from repair, I expect the impact to be just as severe.
And this slowdown is for what benefit? Extra subtle bugs. Having the latest version number. Meh.
As regards user experience, the .31 kernel certainly 'feels' quicker than the .40 kernel on maguro, and 'feel' and perception is what it is about as far as I am concerned.
So, from now on, I won't be applying any mainline stable updates to any of my 3.0 based kernels, except patches for exploitable critical security vulnerabilities.
Latest is certainly not always best, especially when there is as much code churn as there is within the 3.0 kernel.