Re: [RFC] Scheduler recorder and playback

2012-04-09 Thread Dmitry Antipov

On 04/04/2012 05:10 PM, Pantelis Antoniou wrote:


The reason for the slowdown is that perf sched record default settings is
tuned for x86 pretty much, and there's a huge amount of data being generated.

perf sched record is just a wrapper for perf record so try using this script
for recording:


#!/bin/sh
perf record \
-a \
-R \
-f \
-m 8192 \
-c 1 \
-e sched:sched_switch \
-e sched:sched_process_exit \
-e sched:sched_process_fork \
-e sched:sched_wakeup \
-e sched:sched_migrate_task


That's OK, but I got the following assertion while processing with 'perf sched 
spr-replay -l':

perf: builtin-sched.c:2629: execute_wait_id: Assertion `ret == 0 || ret == 11' 
failed.

The program continues, but may report a tens of these assertions.

And one more question around threads. I'm trying to record/replay a test 
application
based on WebKit framework, which tends to spawn a service threads from time to 
time.
So, 'perf sched spr-replay -l' output may looks like the following:

[perf/1503]
[kworker/0:2/1439]
[ksoftirqd/0/3]
[testbrowser/1504]
[swapper/1/0]
[kworker/1:2/1437]
[sshd/1232]
[testbrowser/1505]
[testbrowser/1506]
[ksoftirqd/1/9]
[testbrowser/1507]
[testbrowser/1508]
[sync_supers/179]
[testbrowser/1509]
[testbrowser/1510]
[testbrowser/1511]
[testbrowser/1512]
[testbrowser/1513]
[testbrowser/1514]
[testbrowser/1515]
[testbrowser/1516]
[testbrowser/1517]
[testbrowser/1518]
[testbrowser/1519]
[testbrowser/1520]
[testbrowser/1521]
[testbrowser/1522]
[testbrowser/1523]
[testbrowser/1524]
[testbrowser/1525]
[testbrowser/1526]
[testbrowser/1527]
[testbrowser/1528]
[testbrowser/1529]
[testbrowser/1530]
[testbrowser/1531]
[testbrowser/1532]
[testbrowser/1533]
[testbrowser/1534]
[testbrowser/1535]
[testbrowser/1536]
[testbrowser/1537]
[testbrowser/1538]
[testbrowser/1539]
[testbrowser/1540]
[testbrowser/1541]
[testbrowser/1542]
[testbrowser/1543]
[testbrowser/1544]
[testbrowser/1545]
[testbrowser/1546]
[testbrowser/1547]
[testbrowser/1548]
[testbrowser/1549]
[testbrowser/1550]
[testbrowser/1551]
[testbrowser/1552]
[testbrowser/1553]
[testbrowser/1554]
[testbrowser/1555]
[flush-179:0/1480]
[testbrowser/1556]
[testbrowser/1557]
[kjournald/510]
[mmcqd/0/499]
[khungtaskd/347]
[testbrowser/1558]
[testbrowser/1559]
[testbrowser/1560]
[testbrowser/1561]
[testbrowser/1562]
[testbrowser/1563]
[rsyslogd/573]
[testbrowser/1564]
[testbrowser/1565]
[testbrowser/1566]
[testbrowser/1567]
[testbrowser/1568]
[testbrowser/1569]
[testbrowser/1570]
[testbrowser/1571]
[testbrowser/1572]
[testbrowser/1573]
[testbrowser/1574]
[testbrowser/1575]
[testbrowser/1576]
[testbrowser/1577]
[testbrowser/1578]
[testbrowser/1579]
[testbrowser/1580]
[testbrowser/1581]
[testbrowser/1582]
[testbrowser/1583]
[testbrowser/1584]
[testbrowser/1585]
[testbrowser/1586]
[testbrowser/1587]
[testbrowser/1588]
[testbrowser/1589]
[testbrowser/1590]
[testbrowser/1591]
[testbrowser/1592]
[testbrowser/1593]
[testbrowser/1594]
[cron/1109]
[testbrowser/1595]
[testbrowser/1596]
[testbrowser/1597]
[testbrowser/1598]
[testbrowser/1599]
[testbrowser/1600]
[testbrowser/1601]
[testbrowser/1602]
[testbrowser/1603]
[testbrowser/1604]
[testbrowser/1605]
[testbrowser/1606]
[testbrowser/1607]
[testbrowser/1608]
[testbrowser/1609]
[testbrowser/1610]
[testbrowser/1611]
[testbrowser/1612]
[testbrowser/1613]
[testbrowser/1614]
[testbrowser/1615]
[testbrowser/1616]
[testbrowser/1617]
[testbrowser/1618]
[testbrowser/1619]
[testbrowser/1620]
[testbrowser/1621]
[testbrowser/1622]
[testbrowser/1623]
[testbrowser/1624]
[testbrowser/1625]
[testbrowser/1626]
[testbrowser/1627]
[testbrowser/1628]
[testbrowser/1629]

There are a lot of threads created by main thread [testbrowser/1504]. Is there 
a way
to find the most advanced CPU heaters among them?

Dmitry

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [RFC] Scheduler recorder and playback

2012-04-09 Thread Pantelis Antoniou
Hi Dmitry,


On Apr 9, 2012, at 1:07 PM, Dmitry Antipov wrote:

> On 04/04/2012 05:10 PM, Pantelis Antoniou wrote:
> 
>> The reason for the slowdown is that perf sched record default settings is
>> tuned for x86 pretty much, and there's a huge amount of data being generated.
>> 
>> perf sched record is just a wrapper for perf record so try using this script
>> for recording:
>> 
>>> #!/bin/sh
>>> perf record \
>>> -a \
>>> -R \
>>> -f \
>>> -m 8192 \
>>> -c 1 \
>>> -e sched:sched_switch \
>>> -e sched:sched_process_exit \
>>> -e sched:sched_process_fork \
>>> -e sched:sched_wakeup \
>>> -e sched:sched_migrate_task
> 
> That's OK, but I got the following assertion while processing with 'perf 
> sched spr-replay -l':
> 

OK

> perf: builtin-sched.c:2629: execute_wait_id: Assertion `ret == 0 || ret == 
> 11' failed.
> 

