<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/acpi/processor_idle.c, branch v3.5</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v3.5</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v3.5'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2012-06-27T18:18:53Z</updated>
<entry>
<title>PM / ACPI: Fix suspend/resume regression caused by cpuidle cleanup.</title>
<updated>2012-06-27T18:18:53Z</updated>
<author>
<name>Deepthi Dharwar</name>
<email>deepthi@linux.vnet.ibm.com</email>
</author>
<published>2012-06-25T21:59:54Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=75cc52358799bd6001e7d1a47847f997f5ae99f0'/>
<id>urn:sha1:75cc52358799bd6001e7d1a47847f997f5ae99f0</id>
<content type='text'>
Commit e978aa7d7d57d04eb5f88a7507c4fb98577def77 ( cpuidle: Move
dev-&gt;last_residency update to driver enter routine; remove dev-&gt;last_state)
was  breaking suspend on laptops, as reported in the below link
	- https://lkml.org/lkml/2011/11/11/164

This was fixed in commit 3439a8da16bcad6b0982ece938c9f8299bb53584
(ACPI / cpuidle: Remove acpi_idle_suspend (to fix suspend regression)
by removing acpi_idle_suspend flag.
	- https://lkml.org/lkml/2011/11/14/74

But this did fix did not work on all systems
as Suspend/resume regression was reported on Lenovo S10-3
recently by Dave.
	- https://lkml.org/lkml/2012/5/27/115
It looked like with commit e978aa7d broke suspend and
with commit 3439a8da resume was not working with acpi_idle driver.

This patch fixes the regression that caused this issue
in the first place. acpi_idle_suspend flag is essential on
some x86 systems to prevent the cpus from going to deeper C-states
when suspend is triggered ( commit b04e7bdb984 )
So reverting the commit 3439a8da is essential.

By default, irqs are disabled in cpu_idle arch specific call
and re-enabled in idle state return path . During suspend,
the acpi_idle_suspend flag is set, which
prevents the cpus from going to deeper idle states,
it is essential to enabling the irqs in this return path too.

To address the suspend issue,
we were not re-enabling the interrupts while returning from
acpi_idle_enter_bm() routine if acpi_idle_suspend flag is set.
and this caused suspend failure.

In addition to the above, to improve the readability of the code,
return of -ENIVAL is replaced with -EBUSY in acpi_idle_suspend
return path. Implying that the system is currently busy when suspend
is in progress, which prevents the cpus from entering deeper C-states.

Reported-and-Tested-by: Dav Hansen &lt;dave@linux.vnet.ibm.com&gt;
Tested-by: Preeti Murthy &lt;preeti@linux.vnet.ibm.com&gt;
Signed-off-by: Deepthi Dharwar &lt;deepthi@linux.vnet.ibm.com&gt;
Reviewed-by: Srivatsa S Bhat &lt;srivatsa.bhat@linux.vnet.ibm.com&gt;
Signed-off-by: Rafael J. Wysocki &lt;rjw@sisk.pl&gt;
</content>
</entry>
<entry>
<title>Merge branches 'idle-fix' and 'misc' into release</title>
<updated>2012-04-07T01:48:59Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2012-04-07T01:48:59Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=eeaab2d8af2cf1d36d7086f22e9de42d6dd2995c'/>
<id>urn:sha1:eeaab2d8af2cf1d36d7086f22e9de42d6dd2995c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ACPI processor: Use safe_halt() rather than halt() in acpi_idle_play_dead()</title>
<updated>2012-04-05T17:41:44Z</updated>
<author>
<name>Luck, Tony</name>
<email>tony.luck@intel.com</email>
</author>
<published>2012-04-03T16:37:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=54f70077768e9aba37d9c5030b43497b6d5084fb'/>
<id>urn:sha1:54f70077768e9aba37d9c5030b43497b6d5084fb</id>
<content type='text'>
ACPI code is shared by arch/x86 and arch/ia64. ia64 doesn't provide a plain
"halt()" function.  Use safe_halt() instead.

Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
Tested-by: Boris Ostrovsky &lt;boris.ostrovsky@amd.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge branches 'acpica', 'bgrt', 'bz-11533', 'cpuidle', 'ec', 'hotplug', 'misc', 'red-hat-bz-727865', 'thermal', 'throttling', 'turbostat' and 'video' into release</title>
<updated>2012-03-30T20:10:37Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2012-03-30T20:10:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=1a05e4678724c4a5fe7b9e4e208b616dfe8c3a32'/>
<id>urn:sha1:1a05e4678724c4a5fe7b9e4e208b616dfe8c3a32</id>
<content type='text'>
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: Fix unprotected smp_processor_id() in acpi_processor_cst_has_changed()</title>
<updated>2012-03-30T07:58:06Z</updated>
<author>
<name>Paul E. McKenney</name>
<email>paulmck@linux.vnet.ibm.com</email>
</author>
<published>2012-02-28T21:27:44Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=9505626d7bfeb5bd4b85acb483831ac640b2a5e8'/>
<id>urn:sha1:9505626d7bfeb5bd4b85acb483831ac640b2a5e8</id>
<content type='text'>
The acpi_processor_cst_has_changed() function is invoked from a
CPU_ONLINE or CPU_DEAD function, which might well execute on CPU 0
even though the CPU being hotplugged is some other CPU.  In addition,
acpi_processor_cst_has_changed() invokes smp_processor_id() without
protection, resulting in splats when onlining CPUs.

This commit therefore changes the smp_processor_id() to pr-&gt;id, as is
used elsewhere in the code, for example, in acpi_processor_add().

Signed-off-by: Paul E. McKenney &lt;paul.mckenney@linaro.org&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Reviewed-by: Srivatsa S. Bhat &lt;srivatsa.bhat@linux.vnet.ibm.com&gt;
Tested-by: Yong Zhang &lt;yong.zhang0@gmail.com&gt;
Acked-by: Rafael J. Wysocki &lt;rjw@sisk.pl&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
<entry>
<title>idle, x86: Allow off-lined CPU to enter deeper C states</title>
<updated>2012-03-30T07:23:01Z</updated>
<author>
<name>Boris Ostrovsky</name>
<email>boris.ostrovsky@amd.com</email>
</author>
<published>2012-03-13T18:55:09Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=1a022e3f1be11730bd8747b1af96a0274bf6356e'/>
<id>urn:sha1:1a022e3f1be11730bd8747b1af96a0274bf6356e</id>
<content type='text'>
Currently when a CPU is off-lined it enters either MWAIT-based idle or,
if MWAIT is not desired or supported, HLT-based idle (which places the
processor in C1 state). This patch allows processors without MWAIT
support to stay in states deeper than C1.

Signed-off-by: Boris Ostrovsky &lt;boris.ostrovsky@amd.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI / cpuidle: Remove acpi_idle_suspend (to fix suspend regression)</title>
<updated>2011-11-12T23:30:14Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rjw@sisk.pl</email>
</author>
<published>2011-11-12T22:17:27Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=3439a8da16bcad6b0982ece938c9f8299bb53584'/>
<id>urn:sha1:3439a8da16bcad6b0982ece938c9f8299bb53584</id>
<content type='text'>
After commit e978aa7d7d57 ("cpuidle: Move dev-&gt;last_residency update to
driver enter routine; remove dev-&gt;last_state") setting acpi_idle_suspend
to 1 by acpi_processor_suspend() causes the ACPI cpuidle routines to
return error codes continuously, which in turn causes cpuidle to lock up
(hard).

However, acpi_idle_suspend doesn't appear to be useful for any
particular purpose (it's racy and doesn't really provide any real
protection), so it can be removed, which makes the problem go away.

Reported-and-tested-by: Tomas M. &lt;tmezzadra@gmail.com&gt;
Reported-and-tested-by: Ferenc Wagner &lt;wferi@niif.hu&gt;
Tested-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Rafael J. Wysocki &lt;rjw@sisk.pl&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux</title>
<updated>2011-11-07T18:13:52Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-11-07T18:13:52Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=3c00303206c3a1ccd86579efdc90bc35f140962e'/>
<id>urn:sha1:3c00303206c3a1ccd86579efdc90bc35f140962e</id>
<content type='text'>
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
  cpuidle: Single/Global registration of idle states
  cpuidle: Split cpuidle_state structure and move per-cpu statistics fields
  cpuidle: Remove CPUIDLE_FLAG_IGNORE and dev-&gt;prepare()
  cpuidle: Move dev-&gt;last_residency update to driver enter routine; remove dev-&gt;last_state
  ACPI: Fix CONFIG_ACPI_DOCK=n compiler warning
  ACPI: Export FADT pm_profile integer value to userspace
  thermal: Prevent polling from happening during system suspend
  ACPI: Drop ACPI_NO_HARDWARE_INIT
  ACPI atomicio: Convert width in bits to bytes in __acpi_ioremap_fast()
  PNPACPI: Simplify disabled resource registration
  ACPI: Fix possible recursive locking in hwregs.c
  ACPI: use kstrdup()
  mrst pmu: update comment
  tools/power turbostat: less verbose debugging
</content>
</entry>
<entry>
<title>cpuidle: Single/Global registration of idle states</title>
<updated>2011-11-07T02:13:58Z</updated>
<author>
<name>Deepthi Dharwar</name>
<email>deepthi@linux.vnet.ibm.com</email>
</author>
<published>2011-10-28T10:50:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=46bcfad7a819bd17ac4e831b04405152d59784ab'/>
<id>urn:sha1:46bcfad7a819bd17ac4e831b04405152d59784ab</id>
<content type='text'>
This patch makes the cpuidle_states structure global (single copy)
instead of per-cpu. The statistics needed on per-cpu basis
by the governor are kept per-cpu. This simplifies the cpuidle
subsystem as state registration is done by single cpu only.
Having single copy of cpuidle_states saves memory. Rare case
of asymmetric C-states can be handled within the cpuidle driver
and architectures such as POWER do not have asymmetric C-states.

Having single/global registration of all the idle states,
dynamic C-state transitions on x86 are handled by
the boot cpu. Here, the boot cpu  would disable all the devices,
re-populate the states and later enable all the devices,
irrespective of the cpu that would receive the notification first.

Reference:
https://lkml.org/lkml/2011/4/25/83

Signed-off-by: Deepthi Dharwar &lt;deepthi@linux.vnet.ibm.com&gt;
Signed-off-by: Trinabh Gupta &lt;g.trinabh@gmail.com&gt;
Tested-by: Jean Pihet &lt;j-pihet@ti.com&gt;
Reviewed-by: Kevin Hilman &lt;khilman@ti.com&gt;
Acked-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Acked-by: Kevin Hilman &lt;khilman@ti.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
<entry>
<title>cpuidle: Split cpuidle_state structure and move per-cpu statistics fields</title>
<updated>2011-11-07T02:13:49Z</updated>
<author>
<name>Deepthi Dharwar</name>
<email>deepthi@linux.vnet.ibm.com</email>
</author>
<published>2011-10-28T10:50:33Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=4202735e8ab6ecfb0381631a0d0b58fefe0bd4e2'/>
<id>urn:sha1:4202735e8ab6ecfb0381631a0d0b58fefe0bd4e2</id>
<content type='text'>
This is the first step towards global registration of cpuidle
states. The statistics used primarily by the governor are per-cpu
and have to be split from rest of the fields inside cpuidle_state,
which would be made global i.e. single copy. The driver_data field
is also per-cpu and moved.

Signed-off-by: Deepthi Dharwar &lt;deepthi@linux.vnet.ibm.com&gt;
Signed-off-by: Trinabh Gupta &lt;g.trinabh@gmail.com&gt;
Tested-by: Jean Pihet &lt;j-pihet@ti.com&gt;
Reviewed-by: Kevin Hilman &lt;khilman@ti.com&gt;
Acked-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Acked-by: Kevin Hilman &lt;khilman@ti.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
</feed>
