1. 29 May, 2010 1 commit
    • Rafael J. Wysocki's avatar
      ACPI / EC / PM: Fix race between EC transactions and system suspend · d5a64513
      Rafael J. Wysocki authored
      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: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Reported-and-tested-by: default avatarMaxim Levitsky <maximlevitsky@gmail.com>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      d5a64513
  2. 16 May, 2010 6 commits
  3. 15 May, 2010 17 commits
  4. 14 May, 2010 16 commits