Re: suspend blockers & Android integration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Brian Swetland <swetland@xxxxxxxxxx> wrote:

> On Fri, Jun 4, 2010 at 1:55 AM, Ingo Molnar <mingo@xxxxxxx> wrote:
> > * Brian Swetland <swetland@xxxxxxxxxx> wrote:
> >> > After basically two years of growing your fork (and some attempts to get
> >> > your drivers into drivers/staging/ - from where they have meanwhile
> >> > dropped out again) you re-started with the worst possible thing to merge:
> >> > a big and difficult kernel feature affecting many subsystems. Why?
> >>
> >> Because a large number of our drivers depend on it.
> >
> > So why not put in some stub or so? Auto-suspend/suspend-blockers is a 
> > feature, and drivers ought to be able to work without a feature as well. 
> > Keep the suspend-blocker changes in the android tree initially, and get 
> > the main body of changes out first, and establish a flow of timely 
> > changes. That reduces your maintenance burden and increases trust for 
> > future changes - a win-win situation.
> 
> The impression I got from previous discussions was that upstream did not 
> want things that were built conditionally around APIs that did not exist in 
> mainline nor stub implementations for things that were not agreed upon.

Well, if it's some ugly #ifdef solution i could imagine light objections on 
pure aesthetic micro-grounds.

> We could easily either #if defined(CONFIG_SUSPEND_BLOCKERS) or submit a 
> suspend_blockers.h that just makes everything a no-op, if that's an 
> acceptable transition vehicle.  I didn't think either were an option open to 
> us.

You can certainly put in a suspend_blockers.h thing into some Android 
directory, and populate it with empty wrappers - as long as you only use it 
within Android drivers and not core kernel code or other subsystems you dont 
maintain.

It's being done all the time and helpful cleanup patches eliminating the stubs 
are frowned upon (unless the subs are there like for years with no progress 
and no maintenance in sight).

Putting empty stubs into include/linux/ would be pushing things i think.

In fact sometimes architectures even jump the gun with major kernel features: 
we had a dynticks implementation in ARM for years, we had RTLinux stubs in x86 
code for quite some time, and we still have perfmon in IA64 - despite the core 
kernel having gone for a different design.

It's certainly not ideal, but it's certainly a solution that is used every now 
and then. The less difference there is between trees the easier it becomes to 
merge - for both sides, both technically and socially.

> > In any case, this is not to suggest that the suspend-blocker bits are 
> > 'impossible' to merge. I just say that if you start with your most 
> > difficult feature you should not be surprised to be on the receiving end 
> > of a 1000+ mails flamewar on lkml ;-)
> 
> Yeah, I do understand that we're not making it easy for ourselves here.  I 
> think we hit the point where Rafael and Matthew signed off on things and 
> thought "aha, linux-pm maintainers are happy, now we're getting somewhere" 
> only to realize the light at the end of the tunnel was a bit further out 
> than we anticipated ^^

That's a well-known problem on lkml: the light at the end of the tunnel was 
the other train ;-)

Anyway, i'm not pessimistic at all: _some_ sort of scheme appears to be 
crystalising out today. Everyone seems to agree now that the main usecases are 
indeed useful and need handling one way or another - the rest is really just 
technological discussions how to achieve the mostly-agreed-upon end goal.

The worst situation are features where one side says 'we dont need this kind 
of functionality at all' - IMO auto/opportunistic-suspend isnt in that 
situation, fortunately.

Thanks,

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux