<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/acpi/processor_idle.c, branch v2.6.25</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>cpuidle: fix 100% C0 statistics regression</title>
<updated>2008-03-26T04:58:19+00:00</updated>
<author>
<name>Venki Pallipadi</name>
<email>venkatesh.pallipadi@intel.com</email>
</author>
<published>2008-02-29T18:24:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8e92b6605da989c0aa8ff7e33306f36f0efd957c'/>
<id>8e92b6605da989c0aa8ff7e33306f36f0efd957c</id>
<content type='text'>
commit 9b12e18cdc1553de62d931e73443c806347cd974
'ACPI: cpuidle: Support C1 idle time accounting'
was implicated in a 100% C0 idle regression.
http://bugzilla.kernel.org/show_bug.cgi?id=10076

It pointed out a potential problem where the menu governor
may get confused by the C-state residency time from poll
idle or C1 idle, where this timing info is not accurate.
This inaccuracy is due to interrupts being handled
before we account for C-state exit.

Do not mark TIME_VALID for CO poll state.
Mark C1 time as valid only with the MWAIT (CSTATE_FFH) entry method.

This makes governors use the timing information only when it is correct and
eliminates any wrong policy decisions that may result from invalid timing
information.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 9b12e18cdc1553de62d931e73443c806347cd974
'ACPI: cpuidle: Support C1 idle time accounting'
was implicated in a 100% C0 idle regression.
http://bugzilla.kernel.org/show_bug.cgi?id=10076

It pointed out a potential problem where the menu governor
may get confused by the C-state residency time from poll
idle or C1 idle, where this timing info is not accurate.
This inaccuracy is due to interrupts being handled
before we account for C-state exit.

Do not mark TIME_VALID for CO poll state.
Mark C1 time as valid only with the MWAIT (CSTATE_FFH) entry method.

This makes governors use the timing information only when it is correct and
eliminates any wrong policy decisions that may result from invalid timing
information.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ACPI: fix mis-merge -- invoke acpi_unlazy_tlb() only on C3 entry</title>
<updated>2008-03-26T04:40:41+00:00</updated>
<author>
<name>Venki Pallipadi</name>
<email>venkatesh.pallipadi@intel.com</email>
</author>
<published>2008-03-24T21:24:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=996520c1fdd2948addb629be56c9febf2967e02b'/>
<id>996520c1fdd2948addb629be56c9febf2967e02b</id>
<content type='text'>
This original patch
http://ussg.iu.edu/hypermail/linux/kernel/0712.2/1451.html
was intending to add acpi_unlazy_tlb() to acpi_idle_enter_bm(),
which is used for C3 entry.

But it was merged incorrectly as commmit

bde6f5f59c2b2b48a7a849c129d5b48838fe77ee
'x86: voluntary leave_mm before entering ACPI C3'

so the call was instead added to acpi_idle_enter_simple()
(which is C2 entry routine), probably due to identical
context in that function.

Move the call back to acpi_idle_enter_bm().

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This original patch
http://ussg.iu.edu/hypermail/linux/kernel/0712.2/1451.html
was intending to add acpi_unlazy_tlb() to acpi_idle_enter_bm(),
which is used for C3 entry.

But it was merged incorrectly as commmit

bde6f5f59c2b2b48a7a849c129d5b48838fe77ee
'x86: voluntary leave_mm before entering ACPI C3'

so the call was instead added to acpi_idle_enter_simple()
(which is C2 entry routine), probably due to identical
context in that function.

Move the call back to acpi_idle_enter_bm().

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ACPI: lockdep warning on boot, 2.6.25-rc5</title>
<updated>2008-03-14T04:05:48+00:00</updated>
<author>
<name>Venki Pallipadi</name>
<email>venkatesh.pallipadi@intel.com</email>
</author>
<published>2008-03-14T00:18:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=71e93d15612c61c2e26a169567becf088e71b8ff'/>
<id>71e93d15612c61c2e26a169567becf088e71b8ff</id>
<content type='text'>
This avoids the harmless WARNING by lockdep in acpi_processor_idle().

