<feed xmlns='http://www.w3.org/2005/Atom'>
<title>xavi/android_kernel_m2note/drivers/cpufreq, branch ng-7.1.2</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://gitea.privatedns.org/xavi/android_kernel_m2note/atom?h=ng-7.1.2</id>
<link rel='self' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/atom?h=ng-7.1.2'/>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/'/>
<updated>2019-05-03T14:07:03+00:00</updated>
<entry>
<title>cpufreq: Fix timer/workqueue corruption by protecting reading governor_enabled</title>
<updated>2019-05-03T14:07:03+00:00</updated>
<author>
<name>Jane Li</name>
<email>jiel@marvell.com</email>
</author>
<published>2014-01-03T09:17:41+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=cb126949f8241f48d20c0ab74afaebdbb50b7891'/>
<id>urn:sha1:cb126949f8241f48d20c0ab74afaebdbb50b7891</id>
<content type='text'>
When a CPU is hot removed we'll cancel all the delayed work items via
gov_cancel_work(). Sometimes the delayed work function determines that
it should adjust the delay for all other CPUs that the policy is
managing. If this scenario occurs, the canceling CPU will cancel its own
work but queue up the other CPUs works to run.

Commit 3617f2 (cpufreq: Fix timer/workqueue corruption due to double
queueing) has tried to fix this, but reading governor_enabled is not
protected by cpufreq_governor_lock. Even though od_dbs_timer() checks
governor_enabled before gov_queue_work(), this scenario may occur. For
example:

 CPU0                                        CPU1
 ----                                        ----
 cpu_down()
  ...                                        &lt;work runs&gt;
  __cpufreq_remove_dev()                     od_dbs_timer()
   __cpufreq_governor()                       policy-&gt;governor_enabled
    policy-&gt;governor_enabled = false;
    cpufreq_governor_dbs()
     case CPUFREQ_GOV_STOP:
      gov_cancel_work(dbs_data, policy);
       cpu0 work is canceled
        timer is canceled
        cpu1 work is canceled
        &lt;waits for cpu1&gt;
                                              gov_queue_work(*, *, true);
                                               cpu0 work queued
                                               cpu1 work queued
                                               cpu2 work queued
                                               ...
        cpu1 work is canceled
        cpu2 work is canceled
        ...

At the end of the GOV_STOP case cpu0 still has a work queued to
run although the code is expecting all of the works to be
canceled. __cpufreq_remove_dev() will then proceed to
re-initialize all the other CPUs works except for the CPU that is
going down. The CPUFREQ_GOV_START case in cpufreq_governor_dbs()
will trample over the queued work and debugobjects will spit out
a warning:

WARNING: at lib/debugobjects.c:260 debug_print_object+0x94/0xbc()
ODEBUG: init active (active state 0) object type: timer_list hint: delayed_work_timer_fn+0x0/0x14
Modules linked in:
CPU: 1 PID: 1205 Comm: sh Tainted: G        W    3.10.0 #200
[&lt;c01144f0&gt;] (unwind_backtrace+0x0/0xf8) from [&lt;c0111d98&gt;] (show_stack+0x10/0x14)
[&lt;c0111d98&gt;] (show_stack+0x10/0x14) from [&lt;c01272cc&gt;] (warn_slowpath_common+0x4c/0x68)
[&lt;c01272cc&gt;] (warn_slowpath_common+0x4c/0x68) from [&lt;c012737c&gt;] (warn_slowpath_fmt+0x30/0x40)
[&lt;c012737c&gt;] (warn_slowpath_fmt+0x30/0x40) from [&lt;c034c640&gt;] (debug_print_object+0x94/0xbc)
[&lt;c034c640&gt;] (debug_print_object+0x94/0xbc) from [&lt;c034c7f8&gt;] (__debug_object_init+0xc8/0x3c0)
[&lt;c034c7f8&gt;] (__debug_object_init+0xc8/0x3c0) from [&lt;c01360e0&gt;] (init_timer_key+0x20/0x104)
[&lt;c01360e0&gt;] (init_timer_key+0x20/0x104) from [&lt;c04872ac&gt;] (cpufreq_governor_dbs+0x1dc/0x68c)
[&lt;c04872ac&gt;] (cpufreq_governor_dbs+0x1dc/0x68c) from [&lt;c04833a8&gt;] (__cpufreq_governor+0x80/0x1b0)
[&lt;c04833a8&gt;] (__cpufreq_governor+0x80/0x1b0) from [&lt;c0483704&gt;] (__cpufreq_remove_dev.isra.12+0x22c/0x380)
[&lt;c0483704&gt;] (__cpufreq_remove_dev.isra.12+0x22c/0x380) from [&lt;c0692f38&gt;] (cpufreq_cpu_callback+0x48/0x5c)
[&lt;c0692f38&gt;] (cpufreq_cpu_callback+0x48/0x5c) from [&lt;c014fb40&gt;] (notifier_call_chain+0x44/0x84)
[&lt;c014fb40&gt;] (notifier_call_chain+0x44/0x84) from [&lt;c012ae44&gt;] (__cpu_notify+0x2c/0x48)
[&lt;c012ae44&gt;] (__cpu_notify+0x2c/0x48) from [&lt;c068dd40&gt;] (_cpu_down+0x80/0x258)
[&lt;c068dd40&gt;] (_cpu_down+0x80/0x258) from [&lt;c068df40&gt;] (cpu_down+0x28/0x3c)
[&lt;c068df40&gt;] (cpu_down+0x28/0x3c) from [&lt;c068e4c0&gt;] (store_online+0x30/0x74)
[&lt;c068e4c0&gt;] (store_online+0x30/0x74) from [&lt;c03a7308&gt;] (dev_attr_store+0x18/0x24)
[&lt;c03a7308&gt;] (dev_attr_store+0x18/0x24) from [&lt;c0256fe0&gt;] (sysfs_write_file+0x100/0x180)
[&lt;c0256fe0&gt;] (sysfs_write_file+0x100/0x180) from [&lt;c01fec9c&gt;] (vfs_write+0xbc/0x184)
[&lt;c01fec9c&gt;] (vfs_write+0xbc/0x184) from [&lt;c01ff034&gt;] (SyS_write+0x40/0x68)
[&lt;c01ff034&gt;] (SyS_write+0x40/0x68) from [&lt;c010e200&gt;] (ret_fast_syscall+0x0/0x48)

In gov_queue_work(), lock cpufreq_governor_lock before gov_queue_work,
and unlock it after __gov_queue_work(). In this way, governor_enabled
is guaranteed not changed in gov_queue_work().

Signed-off-by: Jane Li &lt;jiel@marvell.com&gt;
Acked-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Reviewed-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Signed-off-by: Corinna Vinschen &lt;xda@vinschen.de&gt;
</content>
</entry>
<entry>
<title>Replace &lt;asm/uaccess.h&gt; with &lt;linux/uaccess.h&gt; globally</title>
<updated>2018-11-29T16:49:05+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2016-12-24T19:46:01+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=8588b01909e0145e5e84f5fe0a5353bd194f205c'/>
<id>urn:sha1:8588b01909e0145e5e84f5fe0a5353bd194f205c</id>
<content type='text'>
This was entirely automated, using the script by Al:

  PATT='^[[:blank:]]*#[[:blank:]]*include[[:blank:]]*&lt;asm/uaccess.h&gt;'
  sed -i -e "s!$PATT!#include &lt;linux/uaccess.h&gt;!" \
        $(git grep -l "$PATT"|grep -v ^include/linux/uaccess.h)

to do the replacement at the end of the merge window.