Hmm, futex op fails? Mind sending me the trace file to test locally?

> The program continues, but may report a tens of these assertions.
> 
> And one more question around threads. I'm trying to record/replay a test 
> application
> based on WebKit framework, which tends to spawn a service threads from time 
> to time.
> So, 'perf sched spr-replay -l' output may looks like the following:
> 
> [perf/1503]
> [kworker/0:2/1439]
> [ksoftirqd/0/3]
> [testbrowser/1504]
> [swapper/1/0]
> [kworker/1:2/1437]
> [sshd/1232]
> [testbrowser/1505]
> [testbrowser/1506]
> [ksoftirqd/1/9]
> [testbrowser/1507]
> [testbrowser/1508]
> [sync_supers/179]
> [testbrowser/1509]
> [testbrowser/1510]
> [testbrowser/1511]
> [testbrowser/1512]
> [testbrowser/1513]
> [testbrowser/1514]
> [testbrowser/1515]
> [testbrowser/1516]
> [testbrowser/1517]
> [testbrowser/1518]
> [testbrowser/1519]
> [testbrowser/1520]
> [testbrowser/1521]
> [testbrowser/1522]
> [testbrowser/1523]
> [testbrowser/1524]
> [testbrowser/1525]
> [testbrowser/1526]
> [testbrowser/1527]
> [testbrowser/1528]
> [testbrowser/1529]
> [testbrowser/1530]
> [testbrowser/1531]
> [testbrowser/1532]
> [testbrowser/1533]
> [testbrowser/1534]
> [testbrowser/1535]
> [testbrowser/1536]
> [testbrowser/1537]
> [testbrowser/1538]
> [testbrowser/1539]
> [testbrowser/1540]
> [testbrowser/1541]
> [testbrowser/1542]
> [testbrowser/1543]
> [testbrowser/1544]
> [testbrowser/1545]
> [testbrowser/1546]
> [testbrowser/1547]
> [testbrowser/1548]
> [testbrowser/1549]
> [testbrowser/1550]
> [testbrowser/1551]
> [testbrowser/1552]
> [testbrowser/1553]
> [testbrowser/1554]
> [testbrowser/1555]
> [flush-179:0/1480]
> [testbrowser/1556]
> [testbrowser/1557]
> [kjournald/510]
> [mmcqd/0/499]
> [khungtaskd/347]
> [testbrowser/1558]
> [testbrowser/1559]
> [testbrowser/1560]
> [testbrowser/1561]
> [testbrowser/1562]
> [testbrowser/1563]
> [rsyslogd/573]
> [testbrowser/1564]
> [testbrowser/1565]
> [testbrowser/1566]
> [testbrowser/1567]
> [testbrowser/1568]
> [testbrowser/1569]
> [testbrowser/1570]
> [testbrowser/1571]
> [testbrowser/1572]
> [testbrowser/1573]
> [testbrowser/1574]
> [testbrowser/1575]
> [testbrowser/1576]
> [testbrowser/1577]
> [testbrowser/1578]
> [testbrowser/1579]
> [testbrowser/1580]
> [testbrowser/1581]
> [testbrowser/1582]
> [testbrowser/1583]
> [testbrowser/1584]
> [testbrowser/1585]
> [testbrowser/1586]
> [testbrowser/1587]
> [testbrowser/1588]
> [testbrowser/1589]
> [testbrowser/1590]
> [testbrowser/1591]
> [testbrowser/1592]
> [testbrowser/1593]
> [testbrowser/1594]
> [cron/1109]
> [testbrowser/1595]
> [testbrowser/1596]
> [testbrowser/1597]
> [testbrowser/1598]
> [testbrowser/1599]
> [testbrowser/1600]
> [testbrowser/1601]
> [testbrowser/1602]
> [testbrowser/1603]
> [testbrowser/1604]
> [testbrowser/1605]
> [testbrowser/1606]
> [testbrowser/1607]
> [testbrowser/1608]
> [testbrowser/1609]
> [testbrowser/1610]
> [testbrowser/1611]
> [testbrowser/1612]
> [testbrowser/1613]
> [testbrowser/1614]
> [testbrowser/1615]
> [testbrowser/1616]
> [testbrowser/1617]
> [testbrowser/1618]
> [testbrowser/1619]
> [testbrowser/1620]
> [testbrowser/1621]
> [testbrowser/1622]
> [testbrowser/1623]
> [testbrowser/1624]
> [testbrowser/1625]
> [testbrowser/1626]
> [testbrowser/1627]
> [testbrowser/1628]
> [testbrowser/1629]
> 
> There are a lot of threads created by main thread [testbrowser/1504]. Is 
> there a way
> to find the most advanced CPU heaters among them?
> 