The reason for WARNING is because at the depth of idle handling code,
some of the idle handlers disable interrupts, some times, while returning from
the idle handler. After return, acpi_processor_idle and few other routines
in the file did an unconditional local_irq_enable(). With LOCKDEP, enabling
irq when it is already enabled generates the below WARNING.

&gt; &gt; [    0.593038] ------------[ cut here ]------------
&gt; &gt; [    0.593267] WARNING: at kernel/lockdep.c:2035 trace_hardirqs_on+0xa0/0x115()
&gt; &gt; [    0.593596] Modules linked in:
&gt; &gt; [    0.593756] Pid: 0, comm: swapper Not tainted 2.6.25-rc5 #8
&gt; &gt; [    0.594017]
&gt; &gt; [    0.594017] Call Trace:
&gt; &gt; [    0.594216]  [&lt;ffffffff80231663&gt;] warn_on_slowpath+0x58/0x6b
&gt; &gt; [    0.594495]  [&lt;ffffffff80495966&gt;] ? _spin_unlock_irqrestore+0x38/0x47
&gt; &gt; [    0.594809]  [&lt;ffffffff80329a86&gt;] ? acpi_os_release_lock+0x9/0xb
&gt; &gt; [    0.595103]  [&lt;ffffffff80337840&gt;] ? acpi_set_register+0x161/0x173
&gt; &gt; [    0.595401]  [&lt;ffffffff8034c8d4&gt;] ? acpi_processor_idle+0x1de/0x546
&gt; &gt; [    0.595706]  [&lt;ffffffff8020a23b&gt;] ? default_idle+0x0/0x73
&gt; &gt; [    0.595970]  [&lt;ffffffff8024fc0e&gt;] trace_hardirqs_on+0xa0/0x115
&gt; &gt; [    0.596049]  [&lt;ffffffff8034c6f6&gt;] ? acpi_processor_idle+0x0/0x546
&gt; &gt; [    0.596346]  [&lt;ffffffff8034c8d4&gt;] acpi_processor_idle+0x1de/0x546
&gt; &gt; [    0.596642]  [&lt;ffffffff8020a23b&gt;] ? default_idle+0x0/0x73
&gt; &gt; [    0.596912]  [&lt;ffffffff8034c6f6&gt;] ? acpi_processor_idle+0x0/0x546
&gt; &gt; [    0.597209]  [&lt;ffffffff8020a23b&gt;] ? default_idle+0x0/0x73
&gt; &gt; [    0.597472]  [&lt;ffffffff8020a355&gt;] cpu_idle+0xa7/0xd1
&gt; &gt; [    0.597717]  [&lt;ffffffff80485fa1&gt;] rest_init+0x55/0x57
&gt; &gt; [    0.597957]  [&lt;ffffffff8062fb49&gt;] start_kernel+0x29d/0x2a8
&gt; &gt; [    0.598215]  [&lt;ffffffff8062f1da&gt;] _sinittext+0x1da/0x1e1
&gt; &gt; [    0.598464]
&gt; &gt; [    0.598546] ---[ end trace 778e504de7e3b1e3 ]---

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This avoids the harmless WARNING by lockdep in acpi_processor_idle().

The reason for WARNING is because at the depth of idle handling code,
some of the idle handlers disable interrupts, some times, while returning from
the idle handler. After return, acpi_processor_idle and few other routines
in the file did an unconditional local_irq_enable(). With LOCKDEP, enabling
irq when it is already enabled generates the below WARNING.

