<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/cpufreq, branch v2.6.19</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>[PATCH] Fix CPU_FREQ_GOV_ONDEMAND=y compile error</title>
<updated>2006-11-21T22:07:15+00:00</updated>
<author>
<name>Dave Jones</name>
<email>davej@redhat.com</email>
</author>
<published>2006-11-21T21:58:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6af6e1efb161ffe36e718b1fd58385710879af7c'/>
<id>6af6e1efb161ffe36e718b1fd58385710879af7c</id>
<content type='text'>
The ONDEMAND governor needs FREQ_TABLE

Signed-off-by: Mattia Dongili &lt;malattia@linux.it&gt;
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The ONDEMAND governor needs FREQ_TABLE

Signed-off-by: Mattia Dongili &lt;malattia@linux.it&gt;
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add "pure_initcall" for static variable initialization</title>
<updated>2006-11-20T19:47:18+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@woody.osdl.org</email>
</author>
<published>2006-11-20T19:47:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b3438f8266cb1f5010085ac47d7ad6a36a212164'/>
<id>b3438f8266cb1f5010085ac47d7ad6a36a212164</id>
<content type='text'>
This is a quick hack to overcome the fact that SRCU currently does not
allow static initializers, and we need to sometimes initialize those
things before any other initializers (even "core" ones) can do so.

Currently we don't allow this at all for modules, and the only user that
needs is right now is cpufreq. As reported by Thomas Gleixner:

   "Commit b4dfdbb3c707474a2254c5b4d7e62be31a4b7da9 ("[PATCH] cpufreq:
    make the transition_notifier chain use SRCU breaks cpu frequency
    notification users, which register the callback &gt; on core_init
    level."

Cc: Thomas Gleixner &lt;tglx@timesys.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Arjan van de Ven &lt;arjan@infradead.org&gt;
Cc: Andrew Morton &lt;akpm@osdl.org&gt;,
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a quick hack to overcome the fact that SRCU currently does not
allow static initializers, and we need to sometimes initialize those
things before any other initializers (even "core" ones) can do so.

Currently we don't allow this at all for modules, and the only user that
needs is right now is cpufreq. As reported by Thomas Gleixner:

   "Commit b4dfdbb3c707474a2254c5b4d7e62be31a4b7da9 ("[PATCH] cpufreq:
    make the transition_notifier chain use SRCU breaks cpu frequency
    notification users, which register the callback &gt; on core_init
    level."

Cc: Thomas Gleixner &lt;tglx@timesys.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Arjan van de Ven &lt;arjan@infradead.org&gt;
Cc: Andrew Morton &lt;akpm@osdl.org&gt;,
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[PATCH] cpufreq: make the transition_notifier chain use SRCU</title>
<updated>2006-10-04T14:55:30+00:00</updated>
<author>
<name>Alan Stern</name>
<email>stern@rowland.harvard.edu</email>
</author>
<published>2006-10-04T09:17:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b4dfdbb3c707474a2254c5b4d7e62be31a4b7da9'/>
<id>b4dfdbb3c707474a2254c5b4d7e62be31a4b7da9</id>
<content type='text'>
This patch (as762) changes the cpufreq_transition_notifier_list from a
blocking_notifier_head to an srcu_notifier_head.  This will prevent errors
caused attempting to call down_read() to access the notifier chain at a
time when interrupts must remain disabled, during system suspend.

It's not clear to me whether this is really necessary; perhaps the chain
could be made into an atomic_notifier.  However a couple of the callout
routines do use blocking operations, so this approach seems safer.

The head of the notifier chain needs to be initialized before use; this is
done by an __init routine at core_initcall time.  If this turns out not to
be a good choice, it can easily be changed.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Cc: "Paul E. McKenney" &lt;paulmck@us.ibm.com&gt;
Cc: Jesse Brandeburg &lt;jesse.brandeburg@gmail.com&gt;
Cc: Dave Jones &lt;davej@codemonkey.org.uk&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch (as762) changes the cpufreq_transition_notifier_list from a
blocking_notifier_head to an srcu_notifier_head.  This will prevent errors
caused attempting to call down_read() to access the notifier chain at a
time when interrupts must remain disabled, during system suspend.

It's not clear to me whether this is really necessary; perhaps the chain
could be made into an atomic_notifier.  However a couple of the callout
routines do use blocking operations, so this approach seems safer.

