1. 29 6月, 2010 1 次提交
    • T
      acpi: use queue_work_on() instead of binding workqueue worker to cpu0 · 8fec62b2
      Tejun Heo 提交于
      ACPI works need to be executed on cpu0 and acpi/osl.c achieves this by
      creating singlethread workqueue and then binding it to cpu0 from a
      work which is quite unorthodox.  Make it create regular workqueues and
      use queue_work_on() instead.  This is in preparation of concurrency
      managed workqueue and the extra workers won't be a problem after it's
      implemented.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      8fec62b2
  2. 05 6月, 2010 2 次提交
  3. 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
  4. 28 5月, 2010 3 次提交
  5. 25 5月, 2010 1 次提交
  6. 22 5月, 2010 2 次提交
  7. 20 5月, 2010 13 次提交
  8. 19 5月, 2010 1 次提交
    • H
      ACPI, IO memory pre-mapping and atomic accessing · 15651291
      Huang Ying 提交于
      Some ACPI IO accessing need to be done in atomic context. For example,
      APEI ERST operations may be used for permanent storage in hardware
      error handler. That is, it may be called in atomic contexts such as
      IRQ or NMI, etc. And, ERST/EINJ implement their operations via IO
      memory/port accessing.  But the IO memory accessing method provided by
      ACPI (acpi_read/acpi_write) maps the IO memory during it is accessed,
      so it can not be used in atomic context. To solve the issue, the IO
      memory should be pre-mapped during EINJ/ERST initializing. A linked
      list is used to record which memory area has been mapped, when memory
      is accessed in hardware error handler, search the linked list for the
      mapped virtual address from the given physical address.
      Signed-off-by: NHuang Ying <ying.huang@intel.com>
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      15651291
  9. 12 5月, 2010 3 次提交
    • M
      ACPI: Unconditionally set SCI_EN on resume · b6dacf63
      Matthew Garrett 提交于
      The ACPI spec tells us that the firmware will reenable SCI_EN on resume.
      Reality disagrees in some cases. The ACPI spec tells us that the only way
      to set SCI_EN is via an SMM call.
      https://bugzilla.kernel.org/show_bug.cgi?id=13745 shows us that doing so
      may break machines. Tracing the ACPI calls made by Windows shows that it
      unconditionally sets SCI_EN on resume with a direct register write, and
      therefore the overwhelming probability is that everything is fine with
      this behaviour.
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      Tested-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      b6dacf63
    • L
      ACPICA: simplify SCI_EN workaround · b430acbd
      Len Brown 提交于
      acpi_hw_set_mode() double checks its effectiveness
      by calling acpi_hw_get_mode() -- polling up to 3 seconds.
      
      It would be more logical for its caller, acpi_enable()
      acpi_enable() to do the double-checking.  (lets assume
      that acpi_disable() isn't interesting)
      
      The ACPI specification is unclear on this point.
      Some parts say that the BIOS sets SCI_EN and then returns to the OS,
      but one part says "OSPM polls the SCI_EN bit until it is sampled SET".
      
      The systems I have on hand do the former,
      SCI_EN is observed to be set upon return from the BIOS.
      
      So we move the check up out of acpi_hw_set_mode()
      up into acpi_enable() where it makes logical sense.
      
      Then we replace the 3-second polling loop
      with a single check.  If this check fails, we'll see:
      
      	"Hardware did not enter ACPI mode"
      
      and the system will bail out of ACPI initialization
      and likely fail to boot.  If we see that in practice,
      we can restore the polling, but put it into acpi_enable.
      
      This patch is important if acpi_enable() is used in
      the resume from S3 path.  Many systems today are seen
      coming back from S3 with SCI_EN off, and then failing
      to set SCI_EN in response to acpi_enable().  Those systems
      will take 3 seconds longer to resume due to this loop.
      
      However, it is possible that we will not use acpi_enable()
      in the S3 resume path, and bang SCI_EN directly, which
      would make the loop harmless, as it would be invisible
      to all systems except those that need it.
      Signed-off-by: NLen Brown <len.brown@intel.com>
      b430acbd
    • A
      ACPI: sleep: eliminate duplicate entries in acpisleep_dmi_table[] · 7d6fb7bd
      Alex Chiang 提交于
      Duplicate entries ended up acpisleep_dmi_table[] by accident.
      They don't hurt functionality, but they are ugly, so let's get
      rid of them.
      
      Cc: stable@kernel.org
      Signed-off-by: NAlex Chiang <achiang@canonical.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      7d6fb7bd
  10. 11 5月, 2010 1 次提交
    • M
      PM QOS update · ed77134b
      Mark Gross 提交于
      This patch changes the string based list management to a handle base
      implementation to help with the hot path use of pm-qos, it also renames
      much of the API to use "request" as opposed to "requirement" that was
      used in the initial implementation.  I did this because request more
      accurately represents what it actually does.
      
      Also, I added a string based ABI for users wanting to use a string
      interface.  So if the user writes 0xDDDDDDDD formatted hex it will be
      accepted by the interface.  (someone asked me for it and I don't think
      it hurts anything.)
      
      This patch updates some documentation input I got from Randy.
      Signed-off-by: Nmarkgross <mgross@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      ed77134b
  11. 07 5月, 2010 1 次提交
  12. 06 5月, 2010 5 次提交