Requested-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Moyster &lt;oysterized@gmail.com&gt;
</content>
</entry>
<entry>
<title>format-security: move static strings to const</title>
<updated>2017-12-05T17:06:11+00:00</updated>
<author>
<name>Kees Cook</name>
<email>keescook@chromium.org</email>
</author>
<published>2017-04-16T15:34:56+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=1a699dd991d95752b80499625175bbf99a874783'/>
<id>urn:sha1:1a699dd991d95752b80499625175bbf99a874783</id>
<content type='text'>
While examining output from trial builds with -Wformat-security enabled,
many strings were found that should be defined as "const", or as a char
array instead of char pointer.  This makes some static analysis easier, by
producing fewer false positives.

As these are all trivial changes, it seemed best to put them all in a
single patch rather than chopping them up per maintainer.

Link: http://lkml.kernel.org/r/20170405214711.GA5711@beast
Signed-off-by: Kees Cook &lt;keescook@chromium.org&gt;
Acked-by: Jes Sorensen &lt;jes@trained-monkey.org&gt;	[runner.c]
Cc: Tony Lindgren &lt;tony@atomide.com&gt;
Cc: Russell King &lt;linux@armlinux.org.uk&gt;
Cc: "Maciej W. Rozycki" &lt;macro@linux-mips.org&gt;
Cc: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Cc: Arnd Bergmann &lt;arnd@arndb.de&gt;
Cc: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Cc: "Rafael J. Wysocki" &lt;rjw@rjwysocki.net&gt;
Cc: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Cc: Daniel Vetter &lt;daniel.vetter@intel.com&gt;
Cc: Jani Nikula &lt;jani.nikula@linux.intel.com&gt;
Cc: Sean Paul &lt;seanpaul@chromium.org&gt;
Cc: David Airlie &lt;airlied@linux.ie&gt;
Cc: Yisen Zhuang &lt;yisen.zhuang@huawei.com&gt;
Cc: Salil Mehta &lt;salil.mehta@huawei.com&gt;
Cc: Thomas Bogendoerfer &lt;tsbogend@alpha.franken.de&gt;
Cc: Jiri Slaby &lt;jslaby@suse.com&gt;
Cc: Patrice Chotard &lt;patrice.chotard@st.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: James Hogan &lt;james.hogan@imgtec.com&gt;
Cc: Paul Burton &lt;paul.burton@imgtec.com&gt;
Cc: Matt Redfearn &lt;matt.redfearn@imgtec.com&gt;
Cc: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Cc: Ingo Molnar &lt;mingo@kernel.org&gt;
Cc: Rasmus Villemoes &lt;linux@rasmusvillemoes.dk&gt;
Cc: Mugunthan V N &lt;mugunthanvnm@ti.com&gt;
Cc: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Cc: Jarod Wilson &lt;jarod@redhat.com&gt;
Cc: Florian Westphal &lt;fw@strlen.de&gt;
Cc: Antonio Quartulli &lt;a@unstable.cc&gt;
Cc: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Cc: Kejian Yan &lt;yankejian@huawei.com&gt;
Cc: Daode Huang &lt;huangdaode@hisilicon.com&gt;
Cc: Qianqian Xie &lt;xieqianqian@huawei.com&gt;
Cc: Philippe Reynes &lt;tremyfr@gmail.com&gt;
Cc: Colin Ian King &lt;colin.king@canonical.com&gt;
Cc: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Christian Gromm &lt;christian.gromm@microchip.com&gt;
Cc: Andrey Shvetsov &lt;andrey.shvetsov@k2l.de&gt;
Cc: Jason Litzinger &lt;jlitzingerdev@gmail.com&gt;
Cc: WANG Cong &lt;xiyou.wangcong@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>cpufreq: s3c2416: double free on driver init error path</title>
<updated>2017-11-06T14:31:04+00:00</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2017-02-07T13:19:06+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=c0f6551b23089a3249e4a4cf2bc264bd158deeea'/>
<id>urn:sha1:c0f6551b23089a3249e4a4cf2bc264bd158deeea</id>
<content type='text'>
commit a69261e4470d680185a15f748d9cdafb37c57a33 upstream.