The head of the notifier chain needs to be initialized before use; this is
done by an __init routine at core_initcall time.  If this turns out not to
be a good choice, it can easily be changed.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Cc: "Paul E. McKenney" &lt;paulmck@us.ibm.com&gt;
Cc: Jesse Brandeburg &lt;jesse.brandeburg@gmail.com&gt;
Cc: Dave Jones &lt;davej@codemonkey.org.uk&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[CPUFREQ] Fix cut-n-paste bug in suspend printk</title>
<updated>2006-09-27T03:02:34+00:00</updated>
<author>
<name>Dave Jones</name>
<email>davej@redhat.com</email>
</author>
<published>2006-09-27T03:02:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0e37b159aa7427bf311487e3ea03d8aa5ff5956e'/>
<id>0e37b159aa7427bf311487e3ea03d8aa5ff5956e</id>
<content type='text'>
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[CPUFREQ] Fix some more CPU hotplug locking.</title>
<updated>2006-09-22T23:15:23+00:00</updated>
<author>
<name>Dave Jones</name>
<email>davej@redhat.com</email>
</author>
<published>2006-09-22T23:15:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ddad65df0048e210c93640b59b3bad12701febb6'/>
<id>ddad65df0048e210c93640b59b3bad12701febb6</id>
<content type='text'>
Lukewarm IQ detected in hotplug locking
BUG: warning at kernel/cpu.c:38/lock_cpu_hotplug()
[&lt;b0134a42&gt;] lock_cpu_hotplug+0x42/0x65
[&lt;b02f8af1&gt;] cpufreq_update_policy+0x25/0xad
[&lt;b0358756&gt;] kprobe_flush_task+0x18/0x40
[&lt;b0355aab&gt;] schedule+0x63f/0x68b
[&lt;b01377c2&gt;] __link_module+0x0/0x1f
[&lt;b0119e7d&gt;] __cond_resched+0x16/0x34
[&lt;b03560bf&gt;] cond_resched+0x26/0x31
[&lt;b0355b0e&gt;] wait_for_completion+0x17/0xb1
[&lt;f965c547&gt;] cpufreq_stat_cpu_callback+0x13/0x20 [cpufreq_stats]
[&lt;f9670074&gt;] cpufreq_stats_init+0x74/0x8b [cpufreq_stats]
[&lt;b0137872&gt;] sys_init_module+0x91/0x174
[&lt;b0102c81&gt;] sysenter_past_esp+0x56/0x79

As there are other places that call cpufreq_update_policy without
the hotplug lock, it seems better to keep the hotplug locking
at the lower level for the time being until this is revamped.

Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Lukewarm IQ detected in hotplug locking
BUG: warning at kernel/cpu.c:38/lock_cpu_hotplug()
[&lt;b0134a42&gt;] lock_cpu_hotplug+0x42/0x65
[&lt;b02f8af1&gt;] cpufreq_update_policy+0x25/0xad
[&lt;b0358756&gt;] kprobe_flush_task+0x18/0x40
[&lt;b0355aab&gt;] schedule+0x63f/0x68b
[&lt;b01377c2&gt;] __link_module+0x0/0x1f
[&lt;b0119e7d&gt;] __cond_resched+0x16/0x34
[&lt;b03560bf&gt;] cond_resched+0x26/0x31
[&lt;b0355b0e&gt;] wait_for_completion+0x17/0xb1
[&lt;f965c547&gt;] cpufreq_stat_cpu_callback+0x13/0x20 [cpufreq_stats]
[&lt;f9670074&gt;] cpufreq_stats_init+0x74/0x8b [cpufreq_stats]
[&lt;b0137872&gt;] sys_init_module+0x91/0x174
[&lt;b0102c81&gt;] sysenter_past_esp+0x56/0x79

As there are other places that call cpufreq_update_policy without
the hotplug lock, it seems better to keep the hotplug locking
at the lower level for the time being until this is revamped.

Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[CPUFREQ] Fix sparse warning in ondemand</title>
<updated>2006-09-05T21:15:47+00:00</updated>
<author>
<name>Dave Jones</name>
<email>davej@redhat.com</email>
</author>
<published>2006-09-05T21:15:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3906f4edeef976c081c4e7bd92164d2f59c325ae'/>
<id>3906f4edeef976c081c4e7bd92164d2f59c325ae</id>
<content type='text'>
drivers/cpufreq/cpufreq_ondemand.c:323:2: warning: Using plain integer as NULL pointer

Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
drivers/cpufreq/cpufreq_ondemand.c:323:2: warning: Using plain integer as NULL pointer

Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[CPUFREQ] make drivers/cpufreq/cpufreq_ondemand.c:powersave_bias_target() static</title>
<updated>2006-08-14T05:18:54+00:00</updated>
<author>
<name>Adrian Bunk</name>
<email>bunk@stusta.de</email>
</author>
<published>2006-08-13T21:00:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b5ecf60fe6b18de0bc59d336d444835d4ef835ed'/>
<id>b5ecf60fe6b18de0bc59d336d444835d4ef835ed</id>
<content type='text'>
This patch makes the needlessly global powersave_bias_target() static.

Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch makes the needlessly global powersave_bias_target() static.