I see your problem, I'll whip something to report the CPU accumulated run time 
per
thread. 

> Dmitry

Regards

-- Pantelis


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: won't someone please think of the users!?

2012-04-09 Thread Clark, Rob
On Fri, Apr 6, 2012 at 2:59 PM, Nicolas Pitre  wrote:
> On Fri, 6 Apr 2012, Ricardo Salveti wrote:
>
>> On Fri, Apr 6, 2012 at 6:05 AM, Wookey  wrote:
>> > The fundamental question really is 'are we a distro or not'? If linaro
>> > is not a distro then no-one should be expecting stable releases - we
>> > are a technology showcase, and developer quick-start mechanism, and
>> > the existing process seems reasonably appropriate for that, but if we
>> > are expecting people to actually base real work off our outputs, then
>> > he's right and we ought to change some things.
>>
>> It might be the same thing, but for me the question is really "do we
>> care about users and we want people to use our LEBs?". If we assume
>> the LEBs are just a bunch of evaluation images to be used internally
>> to help improving the development and testing, then you could simply
>> say that we're not any kind of distro.
>>
>> Now if we decide to have people using and consuming our LEBs (what I
>> believe we do), then we need to think a bit further, and assume some
>> extra responsibilities. We don't want to be a full distro, as we want
>> to be flexible enough to break things once a while, but we really need
>> to be aware that once we get users running our images, they will
>> *expect* some sort of stability, putting us back as we were a distro
>> :-)
>
> Stability is not sufficient.  Users will also expect support, updates,
> and security fixes, etc.  And the more stable our stuff looks, the more
> users and user demands we'll get. Fulfilling those user *expectations*
> is hard and costly.  Some companies are basing their entire business on
> that, and they do a really great job already.
>
> We certainly don't shine at being a distro, and IMHO we shouldn't even
> try. If some people want the latest cool stuff we provide that's fine,
> but they should expect a shaky world.  Existing distro people out there
> will pick up our work too and stabilize it.  In fact, they are
> encouraged to do so.
>
> Stabilization takes time, which is why there is a delay before our stuff
> is available through existing distros.  There is simply no way around
> that.  Stable and latest bleeding edge are simply not compatible. If
> Linaro is to produce stabilized releases, we'll introduce extra delays
> too, and we'll consume a significant amount of development resources
> doing that.
>
> Therefore I don't think we should duplicate what distro people are
> already doing. That shouldn't be where our focus is.  Expectations to
> users should probably be clarified as well.

That is fair.. there is no point duplicating what distro folks are
already doing.

It might be nice to do a better job of folding back bits and pieces of
what we do into (for example) ubuntu PPA's..  for example, I think a
number of people are trying linaro builds just because they want xbmc,
not because they care about various other bleeding edge bits.

Although, other than OMAP, are there ubuntu PPA's to get graphics,
etc, accel for other member company platforms?  Ie. when someone like
the FXI cotton candy folks come along looking for a filesystem they
can use on their product (where presumably they care more about
enablement than bleeding edge), could we tell them to use ubuntu or
AOSP or whatever?  I'm just wondering if there is a good "one size
fits all" answer.. if there isn't a member company supported PPA for
ubuntu where you can get the gfx and/or multimedia blobs, then the
only-bleeding-edge-devel filesystems approach might be leaving a bit
of a gap for someone trying to make a product (which is, in the end,
what we care about).