The "goto err_armclk;" error path already does a clk_put(s3c_freq-&gt;hclk);
so this is a double free.

Fixes: 34ee55075265 ([CPUFREQ] Add S3C2416/S3C2450 cpufreq driver)
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Reviewed-by: Krzysztof Kozlowski &lt;krzk@kernel.org&gt;
Acked-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Signed-off-by: Willy Tarreau &lt;w@1wt.eu&gt;
</content>
</entry>
<entry>
<title>cpufreq: conservative: Allow down_threshold to take values from 1 to 10</title>
<updated>2017-11-06T14:19:13+00:00</updated>
<author>
<name>Tomasz Wilczyński</name>
<email>twilczynski@naver.com</email>
</author>
<published>2017-06-11T08:28:39+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=dd749659342acc114160f19b0db5821ae30f83e4'/>
<id>urn:sha1:dd749659342acc114160f19b0db5821ae30f83e4</id>
<content type='text'>
commit b8e11f7d2791bd9320be1c6e772a60b2aa093e45 upstream.

Commit 27ed3cd2ebf4 (cpufreq: conservative: Fix the logic in frequency
decrease checking) removed the 10 point substraction when comparing the
load against down_threshold but did not remove the related limit for the
down_threshold value.  As a result, down_threshold lower than 11 is not
allowed even though values from 1 to 10 do work correctly too. The
comment ("cannot be lower than 11 otherwise freq will not fall") also
does not apply after removing the substraction.

For this reason, allow down_threshold to take any value from 1 to 99
and fix the related comment.

Fixes: 27ed3cd2ebf4 (cpufreq: conservative: Fix the logic in frequency decrease checking)
Signed-off-by: Tomasz Wilczyński &lt;twilczynski@naver.com&gt;
Acked-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Cc: 3.10+ &lt;stable@vger.kernel.org&gt; # 3.10+
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Signed-off-by: Willy Tarreau &lt;w@1wt.eu&gt;
</content>
</entry>
<entry>
<title>drivers: cpufreq: checks to avoid kernel crash in cpufreq_interactive</title>
<updated>2017-09-14T16:24:20+00:00</updated>
<author>
<name>gaurav jindal</name>
<email>gauravjindal1104@gmail.com</email>
</author>
<published>2017-09-07T18:37:43+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=3927d76c2da12e5353580ae22c664d4c5c6959a0'/>
<id>urn:sha1:3927d76c2da12e5353580ae22c664d4c5c6959a0</id>
<content type='text'>
In cpufreq_governor_interactive, driver throws warning with WARN_ON
for !tunables and event != CPUFREQ_GOV_POLICY_INIT.
In case when tunables is NULL for event other than
CPUFREQ_GOV_POLICY_INIT, kernel will crash as there is no safe check
available before accessing tunables. So to handle such case and avoid
the kernel crash, return -EINVAL if WARN_ON returns TRUE.

Change-Id: I7a3a22d58e3c8a315a1cc1d31143649dc8807dee
Signed-off-by: gaurav jindal &lt;gauravjindal1104@gmail.com&gt;
</content>
</entry>
<entry>
<title>cpufreq: Fix and clean up show_cpuinfo_cur_freq()</title>
<updated>2017-07-04T10:11:08+00:00</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rafael.j.wysocki@intel.com</email>
</author>
<published>2017-03-14T23:12:16+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=6cdea0ada2f6c9e39ba647a21ee4a134fc7dece0'/>
<id>urn:sha1:6cdea0ada2f6c9e39ba647a21ee4a134fc7dece0</id>
<content type='text'>
commit 9b4f603e7a9f4282aec451063ffbbb8bb410dcd9 upstream.

