tree a68e5c437b82de235e40ec6eb40885392fa08d64
parent b01d4e68933ec23e43b1046fa35d593cefcf37d1
parent 19bc45a59caf0ed2c2576da4d89c0ef8a8be1f63
author Linus Torvalds <torvalds@linux-foundation.org> 1394299047 -0800
committer Linus Torvalds <torvalds@linux-foundation.org> 1394299047 -0800
mergetag object 19bc45a59caf0ed2c2576da4d89c0ef8a8be1f63
 type commit
 tag pm+acpi-3.14-rc6
 tagger Rafael J. Wysocki <rjw@rjwysocki.net> 1394242592 +0100
 
 ACPI and power management fixes for 3.14-rc6
 
  - ACPI tables in some BIOSes list device resources with size equal
    to 0, which doesn't make sense, so we should ignore them, but
    instead we try to use them and mangle things completely.  Fix
    from Zhang Rui.
 
  - Several models of Samsung laptops accumulate EC events when they
    are in sleep states which leads to EC buffer overflows that prevent
    new events from being signaled after system resume or reboot.  This
    has been affecting many users for quite a while and may be addressed
    by clearing the EC buffer during system resume and system startup on
    those machines.  From Kieran Clancy.
 
  - If the ACPI sleep control and status registers are not present
    (which  happens if the Hardware Reduced ACPI mode bit is set in
    the ACPI tables, but also may result from BIOS bugs), we should
    not try to use ACPI to power off the system and ACPI S5 should
    not be listed as supported.  Fix from Aubrey Li.
 
  - There's a race condition in cpufreq_get() that leads to a kernel
    crash if that function is called at a wrong time.  Fix from
    Aaron Plattner.
 
  - cpufreq policy objects have to be initialized entirely before
    they are first accessed by their users which isn't the case
    currently and that potentially leads to various kinds of
    breakage that is difficult to debug.  Fix from Viresh Kumar.
 
  - Locking is missing in __cpufreq_add_dev() which leads to a race
    condition that may trigger a kernel crash.  Fix from Viresh Kumar.
 
 /
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.22 (GNU/Linux)
 
 iQIcBAABCAAGBQJTGnQlAAoJEILEb/54YlRxc8EP/jK95zPwkMwASjNR1s/Gs7/Y
 dx4qOYsWSs0Iutn1syyEg57TgjS/14z0UgOnYRiRHAFP+9610SLjZkZZelYQMgFE
 N4NyQJB7rTL+ycGH1oovbWQPQlewx4aX6p6XNg4bQHTHwxiik/gS6G7rW4Edxt+h
 BIc0SXDf/ldsDJk42v4ie0lSmIRtFF789cXvESi6KmLyNuwiuvGo25uCODVTZxAz
 h/ekjcF3PrbAsTeI+yw4J8pceI/IxXksdHp08jQsS7/QYGnMTGo3PXX3NfgSszbg
 WPPgk409AHjgGPgtWjkVXCChJbKJ57CtHVQ+PG8EYZy+yMTRLWEhxfGcg9sjcKaJ
 Z5gvCQz/g7vF0zk4ScMb6Re+t53lN3SsPwsROj2p/RD7X8uLWIi0Ocuk+iLhermv
 HOEg0Loo6gAN3QiviPjUhtVK1cNu3zuCuTbjhDq6L6S4t1LsnbIWd3QdoUBn1GM+
 wIgFK/qu11m6QV3q8dlAxE/iMZQ8KrixlKfETPXK6KlrWBPA4v5H4lu5IjNEsmd0
 tPbNPFhR4zzlV3QVzlk1NYCV9TxIX7kMl5CIZERLpzkzg9UkgJuaatQx7UjwCcxL
 JTUtMxmHGL7m8ToVJgOcBo+WIjRIEGdQ53ZoB0WndwHYuRIt78WoNP5xTi84JEOk
 AE/Od2/YjC/lb8u/gxK4
 =57PZ
 -----END PGP SIGNATURE-----

Merge tag 'pm+acpi-3.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI and power management fixes from Rafael Wysocki:

 - ACPI tables in some BIOSes list device resources with size equal to
   0, which doesn't make sense, so we should ignore them, but instead we
   try to use them and mangle things completely.  Fix from Zhang Rui.

 - Several models of Samsung laptops accumulate EC events when they are
   in sleep states which leads to EC buffer overflows that prevent new
   events from being signaled after system resume or reboot.  This has
   been affecting many users for quite a while and may be addressed by
   clearing the EC buffer during system resume and system startup on
   those machines.  From Kieran Clancy.

 - If the ACPI sleep control and status registers are not present (which
   happens if the Hardware Reduced ACPI mode bit is set in the ACPI
   tables, but also may result from BIOS bugs), we should not try to use
   ACPI to power off the system and ACPI S5 should not be listed as
   supported.  Fix from Aubrey Li.

 - There's a race condition in cpufreq_get() that leads to a kernel
   crash if that function is called at a wrong time.  Fix from Aaron
   Plattner.

 - cpufreq policy objects have to be initialized entirely before they
   are first accessed by their users which isn't the case currently and
   that potentially leads to various kinds of breakage that is difficult
   to debug.  Fix from Viresh Kumar.

 - Locking is missing in __cpufreq_add_dev() which leads to a race
   condition that may trigger a kernel crash.  Fix from Viresh Kumar.

* tag 'pm+acpi-3.14-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI / EC: Clear stale EC events on Samsung systems
  cpufreq: Initialize governor for a new policy under policy->rwsem
  cpufreq: Initialize policy before making it available for others to use
  cpufreq: use cpufreq_cpu_get() to avoid cpufreq_get() race conditions
  ACPI / sleep: pm_power_off needs more sanity checks to be installed
  ACPI / resources: ignore invalid ACPI device resources