Signed-off-by: Adrian Bunk &lt;bunk@stusta.de&gt;
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[CPUFREQ][2/2] ondemand: updated add powersave_bias tunable</title>
<updated>2006-08-11T21:59:57+00:00</updated>
<author>
<name>Alexey Starikovskiy</name>
<email>alexey_y_starikovskiy@linux.intel.com</email>
</author>
<published>2006-07-31T18:28:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=05ca0350e8caa91a5ec9961c585c98005b6934ea'/>
<id>05ca0350e8caa91a5ec9961c585c98005b6934ea</id>
<content type='text'>
ondemand selects the minimum frequency that can retire
a workload with negligible idle time -- ideally resulting in the highest
performance/power efficiency with negligible performance impact.

But on some systems and some workloads, this algorithm
is more performance biased than necessary, and
de-tuning it a bit to allow some performance impact
can save measurable power.

This patch adds a "powersave_bias" tunable to ondemand
to allow it to reduce its target frequency by a specified percent.

By default, the powersave_bias is 0 and has no effect.
powersave_bias is in units of 0.1%, so it has an effective range
of 1 through 1000, resulting in 0.1% to 100% impact.

In practice, users will not be able to detect a difference between
0.1% increments, but 1.0% increments turned out to be too large.
Also, the max value of 1000 (100%) would simply peg the system
in its deepest power saving P-state, unless the processor really has
a hardware P-state at 0Hz:-)

For example, If ondemand requests 2.0GHz based on utilization,
and powersave_bias=100, this code will knock 10% off the target
and seek  a target of 1.8GHz instead of 2.0GHz until the
next sampling.  If 1.8 is an exact match with an hardware frequency
we use it, otherwise we average our time between the frequency
next higher than 1.8 and next lower than 1.8.

Note that a user or administrative program can change powersave_bias
at run-time depending on how they expect the system to be used.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi at intel.com&gt;
Signed-off-by: Alexey Starikovskiy &lt;alexey.y.starikovskiy at intel.com&gt;
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ondemand selects the minimum frequency that can retire
a workload with negligible idle time -- ideally resulting in the highest
performance/power efficiency with negligible performance impact.

But on some systems and some workloads, this algorithm
is more performance biased than necessary, and
de-tuning it a bit to allow some performance impact
can save measurable power.

This patch adds a "powersave_bias" tunable to ondemand
to allow it to reduce its target frequency by a specified percent.

By default, the powersave_bias is 0 and has no effect.
powersave_bias is in units of 0.1%, so it has an effective range
of 1 through 1000, resulting in 0.1% to 100% impact.

In practice, users will not be able to detect a difference between
0.1% increments, but 1.0% increments turned out to be too large.
Also, the max value of 1000 (100%) would simply peg the system
in its deepest power saving P-state, unless the processor really has
a hardware P-state at 0Hz:-)

For example, If ondemand requests 2.0GHz based on utilization,
and powersave_bias=100, this code will knock 10% off the target
and seek  a target of 1.8GHz instead of 2.0GHz until the
next sampling.  If 1.8 is an exact match with an hardware frequency
we use it, otherwise we average our time between the frequency
next higher than 1.8 and next lower than 1.8.

Note that a user or administrative program can change powersave_bias
at run-time depending on how they expect the system to be used.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi at intel.com&gt;
Signed-off-by: Alexey Starikovskiy &lt;alexey.y.starikovskiy at intel.com&gt;
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[CPUFREQ][1/2] ondemand: updated tune for hardware coordination</title>
<updated>2006-08-11T21:59:56+00:00</updated>
<author>
<name>Alexey Starikovskiy</name>
<email>alexey_y_starikovskiy@linux.intel.com</email>
</author>
<published>2006-07-31T18:25:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1ce28d6b19112a7c76af8e971e2de3109d19a943'/>
<id>1ce28d6b19112a7c76af8e971e2de3109d19a943</id>
<content type='text'>
Try to make dbs_check_cpu() call on all CPUs at the same jiffy.
This will help when multiple cores share P-states via Hardware Coordination.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi at intel.com&gt;
Signed-off-by: Alexey Starikovskiy &lt;alexey.y.starikovskiy at intel.com&gt;
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Try to make dbs_check_cpu() call on all CPUs at the same jiffy.
This will help when multiple cores share P-states via Hardware Coordination.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi at intel.com&gt;
Signed-off-by: Alexey Starikovskiy &lt;alexey.y.starikovskiy at intel.com&gt;
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[CPUFREQ] Fix typo.</title>
<updated>2006-08-11T21:59:28+00:00</updated>
<author>
<name>Dave Jones</name>
<email>davej@redhat.com</email>
</author>
<published>2006-08-11T21:59:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cd878479792cc1e4bc9d62ed0ef2c4454743848c'/>
<id>cd878479792cc1e4bc9d62ed0ef2c4454743848c</id>
<content type='text'>
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
