1. 13 7月, 2010 1 次提交
  2. 07 7月, 2010 18 次提交
  3. 02 7月, 2010 1 次提交
  4. 28 6月, 2010 1 次提交
  5. 18 6月, 2010 1 次提交
    • R
      ACPI / PM: Do not enable GPEs for system wakeup in advance · cb1cb178
      Rafael J. Wysocki 提交于
      After commit 9630bdd9
      (ACPI: Use GPE reference counting to support shared GPEs) the wakeup
      enable mask bits of GPEs are set as soon as the GPEs are enabled to
      wake up the system.  Unfortunately, this leads to a regression
      reported by Michal Hocko, where a system is woken up from ACPI S5 by
      a device that is not supposed to do that, because the wakeup enable
      mask bit of this device's GPE is always set when
      acpi_enter_sleep_state() calls acpi_hw_enable_all_wakeup_gpes(),
      although it should only be set if the device is supposed to wake up
      the system from the target state.
      
      To work around this issue, rework the ACPI power management code so
      that GPEs are not enabled to wake up the system upfront, but only
      during a system state transition when the target state of the system
      is known.  [Of course, this means that the reference counting of
      "wakeup" GPEs doesn't really make sense and it is sufficient to
      set/unset the wakeup mask bits for them during system sleep
      transitions.  This will allow us to simplify the GPE handling code
      quite a bit, but that change is too intrusive for 2.6.35.]
      
      Fixes https://bugzilla.kernel.org/show_bug.cgi?id=15951Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Reported-and-tested-by: NMichal Hocko <mhocko@suse.cz>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      cb1cb178
  6. 12 6月, 2010 8 次提交
  7. 10 6月, 2010 5 次提交
  8. 05 6月, 2010 2 次提交
  9. 04 6月, 2010 1 次提交
  10. 29 5月, 2010 2 次提交
    • R
      ACPI / EC / PM: Fix names of functions that block/unblock EC transactions · fe955682
      Rafael J. Wysocki 提交于
      The names of the functions used for blocking/unblocking EC
      transactions during suspend/hibernation suggest that the transactions
      are suspended and resumed by them, while in fact they are disabled
      and enabled.  Rename the functions (and the flag used by them) to
      better reflect what they really do.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      fe955682
    • R
      ACPI / EC / PM: Fix race between EC transactions and system suspend · d5a64513
      Rafael J. Wysocki 提交于
      There still is a race that may result in suspending the system in
      the middle of an EC transaction in progress, which leads to problems
      (like the kernel thinking that the ACPI global lock is held during
      resume while in fact it's not).
      
      To remove the race condition, modify the ACPI platform suspend and
      hibernate callbacks so that EC transactions are blocked right after
      executing the _PTS global control method and are allowed to happen
      again right after the low-level wakeup.
      
      Introduce acpi_pm_freeze() that will disable GPEs, wait until the
      event queues are empty and block EC transactions.  Use it wherever
      GPEs are disabled in preparation for switching local interrupts off.
      Introduce acpi_pm_thaw() that will allow EC transactions to happen
      again and enable runtime GPEs.  Use it to balance acpi_pm_freeze()
      wherever necessary.
      
      In addition to that use acpi_ec_resume_transactions_early() to
      unblock EC transactions as early as reasonably possible during
      resume.  Also unblock EC transactions in acpi_hibernation_finish()
      and in the analogous suspend routine to make sure that the EC
      transactions are enabled in all error paths.
      
      Fixes https://bugzilla.kernel.org/show_bug.cgi?id=14668Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Reported-and-tested-by: NMaxim Levitsky <maximlevitsky@gmail.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      d5a64513