There is a missing newline in show_cpuinfo_cur_freq(), so add it,
but while at it clean that function up somewhat too.

Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Acked-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
Signed-off-by: Willy Tarreau &lt;w@1wt.eu&gt;
</content>
</entry>
<entry>
<title>drivers: cpufreq: fix maybe-uninitialized warning</title>
<updated>2017-05-23T17:21:31+00:00</updated>
<author>
<name>Nathan Chancellor</name>
<email>natechancellor@gmail.com</email>
</author>
<published>2017-01-27T01:44:04+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=d8a3e93d942e2ca0e5c8efb8796bb8763efe671f'/>
<id>urn:sha1:d8a3e93d942e2ca0e5c8efb8796bb8763efe671f</id>
<content type='text'>
drivers/cpufreq/cpufreq_stats.c: In function 'cpufreq_stat_notifier_policy':
drivers/cpufreq/cpufreq_stats.c:588:6: warning: 'ret' may be used uninitialized in this function [-Wmaybe-uninitialized]
  int ret, count = 0, i;
      ^~~

Signed-off-by: Nathan Chancellor &lt;natechancellor@gmail.com&gt;
</content>
</entry>
<entry>
<title> Get rid of __cpuinit</title>
<updated>2017-04-11T09:00:11+00:00</updated>
<author>
<name>Moyster</name>
<email>oysterized@gmail.com</email>
</author>
<published>2017-03-18T01:50:50+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=7c777e87cb30fc926920d677a845d651decaf997'/>
<id>urn:sha1:7c777e87cb30fc926920d677a845d651decaf997</id>
<content type='text'>
This commit is the result of

find . -name '*.c' | xargs sed -i 's/ __cpuinit / /g'
find . -name '*.c' | xargs sed -i 's/ __cpuexit / /g'
find . -name '*.c' | xargs sed -i 's/ __cpuinitdata / /g'
find . -name '*.c' | xargs sed -i 's/ __cpuinit$//g'
find ./arch/ -name '*.h' | xargs sed -i 's/ __cpuinit//g'
find . -name '*.c' | xargs sed -i 's/^__cpuinit //g'
find . -name '*.c' | xargs sed -i 's/^__cpuinitdata //g'
find . -name '*.c' | xargs sed -i 's/\*__cpuinit /\*/g'
find . -name '*.c' | xargs sed -i 's/ __cpuinitconst / /g'
find . -name '*.h' | xargs sed -i 's/ __cpuinit / /g'
find . -name '*.h' | xargs sed -i 's/ __cpuinitdata / /g'
git add .
git reset include/linux/init.h
git checkout -- include/linux/init.h

