<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/cpufreq, branch v3.9.5</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/cpufreq?h=v3.9.5</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/cpufreq?h=v3.9.5'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2013-05-19T18:38:42Z</updated>
<entry>
<title>cpufreq / intel_pstate: fix ffmpeg regression</title>
<updated>2013-05-19T18:38:42Z</updated>
<author>
<name>Dirk Brandewie</name>
<email>dirk.j.brandewie@intel.com</email>
</author>
<published>2013-05-07T15:20:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b540137a810d0267051c538e68d4348e43a1edf3'/>
<id>urn:sha1:b540137a810d0267051c538e68d4348e43a1edf3</id>
<content type='text'>
commit ca182aee389f8026401510f4c63841cb02c820e8 upstream.

The ffmpeg benchmark in the phoronix test suite has threads on
multiple cores that rely on the progress on of threads on other cores
and ping pong back and forth fast enough to make the core appear less
busy than it "should" be.  If the core has been at minimum p-state for
a while bump the pstate up to kick the core to see if it is in this
ping pong state.  If the core is truly idle the p-state will be
reduced at the next sample time.  If the core makes more progress it
will send more work to the thread bringing both threads out of the
ping pong scenario and the p-state will be selected normally.

This fixes a performance regression of approximately 30%

Signed-off-by: Dirk Brandewie &lt;dirk.j.brandewie@intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>cpufreq / intel_pstate: use lowest requested max performance</title>
<updated>2013-05-19T18:38:42Z</updated>
<author>
<name>Dirk Brandewie</name>
<email>dirk.j.brandewie@intel.com</email>
</author>
<published>2013-05-07T15:20:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2aa491f8bdcac932006548b1a2b655b29c942e08'/>
<id>urn:sha1:2aa491f8bdcac932006548b1a2b655b29c942e08</id>
<content type='text'>
commit d8f469e9cff3bc4a6317d923e9506be046aa7bdc upstream.

There are two ways that the maximum p-state can be clamped, via a
policy change and via the sysfs file.

The acpi-thermal driver adjusts the p-state policy in response to
thermal events.  These changes override the users settings at the
moment.

Use the lowest of the two requested values this ensures that we will
not exceed the requested pstate from either mechanism.

Reported-by: Srinivas Pandruvada &lt;srinivas.pandruvada@linux.intel.com&gt;
Signed-off-by: Dirk Brandewie &lt;dirk.j.brandewie@intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>cpufreq / intel_pstate: remove idle time and duration from sample and calculations</title>
<updated>2013-05-19T18:38:42Z</updated>
<author>
<name>Dirk Brandewie</name>
<email>dirk.j.brandewie@intel.com</email>
</author>
<published>2013-05-07T15:20:25Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=5aacc8bcf0b23e20cbb205ac6fdc3ce797e1cae2'/>
<id>urn:sha1:5aacc8bcf0b23e20cbb205ac6fdc3ce797e1cae2</id>
<content type='text'>
commit 1abc4b20b85b42e8573957e54b193385cf48b0d6 upstream.

Idle time is taken into account in the APERF/MPERF ratio calculation
there is no reason for the driver to track it seperately.  This
reduces the work in the driver and makes the code more readable.

Removal of the tracking of sample duration removes the possibility of
the divide by zero exception when the duration is sub 1us

References: https://bugzilla.kernel.org/show_bug.cgi?id=56691
Reported-by: Mike Lothian &lt;mike@fireburn.co.uk&gt;
Signed-off-by: Dirk Brandewie &lt;dirk.j.brandewie@intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>cpufreq / intel_pstate: Set timer timeout correctly</title>
<updated>2013-04-08T20:09:23Z</updated>
<author>
<name>Dirk Brandewie</name>
<email>dirk.brandewie@gmail.com</email>
</author>
<published>2013-04-04T17:35:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ec376a2ab97ec3be52ca282dc6ac102e805d1005'/>
<id>urn:sha1:ec376a2ab97ec3be52ca282dc6ac102e805d1005</id>
<content type='text'>
The current calculation of the delay time is wrong and a cut and
paste error from a previous experimental driver.  This can result in
the timeout being set to jiffies + 1 which setup the driver to race
with itself if the APIC timer interrupt happens at just the right
time.

