On 一, 2012-06-11 at 12:49 +0300, Eduardo Valentin wrote:
> Hello Rui,
>
> On Mon, Jun 11, 2012 at 11:19:11AM +0800, Zhang Rui wrote:
> > Hi, all,
> >
> > this patch set is made to enhance the current generic thermal layer.
> > It fixes several gaps discussed in
> > http://marc.info/?l=linux-acpi&m=133836783425764&w=2
> > and introduces a simple arbitrator to fix the "one cooling devices
> > referenced by multiple trip points in multiple thermal zones" problem.
>
> Thanks for taking this further. With code it is much better to progress.
>
> BTW, are you keeping this series somewhere in a branch?
>
Not yet.
But I'm thinking of create one. :)
> >
> > The whole idea is
> > 1) make sure we have multiple cooling states for both active cooling and
> > passive cooling devices. (patch 1,2,3)
>
> Nice!
>
> > 2) remove passive specific requirement, aka, tc1/tc2, and
> > introduce .get_trend() instead, for both active and passive cooling
> > algorithm. (patch 4,5)
>
> Cool. The .get_trend() might be also helpful in case there are sensors
> that provide trending computation, or at least, some history buffer.
>
> So, I definitely agree with this approach.
>
> > 3) introduce new function thermal_zone_trip_update(), this contains the
> > code for the general cooling algorithm. (patch 6)
>
> Ok.
>
> > 4) rename some thermal structures. Use thermal_instance instead of
> > thermal_cooling_device_instance, as this structure is used to
> > describe the behavior of a certain cooling device for a certain trip
> > point in a certain thermal zone.
> > thermal_zone_device has a list of all the thermal instances in this
> > thermal zone so that it can update them when the temperature changes.
> > thermal_cooling_device has a list of all the thermal instances for
> > this cooling device so that it can make decision which cooling state
> > should be in when the temperature changes. (patch 7,8,9,10)
>
> Ok.
>
> > 5) introduce a simple arbitrator. (patch 11)
> > When temperature changes, we update a thermal zone in two stages,
> > a) thermal_zone_trip_point() is the general cooling algorithm to
> > update the thermal instances in the thermal zone device
> > b) thermal_zone_do_update() is the arbitrator for the cooling device
> > to choose the deepest cooling state required to enter.
>
> The arbitrator is good starting point. I will have a deeper look on it.
>
> But we may be careful to solve the constraint issue only at thermal code
> level. There might be conflicting constraints coming from PM QoS layer,
> for instance.
>
hmmm, do you have a link for the discussions/patches mentioned?
I'll take a look at this. :)
> > 6) unify the code for both passive and active cooling.
>
> This is good.
>
> >
> > TODO, add locking mechanism. I know this is important but as this patch
> > set changes the thermal layer a(lot, I just want to make sure I'm in the
> > right direction before going on.
>
> Right. I second you on the incremental approach.
>
> >
> > BTW, in theory, they should make no change to the behavior of the
> > current generic thermal layer users. But I have just done the build
> > test.
>
> OK. I will fetch them and give them a trial on my side, then send better review.
>
Great. That would be really helpful. Thanks for your interest on this,
Eduardo! :)
-rui
_______________________________________________
linux-pm mailing list
linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/linux-pm
[Netdev]
[Ethernet Bridging]
[Linux Wireless]
[CPU Freq]
[Kernel Newbies]
[Fedora Kernel]
[Security]
[Linux for Hams]
[Netfilter]
[Bugtraq]
[Photo]
[Yosemite]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux RAID]
[Linux Admin]
[Samba]
[Video 4 Linux]
[Linux Resources]
[Free Dating]
[Archives]