based off : https://github.com/jollaman999/jolla-kernel_bullhead/commit/bc15db84a622eed7d61d3ece579b577154d0ec29
</content>
</entry>
<entry>
<title>cpufreq: ondemand: Eliminate the deadband effect</title>
<updated>2016-09-13T11:23:00+00:00</updated>
<author>
<name>anarkia1976</name>
<email>stefano.villa1976@gmail.com</email>
</author>
<published>2015-10-25T18:56:57+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/android_kernel_m2note/commit/?id=3d9adbfd5ce6055248693b5d7611d823a71c3258'/>
<id>urn:sha1:3d9adbfd5ce6055248693b5d7611d823a71c3258</id>
<content type='text'>
    using the formula:
        Target frequency = C * load
        where C = policy-&gt;cpuinfo.max_freq / 100

    Though, in many cases, the minimum available frequency is pretty high and
    the above calculation introduces a dead band from load 0 to
    100 * policy-&gt;cpuinfo.min_freq / policy-&gt;cpuinfo.max_freq where the target
    frequency is always calculated to less than policy-&gt;cpuinfo.min_freq and
    the minimum frequency is selected.

    For example: on Intel i7-3770 @ 3.4GHz the policy-&gt;cpuinfo.min_freq = 1600000
    and the policy-&gt;cpuinfo.max_freq = 3400000 (without turbo). Thus, the CPU
    starts to scale up at a load above 47.
    On quad core 1500MHz Krait the policy-&gt;cpuinfo.min_freq = 384000
    and the policy-&gt;cpuinfo.max_freq = 1512000. Thus, the CPU starts to scale
    at load above 25.

    Change the calculation of target frequency to eliminate the above effect using
    the formula:

        Target frequency = A + B * load
        where A = policy-&gt;cpuinfo.min_freq and
              B = (policy-&gt;cpuinfo.max_freq - policy-&gt;cpuinfo-&gt;min_freq) / 100

    This will map load values 0 to 100 linearly to cpuinfo.min_freq to
    cpuinfo.max_freq.

    Also, use the CPUFREQ_RELATION_C in __cpufreq_driver_target to select the
    closest frequency in frequency_table. This is necessary to avoid selection
    of minimum frequency only when load equals to 0. It will also help for selection
    of frequencies using a more 'fair' criterion.

    Tables below show the difference in selected frequency for specific values
    of load without and with this patch. On Intel i7-3770 @ 3.40GHz:
        Without                 With
    Load        Target  Selected        Target  Selected
    0   0       1600000         1600000 1600000
    5   170050  1600000         1690050 1700000
    10  340100  1600000         1780100 1700000
    15  510150  1600000         1870150 1900000
    20  680200  1600000         1960200 2000000
    25  850250  1600000         2050250 2100000
    30  1020300 1600000         2140300 2100000
    35  1190350 1600000         2230350 2200000
    40  1360400 1600000         2320400 2400000
    45  1530450 1600000         2410450 2400000
    50  1700500 1900000         2500500 2500000
    55  1870550 1900000         2590550 2600000
    60  2040600 2100000         2680600 2600000
    65  2210650 2400000         2770650 2800000
    70  2380700 2400000         2860700 2800000
    75  2550750 2600000         2950750 3000000
    80  2720800 2800000         3040800 3000000
    85  2890850 2900000         3130850 3100000
    90  3060900 3100000         3220900 3300000
    95  3230950 3300000         3310950 3300000
    100 3401000 3401000         3401000 3401000

    On ARM quad core 1500MHz Krait:
        Without                 With
    Load        Target  Selected        Target  Selected
    0   0       384000          384000  384000
    5   75600   384000          440400  486000
    10  151200  384000          496800  486000
    15  226800  384000          553200  594000
    20  302400  384000          609600  594000
    25  378000  384000          666000  702000
    30  453600  486000          722400  702000
    35  529200  594000          778800  810000
    40  604800  702000          835200  810000
    45  680400  702000          891600  918000
    50  756000  810000          948000  918000
    55  831600  918000          1004400 1026000
    60  907200  918000          1060800 1026000
    65  982800  1026000         1117200 1134000
    70  1058400 1134000         1173600 1134000
    75  1134000 1134000         1230000 1242000
    80  1209600 1242000         1286400 1242000
    85  1285200 1350000         1342800 1350000
    90  1360800 1458000         1399200 1350000
    95  1436400 1458000         1455600 1458000
    100 1512000 1512000         1512000 1512000

    Tested on Intel i7-3770 CPU @ 3.40GHz and on ARM quad core 1500MHz Krait
    (Android smartphone).
    Benchmarks on Intel i7 shows a performance improvement on low and medium
    work loads with lower power consumption. Specifics:

    Phoronix Linux Kernel Compilation 3.1:
    Time: -0.40%, energy: -0.07%
    Phoronix Apache:
    Time: -4.98%, energy: -2.35%
    Phoronix FFMPEG:
    Time: -6.29%, energy: -4.02%

    Also, running mp3 decoding (very low load) shows no differences with and
    without this patch.

    Signed-off-by: Stratos Karafotis &lt;stratosk@semaphore.gr&gt;
    Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
</feed>