&gt; &gt; [    0.593038] ------------[ cut here ]------------
&gt; &gt; [    0.593267] WARNING: at kernel/lockdep.c:2035 trace_hardirqs_on+0xa0/0x115()
&gt; &gt; [    0.593596] Modules linked in:
&gt; &gt; [    0.593756] Pid: 0, comm: swapper Not tainted 2.6.25-rc5 #8
&gt; &gt; [    0.594017]
&gt; &gt; [    0.594017] Call Trace:
&gt; &gt; [    0.594216]  [&lt;ffffffff80231663&gt;] warn_on_slowpath+0x58/0x6b
&gt; &gt; [    0.594495]  [&lt;ffffffff80495966&gt;] ? _spin_unlock_irqrestore+0x38/0x47
&gt; &gt; [    0.594809]  [&lt;ffffffff80329a86&gt;] ? acpi_os_release_lock+0x9/0xb
&gt; &gt; [    0.595103]  [&lt;ffffffff80337840&gt;] ? acpi_set_register+0x161/0x173
&gt; &gt; [    0.595401]  [&lt;ffffffff8034c8d4&gt;] ? acpi_processor_idle+0x1de/0x546
&gt; &gt; [    0.595706]  [&lt;ffffffff8020a23b&gt;] ? default_idle+0x0/0x73
&gt; &gt; [    0.595970]  [&lt;ffffffff8024fc0e&gt;] trace_hardirqs_on+0xa0/0x115
&gt; &gt; [    0.596049]  [&lt;ffffffff8034c6f6&gt;] ? acpi_processor_idle+0x0/0x546
&gt; &gt; [    0.596346]  [&lt;ffffffff8034c8d4&gt;] acpi_processor_idle+0x1de/0x546
&gt; &gt; [    0.596642]  [&lt;ffffffff8020a23b&gt;] ? default_idle+0x0/0x73
&gt; &gt; [    0.596912]  [&lt;ffffffff8034c6f6&gt;] ? acpi_processor_idle+0x0/0x546
&gt; &gt; [    0.597209]  [&lt;ffffffff8020a23b&gt;] ? default_idle+0x0/0x73
&gt; &gt; [    0.597472]  [&lt;ffffffff8020a355&gt;] cpu_idle+0xa7/0xd1
&gt; &gt; [    0.597717]  [&lt;ffffffff80485fa1&gt;] rest_init+0x55/0x57
&gt; &gt; [    0.597957]  [&lt;ffffffff8062fb49&gt;] start_kernel+0x29d/0x2a8
&gt; &gt; [    0.598215]  [&lt;ffffffff8062f1da&gt;] _sinittext+0x1da/0x1e1
&gt; &gt; [    0.598464]
&gt; &gt; [    0.598546] ---[ end trace 778e504de7e3b1e3 ]---

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ACPI: TSC breaks atkbd suspend</title>
<updated>2008-02-20T01:05:06+00:00</updated>
<author>
<name>Pavel Machek</name>
<email>pavel@ucw.cz</email>
</author>
<published>2008-02-19T10:00:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6133116849219f4e657ead39c7ac3922583f5a6e'/>
<id>6133116849219f4e657ead39c7ac3922583f5a6e</id>
<content type='text'>
TSC is used even on machines when CONFIG_X86_TSC is not set (X86_TSC
means _require_ TSC), but it is not properly disabled when it is
unusable, because ACPI code understood the config switch as "may use
TSC".

This actually fixes suspend problems on my x60.

Signed-off-by: Pavel Machek &lt;pavel@suse.cz&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
TSC is used even on machines when CONFIG_X86_TSC is not set (X86_TSC
means _require_ TSC), but it is not properly disabled when it is
unusable, because ACPI code understood the config switch as "may use
TSC".

This actually fixes suspend problems on my x60.

Signed-off-by: Pavel Machek &lt;pavel@suse.cz&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branches 'release', 'dmi', 'idle' and 'misc' into release</title>
<updated>2008-02-14T07:44:28+00:00</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2008-02-14T07:44:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f60d63f642d824914677fb40330671117dc39c3b'/>
<id>f60d63f642d824914677fb40330671117dc39c3b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ACPI, cpuidle: Clarify C-state description in sysfs</title>
<updated>2008-02-14T05:09:55+00:00</updated>
<author>
<name>Venkatesh Pallipadi</name>
<email>venkatesh.pallipadi@intel.com</email>
</author>
<published>2008-02-12T01:46:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=4fcb2fcd4d0678b8ae103d257dcb28074cbfc7fa'/>
<id>4fcb2fcd4d0678b8ae103d257dcb28074cbfc7fa</id>
<content type='text'>
Add a new sysfs entry under cpuidle states. desc - can be used by driver to
communicate to userspace any specific information about the state.
This helps in identifying the exact hardware C-states behind the ACPI C-state
definition.