References: https://bugzilla.redhat.com/show_bug.cgi?id=920289
Reported-by: Adam Williamson &lt;awilliam@redhat.com&gt;
Reported-and-tested-by: Parag Warudkar &lt;parag.lkml@gmail.com&gt;
Signed-off-by: Dirk Brandewie &lt;dirk.j.brandewie@intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>cpufreq: Correct header guards typo</title>
<updated>2013-04-02T13:14:29Z</updated>
<author>
<name>Borislav Petkov</name>
<email>bp@suse.de</email>
</author>
<published>2013-04-02T12:26:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=beb0ff390e208e71668a1389e3db02631a88cff5'/>
<id>urn:sha1:beb0ff390e208e71668a1389e3db02631a88cff5</id>
<content type='text'>
It should be "governor".

Signed-off-by: Borislav Petkov &lt;bp@suse.de&gt;
Acked-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>cpufreq: check OF node /cpus presence before dereferencing it</title>
<updated>2013-04-01T23:36:08Z</updated>
<author>
<name>Paolo Pisati</name>
<email>paolo.pisati@canonical.com</email>
</author>
<published>2013-03-28T09:24:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f5c3ef21db149ba573a3f079df287f3d8b05ee13'/>
<id>urn:sha1:f5c3ef21db149ba573a3f079df287f3d8b05ee13</id>
<content type='text'>
Check for the presence of the '/cpus' OF node before dereferencing it
blindly:

