<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/acpi, branch v2.6.35.4</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/acpi?h=v2.6.35.4</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/acpi?h=v2.6.35.4'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2010-08-26T23:45:43Z</updated>
<entry>
<title>acpi: fix bogus preemption logic</title>
<updated>2010-08-26T23:45:43Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2010-08-11T21:17:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d3ad3eb081014cb4baf2b87f394bc3ec4779ef16'/>
<id>urn:sha1:d3ad3eb081014cb4baf2b87f394bc3ec4779ef16</id>
<content type='text'>
commit 0a7992c90828a65281c3c9cf180be3b432d277b2 upstream.

The ACPI_PREEMPTION_POINT() logic was introduced in commit 8bd108d
(ACPICA: add preemption point after each opcode parse).  The follow up
commits abe1dfab6, 138d15692, c084ca70 tried to fix the preemption logic
back and forth, but nobody noticed that the usage of
in_atomic_preempt_off() in that context is wrong.

The check which guards the call of cond_resched() is:

    if (!in_atomic_preempt_off() &amp;&amp; !irqs_disabled())

in_atomic_preempt_off() is not intended for general use as the comment
above the macro definition clearly says:

 * Check whether we were atomic before we did preempt_disable():
 * (used by the scheduler, *after* releasing the kernel lock)

On a CONFIG_PREEMPT=n kernel the usage of in_atomic_preempt_off() works by
accident, but with CONFIG_PREEMPT=y it's just broken.

The whole purpose of the ACPI_PREEMPTION_POINT() is to reduce the latency
on a CONFIG_PREEMPT=n kernel, so make ACPI_PREEMPTION_POINT() depend on
CONFIG_PREEMPT=n and remove the in_atomic_preempt_off() check.

Addresses https://bugzilla.kernel.org/show_bug.cgi?id=16210

[akpm@linux-foundation.org: fix build]
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Len Brown &lt;lenb@kernel.org&gt;
Cc: Francois Valenduc &lt;francois.valenduc@tvcablenet.be&gt;
Cc: Lin Ming &lt;ming.m.lin@intel.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>Merge branch 'bugzilla-16396' into release</title>
<updated>2010-07-25T03:26:22Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2010-07-25T03:26:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0e1cf38889110a7188999388614aef17a84d9d25'/>
<id>urn:sha1:0e1cf38889110a7188999388614aef17a84d9d25</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ACPI / Sleep: Allow the NVS saving to be skipped during suspend to RAM</title>
<updated>2010-07-25T03:26:09Z</updated>
<author>
<name>Rafael J. Wysocki</name>
<email>rjw@sisk.pl</email>
</author>
<published>2010-07-23T20:59:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=72ad5d77fb981963edae15eee8196c80238f5ed0'/>
<id>urn:sha1:72ad5d77fb981963edae15eee8196c80238f5ed0</id>
<content type='text'>
Commit 2a6b69765ad794389f2fc3e14a0afa1a995221c2
(ACPI: Store NVS state even when entering suspend to RAM) caused the
ACPI suspend code save the NVS area during suspend and restore it
during resume unconditionally, although it is known that some systems
need to use acpi_sleep=s4_nonvs for hibernation to work.  To allow
the affected systems to avoid saving and restoring the NVS area
during suspend to RAM and resume, introduce kernel command line
option acpi_sleep=nonvs and make acpi_sleep=s4_nonvs work as its
alias temporarily (add acpi_sleep=s4_nonvs to the feature removal
file).

Addresses https://bugzilla.kernel.org/show_bug.cgi?id=16396 .

Signed-off-by: Rafael J. Wysocki &lt;rjw@sisk.pl&gt;
Reported-and-tested-by: tomas m &lt;tmezzadra@gmail.com&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'misc' into release</title>
<updated>2010-07-22T22:19:12Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2010-07-22T22:19:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=bbac30edb39a80426e4a3420a5ec635eb4466f63'/>
<id>urn:sha1:bbac30edb39a80426e4a3420a5ec635eb4466f63</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'bugzilla-15886' into release</title>
<updated>2010-07-22T22:18:28Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2010-07-22T22:18:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4a973f2495fba8775d1c408b3ee7f2c19b19f13f'/>
<id>urn:sha1:4a973f2495fba8775d1c408b3ee7f2c19b19f13f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'bugzilla-102904-workaround' into release</title>
<updated>2010-07-22T22:18:18Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2010-07-22T22:18:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=be48b11573952b467676b24de87d637e33339e7d'/>
<id>urn:sha1:be48b11573952b467676b24de87d637e33339e7d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'bugzilla-16244' into release</title>
<updated>2010-07-22T22:18:05Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2010-07-22T22:18:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=27568d8e5f7a038795dff997a906f775084f927a'/>
<id>urn:sha1:27568d8e5f7a038795dff997a906f775084f927a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'bugzilla-16271' into release</title>
<updated>2010-07-22T22:17:39Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2010-07-22T22:17:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=855977ef6d07e8d1d50994ab7310e40d18a64e16'/>
<id>urn:sha1:855977ef6d07e8d1d50994ab7310e40d18a64e16</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ACPI: create "processor.bm_check_disable" boot param</title>
<updated>2010-07-22T21:23:10Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2010-07-22T21:23:10Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d3e7e99f2faf9f44ec0a3379f735b41c9173dfa1'/>
<id>urn:sha1:d3e7e99f2faf9f44ec0a3379f735b41c9173dfa1</id>
<content type='text'>
processor.bm_check_disable=1" prevents Linux from checking BM_STS
before entering C3-type cpu power states.

This may be useful for a system running acpi_idle
where the BIOS exports FADT C-states, _CST IO C-states,
or _CST FFH C-states with the BM_STS bit set;
while configuring the chipset to set BM_STS
more frequently than perhaps is optimal.

Note that such systems may have been developed
using a tickful OS that would quickly clear BM_STS,
rather than a tickless OS that may go for some time
between checking and clearing BM_STS.

Note also that an alternative for newer systems
is to use the intel_idle driver, which always
ignores BM_STS, relying Linux device drivers
to register constraints explicitly via PM_QOS.

https://bugzilla.kernel.org/show_bug.cgi?id=15886

Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
<entry>
<title>ACPI: skip checking BM_STS if the BIOS doesn't ask for it</title>
<updated>2010-07-22T20:54:27Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2010-07-22T20:54:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=718be4aaf3613cf7c2d097f925abc3d3553c0605'/>
<id>urn:sha1:718be4aaf3613cf7c2d097f925abc3d3553c0605</id>
<content type='text'>
It turns out that there is a bit in the _CST for Intel FFH C3
that tells the OS if we should be checking BM_STS or not.

Linux has been unconditionally checking BM_STS.
If the chip-set is configured to enable BM_STS,
it can retard or completely prevent entry into
deep C-states -- as illustrated by turbostat:

http://userweb.kernel.org/~lenb/acpi/utils/pmtools/turbostat/

ref: Intel Processor Vendor-Specific ACPI Interface Specification
table 4 "_CST FFH GAS Field Encoding"
Bit 1: Set to 1 if OSPM should use Bus Master avoidance for this C-state

https://bugzilla.kernel.org/show_bug.cgi?id=15886

Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
</feed>