Idea is to export this through powertop, which will help to map the C-state
reported by powertop to actual hardware C-state.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add a new sysfs entry under cpuidle states. desc - can be used by driver to
communicate to userspace any specific information about the state.
This helps in identifying the exact hardware C-states behind the ACPI C-state
definition.

Idea is to export this through powertop, which will help to map the C-state
reported by powertop to actual hardware C-state.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ACPI: fix suspend regression due to idle update</title>
<updated>2008-02-14T04:59:31+00:00</updated>
<author>
<name>Venkatesh Pallipadi</name>
<email>venkatesh.pallipadi@intel.com</email>
</author>
<published>2008-02-11T23:20:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b077fbada161479d9a32a7730d2822d5e737b306'/>
<id>b077fbada161479d9a32a7730d2822d5e737b306</id>
<content type='text'>
Earlier patch (bc71bec91f9875ef825d12104acf3bf4ca215fa4) broke
suspend resume on many laptops. The problem was reported by
Carlos R. Mafra and Calvin Walton, who bisected the issue to above patch.

The problem was because, C2 and C3 code were calling acpi_idle_enter_c1
directly, with C2 or C3 as state parameter, while suspend/resume was in
progress. The patch bc71bec started making use of that state information,
assuming that it would always be referring to C1 state. This caused the
problem with suspend-resume as we ended up using C2/C3 state indirectly.

Fix this by adding acpi_idle_suspend check in enter_c1.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Earlier patch (bc71bec91f9875ef825d12104acf3bf4ca215fa4) broke
suspend resume on many laptops. The problem was reported by
Carlos R. Mafra and Calvin Walton, who bisected the issue to above patch.

The problem was because, C2 and C3 code were calling acpi_idle_enter_c1
directly, with C2 or C3 as state parameter, while suspend/resume was in
progress. The patch bc71bec started making use of that state information,
assuming that it would always be referring to C1 state. This caused the
problem with suspend-resume as we ended up using C2/C3 state indirectly.

Fix this by adding acpi_idle_suspend check in enter_c1.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branches 'release', 'cpuidle-2.6.25' and 'idle' into release</title>
<updated>2008-02-07T08:11:05+00:00</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2008-02-07T08:11:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=acf63867ae06ef95eea7bf445ded2f05528a81b1'/>
<id>acf63867ae06ef95eea7bf445ded2f05528a81b1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>cpuidle: Add a poll_idle method</title>
<updated>2008-02-07T07:20:15+00:00</updated>
<author>
<name>venkatesh.pallipadi@intel.com</name>
<email>venkatesh.pallipadi@intel.com</email>
</author>
<published>2008-02-01T01:35:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9a0b841586c3c6c846effdbe75885c2ebc0031b0'/>
<id>9a0b841586c3c6c846effdbe75885c2ebc0031b0</id>
<content type='text'>
Add a default poll idle state with 0 latency. Provides an option to users
to use poll_idle by using 0 as the latency requirement.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add a default poll idle state with 0 latency. Provides an option to users
to use poll_idle by using 0 as the latency requirement.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ACPI: cpuidle: Support C1 idle time accounting</title>
<updated>2008-02-07T07:14:16+00:00</updated>
<author>
<name>venkatesh.pallipadi@intel.com</name>
<email>venkatesh.pallipadi@intel.com</email>
</author>
<published>2008-02-01T01:35:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9b12e18cdc1553de62d931e73443c806347cd974'/>
<id>9b12e18cdc1553de62d931e73443c806347cd974</id>
<content type='text'>
Show C1 idle time in /sysfs cpuidle interface. C1 idle time may not
be entirely accurate in all cases. It includes the time spent
in the interrupt handler after wakeup with "hlt" based C1. But, it will
be accurate with "mwait" based C1.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Show C1 idle time in /sysfs cpuidle interface. C1 idle time may not
be entirely accurate in all cases. It includes the time spent
in the interrupt handler after wakeup with "hlt" based C1. But, it will
be accurate with "mwait" based C1.

Signed-off-by: Venkatesh Pallipadi &lt;venkatesh.pallipadi@intel.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