[    4.181793] Unable to handle kernel NULL pointer dereference at virtual address 0000001c
[    4.181793] pgd = c0004000
[    4.181823] [0000001c] *pgd=00000000
[    4.181823] Internal error: Oops: 5 [#1] SMP ARM
[    4.181823] Modules linked in:
[    4.181823] CPU: 1    Tainted: G        W     (3.8.0-15-generic #25~hbankD)
[    4.181854] PC is at of_get_next_child+0x64/0x70
[    4.181854] LR is at of_get_next_child+0x24/0x70
[    4.181854] pc : [&lt;c04fda18&gt;]    lr : [&lt;c04fd9d8&gt;]    psr: 60000113
[    4.181854] sp : ed891ec0  ip : ed891ec0  fp : ed891ed4
[    4.181884] r10: c04dafd0  r9 : c098690c  r8 : c0936208
[    4.181884] r7 : ed890000  r6 : c0a63d00  r5 : 00000000  r4 : 00000000
[    4.181884] r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : c0b2acc8
[    4.181884] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[    4.181884] Control: 10c5387d  Table: adcb804a  DAC: 00000015
[    4.181915] Process swapper/0 (pid: 1, stack limit = 0xed890238)
[    4.181915] Stack: (0xed891ec0 to 0xed892000)
[    4.181915] 1ec0: c09b7b70 00000007 ed891efc ed891ed8 c04daff4 c04fd9c0 00000000 c09b7b70
[    4.181915] 1ee0: 00000007 c0a63d00 ed890000 c0936208 ed891f54 ed891f00 c00088e0 c04dafdc
[    4.181945] 1f00: ed891f54 ed891f10 c006e940 00000000 00000000 00000007 00000007 c08a4914
[    4.181945] 1f20: 00000000 c07dbd30 c0a63d00 c09b7b70 00000007 c0a63d00 000000bc c0936208
[    4.181945] 1f40: c098690c c0986914 ed891f94 ed891f58 c0936a40 c00087bc 00000007 00000007
[    4.181976] 1f60: c0936208 be8bda20 b6eea010 c0a63d00 c064547c 00000000 00000000 00000000
[    4.181976] 1f80: 00000000 00000000 ed891fac ed891f98 c0645498 c09368c8 00000000 00000000
[    4.181976] 1fa0: 00000000 ed891fb0 c0014658 c0645488 00000000 00000000 00000000 00000000
[    4.182006] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[    4.182006] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[    4.182037] [&lt;c04fda18&gt;] (of_get_next_child+0x64/0x70) from [&lt;c04daff4&gt;] (cpu0_cpufreq_driver_init+0x24/0x284)
[    4.182067] [&lt;c04daff4&gt;] (cpu0_cpufreq_driver_init+0x24/0x284) from [&lt;c00088e0&gt;] (do_one_initcall+0x130/0x1b0)
[    4.182067] [&lt;c00088e0&gt;] (do_one_initcall+0x130/0x1b0) from [&lt;c0936a40&gt;] (kernel_init_freeable+0x184/0x24c)
[    4.182098] [&lt;c0936a40&gt;] (kernel_init_freeable+0x184/0x24c) from [&lt;c0645498&gt;] (kernel_init+0x1c/0xf4)
[    4.182128] [&lt;c0645498&gt;] (kernel_init+0x1c/0xf4) from [&lt;c0014658&gt;] (ret_from_fork+0x14/0x20)
[    4.182128] Code: f57ff04f e320f004 e89da830 e89da830 (e595001c)
[    4.182128] ---[ end trace 634903a22e8609cb ]---
[    4.182189] Kernel panic - not syncing: Attempted to kill init!  exitcode=0x0000000b
[    4.182189]
[    4.642395] CPU0: stopping

[rjw: Changelog]
Signed-off-by: Paolo Pisati &lt;paolo.pisati@canonical.com&gt;
Acked-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>cpufreq: acpi-cpufreq: Don't set policy-&gt;related_cpus from .init()</title>
<updated>2013-03-25T14:13:32Z</updated>
<author>
<name>Viresh Kumar</name>
<email>viresh.kumar@linaro.org</email>
</author>
<published>2013-03-24T15:58:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=aa77a52764a92216b61a6c8079b5c01937c046cd'/>
<id>urn:sha1:aa77a52764a92216b61a6c8079b5c01937c046cd</id>
<content type='text'>
With the addition of following patch:

fcf8058 cpufreq: Simplify cpufreq_add_dev()

cpufreq driver's .init() routine must initialize policy-&gt;cpus with
mask of all possible CPUs (Online + Offline) that share the clock.
Then the core would copy this mask onto policy-&gt;related_cpus and will
reset policy-&gt;cpus to carry only online cpus.

acpi-cpufreq driver wasn't updated with this assumption and so
sometimes when we try to hot[un]plug CPUs at run time, sysfs
directories get corrupted.

This patch fixes acpi-cpufreq driver against this corruption.

Reported-and-tested-by: Maciej Rutecki &lt;maciej.rutecki@gmail.com&gt;
Tested-by: Borislav Petkov &lt;bp@suse.de&gt;
Signed-off-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>cpufreq: stats: do cpufreq_cpu_put() corresponding to cpufreq_cpu_get()</title>
<updated>2013-03-25T14:13:16Z</updated>
<author>
<name>viresh kumar</name>
<email>viresh.kumar@linaro.org</email>
</author>
<published>2013-03-22T10:13:52Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=187da1d97f3a949b967274d7ee2f95d3a4f39251'/>
<id>urn:sha1:187da1d97f3a949b967274d7ee2f95d3a4f39251</id>
<content type='text'>
In cpufreq_stats_free_sysfs() we aren't balancing calls to
cpufreq_cpu_get() with cpufreq_cpu_put(). This will never let us have
ref count to policy-&gt;kobj as zero.

We will get a hang if somehow cpufreq_driver_unregister() is called.
And that can happen when we compile our driver as module and
insmod/rmmod it.

Signed-off-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Acked-by: Amit Kucheria &lt;amit.kucheria@linaro.org&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>intel-pstate: Use #defines instead of hard-coded values.</title>
<updated>2013-03-25T14:13:07Z</updated>
<author>
<name>Konrad Rzeszutek Wilk</name>
<email>konrad.wilk@oracle.com</email>
</author>
<published>2013-03-20T14:21:10Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=05e99c8cf9d4e53ef6e016815db40a89a6156529'/>
<id>urn:sha1:05e99c8cf9d4e53ef6e016815db40a89a6156529</id>
<content type='text'>
They are defined in coreboot (MSR_PLATFORM) and the other
one is already defined in msr-index.h.

Let's use those.

Signed-off-by: Konrad Rzeszutek Wilk &lt;konrad.wilk@oracle.com&gt;
Acked-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Acked-by: Dirk Brandewie &lt;dirk.j.brandewie@intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
<entry>
<title>cpufreq / intel_pstate: Fix calculation of current frequency</title>
<updated>2013-03-25T14:12:59Z</updated>
<author>
<name>Dirk Brandewie</name>
<email>dirk.brandewie@gmail.com</email>
</author>
<published>2013-03-23T23:54:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e6f3eb29be471c4b536a91daab76d4aeda72a261'/>
<id>urn:sha1:e6f3eb29be471c4b536a91daab76d4aeda72a261</id>
<content type='text'>
Use the correct pstate value to calculate the effective frequency.

References: https://bugzilla.redhat.com/show_bug.cgi?id=923942
Reported-by: Satish Balay &lt;balay@fastmail.fm&gt;
Signed-off-by: Dirk Brandewie &lt;dirk.j.brandewie@intel.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rafael.j.wysocki@intel.com&gt;
</content>
</entry>
</feed>
