1. 07 7月, 2010 6 次提交
  2. 02 7月, 2010 1 次提交
  3. 28 6月, 2010 1 次提交
  4. 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
  5. 12 6月, 2010 8 次提交
  6. 10 6月, 2010 5 次提交
  7. 05 6月, 2010 2 次提交
  8. 04 6月, 2010 1 次提交
  9. 29 5月, 2010 7 次提交
    • 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
    • V
      ACPI: Don't let acpi_pad needlessly mark TSC unstable · 0dc698b9
      Venkatesh Pallipadi 提交于
      acpi pad driver kind of aggressively marks TSC as unstable at init
      time, on mwait capable and non X86_FEATURE_NONSTOP_TSC systems. This is
      irrespective of whether pad driver is ever going to be used on the
      system or deep C-states are supported/used. This will affect every user
      who just happens to compile in (or get a kernel version which
      compiles in) acpi pad driver.
      
      Move mark_tsc_unstable() out of init to the actual idle invocation path
      of the pad driver.
      
      There is also another bug/missing_feature in the code that it does not
      support 'always running apic timer' and switches to broadcast mode
      unconditionally. Shaohua, can you take a look at that please.
      Signed-off-by: NVenkatesh Pallipadi <venki@google.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      0dc698b9
    • A
      drivers/acpi/sleep.h: Checkpatch cleanup · b6fecaa8
      Andrea Gelmini 提交于
      drivers/acpi/sleep.h:3: WARNING: space prohibited between function name and open parenthesis '('
      Signed-off-by: NAndrea Gelmini <andrea.gelmini@gelma.net>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      b6fecaa8
    • V
      ACPI: Minor cleanup eliminating redundant PMTIMER_TICKS to NS conversion · 2da513f5
      Venkatesh Pallipadi 提交于
      acpi_enter_[simple,bm] does
      idle timing in ns, convert it to timeval, then to us, then to
      pmtimer_ticks and then back to ns.
      
      This patch changes things to
      idle timing in ns, convert it to us, and then to pmtimer_ticks.
      
      Just saves an imul along this path, but makes the code cleaner.
      Signed-off-by: NVenkatesh Pallipadi <venki@google.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      2da513f5
    • L
      intel_idle: native hardware cpuidle driver for latest Intel processors · 26717172
      Len Brown 提交于
      This EXPERIMENTAL driver supersedes acpi_idle on
      Intel Atom Processors, Intel Core i3/i5/i7 Processors
      and associated Intel Xeon processors.
      
      It does not support the Intel Core2 processor or earlier.
      
      For kernels configured with ACPI, CONFIG_INTEL_IDLE=y
      allows intel_idle to probe before the ACPI processor driver.
      Booting with "intel_idle.max_cstate=0" disables intel_idle
      and the system will fall back on ACPI's "acpi_idle".
      
      Typical Linux distributions load ACPI processor module early,
      making CONFIG_INTEL_IDLE=m not easily useful on ACPI platforms.
      
      intel_idle probes all processors at module_init time.
      Processors that are hot-added later will be limited
      to using C1 in idle.
      Signed-off-by: NLen Brown <len.brown@intel.com>
      26717172
    • L
      ACPI: acpi_idle: touch TS_POLLING only in the non-MWAIT case · 02cf4f98
      Len Brown 提交于
      commit d306ebc2
      (ACPI: Be in TS_POLLING state during mwait based C-state entry)
      fixed an important power & performance issue where ACPI c2 and c3 C-states
      were clearing TS_POLLING even when using MWAIT (ACPI_STATE_FFH).
      That bug had been causing us to receive redundant scheduling interrups
      when we had already been woken up by MONITOR/MWAIT.
      
      Following up on that...
      
      In the MWAIT case, we don't have to subsequently
      check need_resched(), as that c heck was there
      for the TS_POLLING-clearing case.
      
      Note that not only does the cpuidle calling function
      already check need_resched() before calling us, the
      low-level entry into monitor/mwait calls it twice --
      guaranteeing that a write to the trigger address
      can not go un-noticed.
      
      Also, in this case, we don't have to set TS_POLLING
      when we wake, because we never cleared it.
      Signed-off-by: NLen Brown <len.brown@intel.com>
      Acked-by: NVenkatesh Pallipadi <venki@google.com>
      02cf4f98
  10. 28 5月, 2010 3 次提交
  11. 25 5月, 2010 1 次提交
  12. 22 5月, 2010 2 次提交
  13. 20 5月, 2010 2 次提交