On 05/21/2012 09:21 PM, Andy Green wrote:
On 22/05/12 01:58, Somebody in the thread at some point said:
On Mon, May 21, 2012 at 10:33:47AM -0700, John Stultz wrote:
like Andy, I am a bit concerned that we merge the android stuff into the linaro-core and that we get android candies in 'vanilla' kernel. can't we (shouldn't we) have -android on top of -core and pull -android only into 'android' kernel? it's true that for most things, -android is not impacting a 'vanilla' kernel, but clearly from the outside (community *and* customers) a kernel 'tainted' with Android is not a 'vanilla' kernel anymore...
So this re-opens the discussion we've been having since at least last Oct in moving to a consolidated kernel.
Since Android upstreaming is an very active goal of Linaro, I think there's strong technical value in putting the Android patches in along with all the other Linaro trees, as it allows us to work out any sort of incompatibilities or issues, so we can resolve them prior to being pushed upstream.
I'm quite +1 on what John is saying. There was a time when there was great uncertainty about the future of the Android patches, but since Linus' comment last year it's become dead certain that the functionality /will/ be merged upstream. We can pave the way by getting any integration issues sorted out early -- similarly to what we do for practically everything else in linux-linaro.
Hm I just said we should audit it for being dependent on CONFIG_ANDROID.
If we KNOW that deconfiguration of CONFIG_ANDROID is equivalent to not having Androidization patched in, people will stop wanting to get rid of the patches. But since Google's interest is in the case it is configured, I doubt they took care about having it disabled well.
For new or optional functionality, this is usually the case, but not for all changes. Having multiple config based code paths has additional maintainance burden, so frequently if a change really should be generic there isn't any need for a config. The simplest example of this are bug fixes, which shouldn't be configurable off :)
For other configurable features in the mainline kernel, part of the deal of getting in there is that they can be turned off nicely. There's even a wholesale CONFIG_PM. But the remaining (200 or so last time I looked) Androidization patches haven't been through that kind of scrutiny by anyone. Again last time I looked they fiddled with a fair amount of kernel guts, sometimes with additional config coverage but not always.
Initially we added without discrimination that 7 year old patch that turns dmesg into junk to llct because it came in with Google's Androidization series. It suggests we're just shovelling them on without any plan at the moment.
And I'd say in this case things worked ideally! Android tree had a very old hack that has since become obsolete. You noticed it in the tree and requested it be reverted. I've generated a patch to do so, and plan to send it to AOSP in my next submission bundle. Once the Google guys rebase, and squish the two patches down, we're down one more patch. This is exactly the type of integration work I think we benefit from.
If this were something that we went in and just configured off, its less likely anyone would notice it was unnecessary until we finished upstreaming all the larger changes we're focusing on.
Similarly, Andrey and Tushar found early cases during the first few integration attempts where parts of the Android patch set didn't align with non-Android builds. They submitted patches that have since been pushed back to AOSP.
With regard to your characterization of shovelling the patches in, its true we've traditionally taken the patch tree in its entirety, in order to produce Android builds that were fully functional. The positive news is that as items have been making it upstream, we may soon be able to reverse the model, only hand picking specific required changes from the AOSP tree. This possibility has different pros and cons, so it may not be the right approach, but its something I'll be looking at in the future.
If we're claiming we are converging these patches to upstream, "working out integration issues" then we should be auditing them for being properly dependent on CONFIG_ANDROID before adding them to the same basis used for vanilla consumers.
So I'd welcome more help in reviewing and auditing the Android patch tree with detailed care to accomplish what you're suggesting. That said, I would suggest against blindly be adding #ifdef CONFIG_ANDROID all over the code, as there are changes that shouldn't necessarily be configurable. Working these out properly will take time and care.
Again, if there is a specific concern, please let me know and I'll try to quickly address it, but I currently don't have the bandwith myself to spend auditing the entire patch set with my current priorities. If that is really unacceptable, we can have Andrey avoid merging the Android tree into the linaro-core set, and instead merge it at a later phase. But I think this would be unfortunate as we would miss out on wider testing of the changes.
thanks -john