BR,
-R

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Call for testing Linaro Android 12.04 candidates

2012-04-09 Thread Fathi Boudra
We have prepared Linaro Android 12.04 candidates. Spreadsheets have
been updated.
Please, run the tests that have a 'w' after them. Thanks!

Testers, builds and spreadsheets


Jon
https://android-build.linaro.org/builds/~linaro-android/vexpress-ics-gcc46-armlt-stable-open-12.04-release/
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AkxwyUNxNaAadExQdHNxTnR5SFZCQzJnN1ZtQ2ZhWkE

Chenglie
https://android-build.linaro.org/builds/~linaro-android/origen-ics-gcc46-samsunglt-stable-blob-12.04-release/
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AkxwyUNxNaAadDRDVl9TSHUweUk3eG9ndk9sNGxUVnc

Bernard
https://android-build.linaro.org/builds/~linaro-android/imx6-ics-gcc46-freescalelt-stable-open-12.04-release/
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AkxwyUNxNaAadDE1MlJmY19PQzlJOUY5OXk0SWJYT1E

Vishal
https://android-build.linaro.org/builds/~linaro-android/panda-ics-gcc46-tilt-tracking-blob-12.04-release/
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AkxwyUNxNaAadGVWd3pZazdaRUU0MnRnWmgwbVhTR0E

Botao
https://android-build.linaro.org/builds/~linaro-android/imx53-ics-gcc46-freescalelt-stable-open-12.04-release/
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AkxwyUNxNaAadDE1MlJmY19PQzlJOUY5OXk0SWJYT1E

Mathieu
https://android-build.linaro.org/builds/~linaro-android/snowball-ics-gcc46-igloo-stable-blob-12.04-release/
https://docs.google.com/a/linaro.org/spreadsheet/ccc?key=0AkxwyUNxNaAadEF1NXVhT3dQWnZsTHBydnpiWVB4Umc

Amit
https://android-build.linaro.org/builds/~linaro-android/vexpress-rtsm-ics-gcc46-armlt-stable-open-12.04-release/
No spreadsheet for vexpress-rtsm build.

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


qemu & hardware gfx acceleration

2012-04-09 Thread John Stultz

So the Google Android team just posted this:
http://feedproxy.google.com/~r/blogspot/hsDu/~3/OCt1AQzfyWI/faster-emulator-with-better-hardware.html

Which shows their device emulator running w/ hardware acceleration.  
Since I know they started with qemu, I was curious if there was any 
details as to if these sorts of changes were making it back upstream to 
qemu, or if qemu had its own plans for hardware acceleration?


Unfortunately there's little technical details in the post above.  The 
video is clearly running on OS X, so I'm not sure if this will also be 
usable w/ Linux hosts, but I could be wrong there.


thanks
-john


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: qemu & hardware gfx acceleration

2012-04-09 Thread Michael Hope
On 10 April 2012 07:13, John Stultz  wrote:
> So the Google Android team just posted this:
> http://feedproxy.google.com/~r/blogspot/hsDu/~3/OCt1AQzfyWI/faster-emulator-with-better-hardware.html
>
> Which shows their device emulator running w/ hardware acceleration.  Since I
> know they started with qemu, I was curious if there was any details as to if
> these sorts of changes were making it back upstream to qemu, or if qemu had
> its own plans for hardware acceleration?
>
> Unfortunately there's little technical details in the post above.  The video
> is clearly running on OS X, so I'm not sure if this will also be usable w/
> Linux hosts, but I could be wrong there.

Hi John.  Peter can say more, but I think they've done two things:
pass OpenGL operations through to the host and run a virtualised x86
Android image instead of a JITted ARM Android image.  I don't know
what's going upstream but the Google QEMU people are friendly and have
cherry picked from us before.

-- Michael

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Linaro 12.04 3.4-rc1 based androidization branch is available

2012-04-09 Thread John Stultz

I went ahead and forward ported the AOSP-3.3 tree to 3.4-rc1.

You can grab it here:
git://git.linaro.org/people/jstultz/android.git 
linaro-android-3.4-jstultz-rebase



thanks
-john


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: qemu & hardware gfx acceleration

2012-04-09 Thread Peter Maydell
On 9 April 2012 20:13, John Stultz  wrote:
> So the Google Android team just posted this:
> http://feedproxy.google.com/~r/blogspot/hsDu/~3/OCt1AQzfyWI/faster-emulator-with-better-hardware.html
>
> Which shows their device emulator running w/ hardware acceleration.  Since I
> know they started with qemu, I was curious if there was any details as to if
> these sorts of changes were making it back upstream to qemu, or if qemu had
> its own plans for hardware acceleration?

Unfortunately Google's Android emulator has diverged a lot from
upstream QEMU, to the extent that I don't think it very likely
that it will ever merge back again. (I'd love to be proved wrong,
of course, but we had a look at adding basic support for the Goldfish
virtual platform to upstream QEMU as part of a Google Summer of Code
project last year, and it turns out that you would basically have
to rewrite most of the device models to get anything upstream would
accept as following current QEMU frameworks/APIs/etc. Since then the
upstream QEMU API for device models has evolved again...)

The idea of hardware graphics acceleration (ie OpenGL(ES) passthrough)
for upstream QEMU has been discussed (and even the odd patch series or
two has been submitted though not committed); but I think that there
isn't anybody who wants it enough to be able to dedicate the time to
thrashing out a design acceptable to everybody and getting it accepted
by upstream.

-- PMM

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [PATCH 02/17][V2] ARM: OMAP4: cpuidle - Declare the states with the driver declaration

2012-04-09 Thread Kevin Hilman
Daniel Lezcano  writes:

> The cpuidle API allows to declare statically the states in the driver
> structure. Let's use it.
> We do no longer need the fill_cstate function called at runtime and
> by the way adding more instructions at boot time.
>
> Signed-off-by: Daniel Lezcano 
> Reviewed-by: Jean Pihet 
> Reviewed-by: Santosh Shilimkar 
> ---
>  arch/arm/mach-omap2/cpuidle44xx.c |   57 +---
>  1 files changed, 33 insertions(+), 24 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/cpuidle44xx.c 
> b/arch/arm/mach-omap2/cpuidle44xx.c
> index ee0bc50..6d86b59 100644
> --- a/arch/arm/mach-omap2/cpuidle44xx.c
> +++ b/arch/arm/mach-omap2/cpuidle44xx.c
> @@ -132,21 +132,39 @@ struct cpuidle_driver omap4_idle_driver = {
>   .name   = "omap4_idle",
>   .owner  = THIS_MODULE,
>   .en_core_tk_irqen   = 1,
> + .states = {
> + {
> + /* C1 - CPU0 ON + CPU1 ON + MPU ON */
> + .exit_latency = 2 + 2,
> + .target_residency = 5,
> + .flags = CPUIDLE_FLAG_TIME_VALID,
> + .enter = omap4_enter_idle,
> + .name = "C1",
> + .desc = "MPUSS ON"
> + },
> + {
> +/* C2 - CPU0 OFF + CPU1 OFF + MPU CSWR */
> + .exit_latency = 328 + 440,
> + .target_residency = 960,
> + .flags = CPUIDLE_FLAG_TIME_VALID,
> + .enter = omap4_enter_idle,
> + .name = "C2",
> + .desc = "MPUSS CSWR",
> + },
> + {
> + /* C3 - CPU0 OFF + CPU1 OFF + MPU OSWR */
> + .exit_latency = 460 + 518,
> + .target_residency = 1100,
> + .flags = CPUIDLE_FLAG_TIME_VALID,
> + .enter = omap4_enter_idle,
> + .name = "C3",
> + .desc = "MPUSS OSWR",
> + },
> + },
> + .state_count = OMAP4_NUM_STATES,

I think you can drop OMAP4_NUM_STATES here, and just use:

.state_count = ARRAY_SIZE(omap4_idle_driver.states),

Then drop OMAP4_NUM_STATES all together in patch 3.

Kevin

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [PATCH 04/17][V2] ARM: OMAP4: cpuidle - fix static omap4_idle_data declaration

2012-04-09 Thread Kevin Hilman
Daniel Lezcano  writes:

> Signed-off-by: Daniel Lezcano 
> Reviewed-by: Jean Pihet 
> Reviewed-by: Santosh Shilimkar 

Missing changelog.

Kevin

> ---
>  arch/arm/mach-omap2/cpuidle44xx.c |2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/cpuidle44xx.c 
> b/arch/arm/mach-omap2/cpuidle44xx.c
> index cdd7932..fb0f76e 100644
> --- a/arch/arm/mach-omap2/cpuidle44xx.c
> +++ b/arch/arm/mach-omap2/cpuidle44xx.c
> @@ -33,7 +33,7 @@ struct omap4_idle_statedata {
>  
>  #define OMAP4_NUM_STATES 3
>  
> -struct omap4_idle_statedata omap4_idle_data[OMAP4_NUM_STATES];
> +static struct omap4_idle_statedata omap4_idle_data[OMAP4_NUM_STATES];
>  static struct powerdomain *mpu_pd, *cpu0_pd, *cpu1_pd;
>  
>  /**

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [PATCH 07/17][V2] ARM: OMAP4: cpuidle - remove omap4_idle_data initialization at boot time

2012-04-09 Thread Kevin Hilman
Daniel Lezcano  writes:

> We initialized it at compile time, no need to do that at boot
> time.
>
> Signed-off-by: Daniel Lezcano 
> Reviewed-by: Jean Pihet 
> Reviewed-by: Santosh Shilimkar 
> ---
>  arch/arm/mach-omap2/cpuidle44xx.c |   26 +-
>  1 files changed, 1 insertions(+), 25 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/cpuidle44xx.c 
> b/arch/arm/mach-omap2/cpuidle44xx.c
> index b82f9fe..b0dd220 100644
> --- a/arch/arm/mach-omap2/cpuidle44xx.c
> +++ b/arch/arm/mach-omap2/cpuidle44xx.c
> @@ -33,7 +33,7 @@ struct omap4_idle_statedata {
>  
>  #define OMAP4_NUM_STATES 3
>  
> -static struct omap4_idle_statedata omap4_idle_data[] = {
> +static struct omap4_idle_statedata omap4_idle_data[OMAP4_NUM_STATES] = {

You removed OMAP4_NUM_STATES usage in patch 5, why add it back here?

Kevin


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [PATCH 06/17][V2] ARM: OMAP4: cpuidle - use the omap4_idle_data variable directly

2012-04-09 Thread Kevin Hilman
Daniel Lezcano  writes:

> We are storing the 'omap4_idle_data' in the private data field
> of the cpuidle device. As we are using this variable only in this file,
> that does not really make sense. Let's use the global variable directly
> instead dereferencing pointers in an idle critical loop.

Did you notice a performance impact before this change?   

> Also, that simplfies the code.

possibly, but at the expense of clean abstractions which IMO helps readability.

Unless there is a real performance hit here (which I doubt), I'd prefer
to leave this as is.

Kevin

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [PATCH 11/17][V2] ARM: OMAP3: cpuidle - remove cpuidle_params_table

2012-04-09 Thread Kevin Hilman
Daniel Lezcano  writes:

> We do not longer need the ''cpuidle_params_table' array as
> we defined the states in the driver and we checked they are
> all valid.
>
> We also remove the structure definition as it is no longer used.
>
> Signed-off-by: Daniel Lezcano 
> Reviewed-by: Jean Pihet 
> ---
>  arch/arm/mach-omap2/cpuidle34xx.c |   28 +++-
>  arch/arm/mach-omap2/pm.h  |   12 
>  2 files changed, 3 insertions(+), 37 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/cpuidle34xx.c 
> b/arch/arm/mach-omap2/cpuidle34xx.c
> index 3f46e45..cdf1b8f 100644
> --- a/arch/arm/mach-omap2/cpuidle34xx.c
> +++ b/arch/arm/mach-omap2/cpuidle34xx.c
> @@ -38,36 +38,14 @@
>  
>  #ifdef CONFIG_CPU_IDLE
>  
> -/*
> - * The latencies/thresholds for various C states have
> - * to be configured from the respective board files.
> - * These are some default values (which might not provide
> - * the best power savings) used on boards which do not
> - * pass these details from the board file.
> - */
> -static struct cpuidle_params cpuidle_params_table[] = {
> - /* C1 */
> - {2 + 2, 5, 1},
> - /* C2 */
> - {10 + 10, 30, 1},
> - /* C3 */
> - {50 + 50, 300, 1},
> - /* C4 */
> - {1500 + 1800, 4000, 1},
> - /* C5 */
> - {2500 + 7500, 12000, 1},
> - /* C6 */
> - {3000 + 8500, 15000, 1},
> - /* C7 */
> - {1 + 3, 30, 1},
> -};
> -#define OMAP3_NUM_STATES ARRAY_SIZE(cpuidle_params_table)
> -
>  /* Mach specific information to be recorded in the C-state driver_data */
>  struct omap3_idle_statedata {
>   u32 mpu_state;
>   u32 core_state;
>  };
> +
> +#define OMAP3_NUM_STATES 7
> +

Similar comment as for OMAP4.  You should be able to git rid of this all
together now.

Kevin

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [PATCH 10/17][V2] ARM: OMAP3: cpuidle - remove the 'valid' field

2012-04-09 Thread Kevin Hilman
Daniel Lezcano  writes:

> With the previous changes all the states are valid, except
> the last state which can be handled by decreasing the number
> of states.
>
> Signed-off-by: Daniel Lezcano 
> Reviewed-by: Jean Pihet 
> ---
>  arch/arm/mach-omap2/cpuidle34xx.c |   12 +++-
>  1 files changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/cpuidle34xx.c 
> b/arch/arm/mach-omap2/cpuidle34xx.c
> index 11a2c23..3f46e45 100644
> --- a/arch/arm/mach-omap2/cpuidle34xx.c
> +++ b/arch/arm/mach-omap2/cpuidle34xx.c
> @@ -67,7 +67,6 @@ static struct cpuidle_params cpuidle_params_table[] = {
>  struct omap3_idle_statedata {
>   u32 mpu_state;
>   u32 core_state;
> - u8 valid;
>  };
>  struct omap3_idle_statedata omap3_idle_data[OMAP3_NUM_STATES];
>  
> @@ -191,8 +190,7 @@ static int next_valid_state(struct cpuidle_device *dev,
>   }
>  
>   /* Check if current state is valid */
> - if ((cx->valid) &&
> - (cx->mpu_state >= mpu_deepest_state) &&
> + if ((cx->mpu_state >= mpu_deepest_state) &&
>   (cx->core_state >= core_deepest_state)) {
>   return index;
>   } else {
> @@ -216,8 +214,7 @@ static int next_valid_state(struct cpuidle_device *dev,
>   idx--;
>   for (; idx >= 0; idx--) {
>   cx = cpuidle_get_statedata(&dev->states_usage[idx]);
> - if ((cx->valid) &&
> - (cx->mpu_state >= mpu_deepest_state) &&
> + if ((cx->mpu_state >= mpu_deepest_state) &&
>   (cx->core_state >= core_deepest_state)) {
>   next_index = idx;
>   break;
> @@ -371,7 +368,6 @@ static inline struct omap3_idle_statedata 
> *_fill_cstate_usage(
>   struct omap3_idle_statedata *cx = &omap3_idle_data[idx];
>   struct cpuidle_state_usage *state_usage = &dev->states_usage[idx];
>  
> - cx->valid   = cpuidle_params_table[idx].valid;
>   cpuidle_set_statedata(state_usage, cx);
>  
>   return cx;
> @@ -399,7 +395,6 @@ int __init omap3_idle_init(void)
>  
>   /* C1 . MPU WFI + Core active */
>   cx = _fill_cstate_usage(dev, 0);
> - cx->valid = 1;  /* C1 is always valid */
>   cx->mpu_state = PWRDM_POWER_ON;
>   cx->core_state = PWRDM_POWER_ON;
>  
> @@ -436,14 +431,13 @@ int __init omap3_idle_init(void)
>* We disable C7 state as a result.
>*/
>   if (IS_PM34XX_ERRATUM(PM_SDRC_WAKEUP_ERRATUM_i583)) {
> - cx->valid = 0;
> + drv->state_count = OMAP3_NUM_STATES - 1;
>   pr_warn("%s: core off state C7 disabled due to i583\n",
>   __func__);

I'm not too particular about this one, but it might be cleaner to just
remove this check all together.  This errata already has a check in
next_valid_state() so strictly speaking, it's not needed here.

Kevin

>   }
>   cx->mpu_state = PWRDM_POWER_OFF;
>   cx->core_state = PWRDM_POWER_OFF;
>  
> - drv->state_count = OMAP3_NUM_STATES;
>   cpuidle_register_driver(&omap3_idle_driver);
>  
>   if (cpuidle_register_device(dev)) {

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [PATCH 00/17][V2] ARM: OMAP3/4 : cpuidle34xx and cpuidle44xx cleanups

2012-04-09 Thread Kevin Hilman
Daniel Lezcano  writes:

> This patchset makes some cleanup on these cpuidle drivers
> and consolidate the code across both architecture.

Thanks for this really nice cleanup.  I have some comments on specific
patches, but here's some general comments:

Some minor comments:

First, please be sure all patches have a descriptive changelog.  Yes,
even simple ones need changelogs.  In particular, maintainers are
looking for the "why" of a patch, not just the "what" or "how".

Second, this series introduced a couple sparse warnings:

/work/kernel/omap/pm/arch/arm/mach-omap2/cpuidle44xx.c:134:1: warning: symbol 
'omap4_idle_dev' was not declared. Should it be static?
/work/kernel/omap/pm/arch/arm/mach-omap2/cpuidle44xx.c:136:23: warning: symbol 
'omap4_idle_driver' was not declared. Should it be static?

Thanks,

Kevin

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: [PATCH V2 0/6] thermal: exynos: Add kernel thermal support for exynos platform

2012-04-09 Thread Zhang Rui
Hi, Amit,

On 三, 2012-04-04 at 10:02 +0530, Amit Kachhap wrote:
> Hi Len/Rui,
> 
> Any comment or feedback from your side about the status of this patch?
> Is it merge-able or major re-work is needed? I have fixed most of the
> comments in this patchset and currently working on some of the minor
> comments received and will submit them shortly.
> 
Sorry for the late response.

First of all, it makes sense to me to introduce the generic cpufrq
cooling implementation.
But I still have some questions.
I think the key reason why THERMAL_TRIP_STATE_INSTANCE is introduced is
that the MONIROR_ZONE and WARN_ZONE on exynos4 can not fit into the
current passive handling in the generic thermal layer well, right?
e.g. there is no tc1/tc2 on exynos4.

If yes, is it possible that we can enhance the passive cooling to
support the generic processor cooling?
say, introduce another way to throttle the processor in
thermal_zone_device_passive when tc1 and tc2 are not available?

thanks,
rui

> Regards,
> Amit Daniel
> 
> On 19 March 2012 11:47, Amit Daniel Kachhap  wrote:
> > Changes since V1:
> > *Moved the sensor driver to driver/thermal folder from driver/hwmon folder
> >  as suggested by Mark Brown and Guenter Roeck
> > *Added notifier support to notify the registered drivers of any cpu cooling
> >  action. The driver can modify the default cooling behaviour(eg set 
> > different
> >  max clip frequency).
> > *The percentage based frequency replaced with absolute clipped frequency.
> > *Some more conditional checks when setting max frequency.
> > *Renamed the new trip type THERMAL_TRIP_STATE_ACTIVE to
> >  THERMAL_TRIP_STATE_INSTANCE
> > *Many review comments from R, Durgadoss  and
> >  eduardo.valen...@ti.com implemented.
> > *Removed cooling stats through debugfs patch
> > *The V1 based can be found here,
> >  https://lkml.org/lkml/2012/2/22/123
> >  http://lkml.org/lkml/2012/3/3/32
> >
> > Changes since RFC:
> > *Changed the cpu cooling registration/unregistration API's to instance based
> > *Changed the STATE_ACTIVE trip type to pass correct instance id
> > *Adding support to restore back the policy->max_freq after doing frequency
> >  clipping.
> > *Moved the trip cooling stats from sysfs node to debugfs node as suggested
> >  by Greg KH g...@kroah.com
> > *Incorporated several review comments from eduardo.valen...@ti.com
> > *Moved the Temperature sensor driver from driver/hwmon/ to driver/mfd
> >  as discussed with Guenter Roeck  and
> >  Donggeun Kim  (https://lkml.org/lkml/2012/1/5/7)
> > *Some changes according to the changes in common cpu cooling APIs
> > *The RFC based patches can be found here,
> >  https://lkml.org/lkml/2011/12/13/186
> >  https://lkml.org/lkml/2011/12/21/169
> >
> >
> > Brief Description:
> >
> > 1) The generic cooling devices code is placed inside driver/thermal/* as
> > placing inside acpi folder will need un-necessary enabling of acpi code. 
> > This
> > codes is architecture independent.
> >
> > 2) This patchset adds a new trip type THERMAL_TRIP_STATE_INSTANCE which 
> > passes
> > cooling device instance number and may be helpful for cpufreq cooling 
> > devices
> > to take the correct cooling action. This trip type avoids the temperature
> > comparision check again inside the cooling handler.
> >
> > 3) This patchset adds generic cpu cooling low level implementation through
> > frequency clipping and cpu hotplug. In future, other cpu related cooling
> > devices may be added here. An ACPI version of this already exists
> > (drivers/acpi/processor_thermal.c). But this will be useful for platforms
> > like ARM using the generic thermal interface along with the generic cpu
> > cooling devices. The cooling device registration API's return cooling device
> > pointers which can be easily binded with the thermal zone trip points.
> > The important APIs exposed are,
> >   a)struct thermal_cooling_device *cpufreq_cooling_register(
> >struct freq_clip_table *tab_ptr, unsigned int tab_size,
> >const struct cpumask *mask_val)
> >   b)void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
> >
> > 4) Samsung exynos platform thermal implementation is done using the generic
> > cpu cooling APIs and the new trip type. The temperature sensor driver 
> > present
> > in the hwmon folder(registered as hwmon driver) is moved to thermal folder
> > and registered as a thermal driver.
> >
> > All this patchset is based on Kernel version 3.3-rc7
> >
> > A simple data/control flow diagrams is shown below,
> >
> > Core Linux thermal <->  Exynos thermal interface <- Temperature 
> > Sensor
> >  | |
> > \|/|
> >  Cpufreq cooling device <---
> >
> >
> > Amit Daniel Kachhap (6):
> >  thermal: Add a new trip type to use cooling device instance number
> >  thermal: Add generic cpufreq cooling implementation
> >  thermal: Add generic cpuhotplug cooling implementation
> >  hwmon: exynos4: Move therma