1. 19 9月, 2012 2 次提交
  2. 24 8月, 2012 1 次提交
  3. 22 8月, 2012 3 次提交
  4. 16 8月, 2012 2 次提交
  5. 24 7月, 2012 1 次提交
  6. 19 7月, 2012 1 次提交
  7. 16 7月, 2012 2 次提交
  8. 13 7月, 2012 2 次提交
  9. 12 7月, 2012 2 次提交
  10. 11 7月, 2012 3 次提交
  11. 10 7月, 2012 10 次提交
  12. 06 7月, 2012 1 次提交
    • R
      PCI / PM: restore the original behavior of pci_set_power_state() · db288c9c
      Rafael J. Wysocki 提交于
      Commit cc2893b6 (PCI: Ensure we re-enable devices on resume)
      addressed the problem with USB not being powered after resume on
      recent Lenovo machines, but it did that in a suboptimal way.
      Namely, it should have changed the relevant code paths only,
      which are pci_pm_resume_noirq() and pci_pm_restore_noirq() supposed
      to restore the device's power and standard configuration registers
      after system resume from suspend or hibernation.  Instead, however,
      it modified pci_set_power_state() which is executed in several
      other situations too.  That resulted in some undesirable effects,
      like attempting to change a device's power state in the same way
      multiple times in a row (up to as many as 4 times in a row in the
      snd_hda_intel driver).
      
      Fix the bug addressed by commit cc2893b6 in an alternative way,
      by forcibly powering up all devices in pci_pm_default_resume_early(),
      which is called by pci_pm_resume_noirq() and pci_pm_restore_noirq()
      to restore the device's power and standard configuration registers,
      and modifying pci_pm_runtime_resume() to avoid the forcible power-up
      if not necessary.  Then, revert the changes made by commit cc2893b6
      to make the confusion introduced by it go away.
      Acked-by: NMatthew Garrett <mjg@redhat.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      db288c9c
  13. 26 6月, 2012 1 次提交
  14. 24 6月, 2012 3 次提交
    • H
      PCI/PM: add PCIe runtime D3cold support · 448bd857
      Huang Ying 提交于
      This patch adds runtime D3cold support and corresponding ACPI platform
      support.  This patch only enables runtime D3cold support; it does not
      enable D3cold support during system suspend/hibernate.
      
      D3cold is the deepest power saving state for a PCIe device, where its main
      power is removed.  While it is in D3cold, you can't access the device at
      all, not even its configuration space (which is still accessible in D3hot).
      Therefore the PCI PM registers can not be used to transition into/out of
      the D3cold state; that must be done by platform logic such as ACPI _PR3.
      
      To support wakeup from D3cold, a system may provide auxiliary power, which
      allows a device to request wakeup using a Beacon or the sideband WAKE#
      signal.  WAKE# is usually connected to platform logic such as ACPI GPE.
      This is quite different from other power saving states, where devices
      request wakeup via a PME message on the PCIe link.
      
      Some devices, such as those in plug-in slots, have no direct platform
      logic.  For example, there is usually no ACPI _PR3 for them.  D3cold
      support for these devices can be done via the PCIe Downstream Port leading
      to the device.  When the PCIe port is powered on/off, the device is powered
      on/off too.  Wakeup events from the device will be notified to the
      corresponding PCIe port.
      
      For more information about PCIe D3cold and corresponding ACPI support,
      please refer to:
      
      - PCI Express Base Specification Revision 2.0
      - Advanced Configuration and Power Interface Specification Revision 5.0
      
      [bhelgaas: changelog]
      Reviewed-by: NRafael J. Wysocki <rjw@sisk.pl>
      Originally-by: NZheng Yan <zheng.z.yan@intel.com>
      Signed-off-by: NHuang Ying <ying.huang@intel.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      448bd857
    • Z
      PCI/PM: add runtime PM support to PCIe port · 71a83bd7
      Zheng Yan 提交于
      This patch adds runtime PM support to PCIe port.  This is needed by
      PCIe D3cold support, where PCIe device without ACPI node may be
      powered on/off by PCIe port.
      
      Because runtime suspend is broken for some chipsets, a black list is
      used to disable runtime PM support for these chipsets.
      Reviewed-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NZheng Yan <zheng.z.yan@intel.com>
      Signed-off-by: NHuang Ying <ying.huang@intel.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      71a83bd7
    • H
      ACPI/PM: specify lowest allowed state for device sleep state · ee85f543
      Huang Ying 提交于
      Lower device sleep state can save more power, but has more exit
      latency too.  Sometimes, to satisfy some power QoS and other
      requirement, we need to constrain the lowest device sleep state.
      
      In this patch, a parameter to specify lowest allowed state for
      acpi_pm_device_sleep_state is added.  So that the caller can enforce
      the constraint via the parameter.
      
      This is needed by PCIe D3cold support, where the lowest power state
      allowed may be D3_HOT instead of default D3_COLD.
      
      CC: Len Brown <lenb@kernel.org>
      CC: linux-acpi@vger.kernel.org
      Reviewed-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NHuang Ying <ying.huang@intel.com>
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      ee85f543
  15. 23 6月, 2012 1 次提交
  16. 21 6月, 2012 5 次提交
    • B
      PCI: remove useless pcix_set_mmrbc() dev->bus check · 809a3bf9
      Bjorn Helgaas 提交于
      For a valid pci_dev, dev->bus != NULL always, so remove this
      unnecessary test.
      
      Found by Coverity (CID 101680).
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      809a3bf9
    • B
      PCI: acpiphp: check whether _ADR evaluation succeeded · dfb117b3
      Bjorn Helgaas 提交于
      Check whether we evaluated _ADR successfully.  Previously we ignored
      failure, so we would have used garbage data from the stack as the device
      and function number.
      
      We return AE_OK so that we ignore only this slot and continue looking
      for other slots.
      
      Found by Coverity (CID 113981).
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      dfb117b3
    • B
      PCI: shpchp: remove dead code · 67454b66
      Bjorn Helgaas 提交于
      "slots_not_empty" is initialized to zero and can't be set again before
      reaching this point, so this return statement is dead.  Remove it.
      
      Found by Coverity (CID 114324).
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      67454b66
    • B
      PCI: fix P2P bridge I/O port window sign extension · 8f38eaca
      Bjorn Helgaas 提交于
      On P2P bridges with 32-bit I/O decoding, we incorrectly sign-extended
      windows starting at 0x80000000 or above.  In "base |= (io_base_hi << 16)",
      "io_base_hi" is promoted to a signed int before being extended to an
      unsigned long.
      
      This would cause a window starting at I/O address 0x80000000 to be
      treated as though it started at 0xffffffff80008000 instead, which
      should cause "no compatible bridge window" errors when we enumerate
      devices using that I/O space.
      
      The mmio and mmio_pref casts are not strictly necessary, but without
      them, correctness depends on the types of the PCI_MEMORY_RANGE_MASK and
      PCI_PREF_RANGE_MASK constants, which are not obvious from reading the
      local code.
      
      Found by Coverity (CID 138747 and CID 138748).
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      8f38eaca
    • B
      PCI: fix upstream P2P bridge checks when enabling OBFF and LTR · 8291550f
      Bjorn Helgaas 提交于
      pci_enable_obff() and pci_enable_ltr() incorrectly check "dev->bus" instead
      of "dev->bus->self" to determine whether the upstream device is a P2P
      bridge or a host bridge.  For devices on the root bus, the upstream device
      is a host bridge, "dev->bus != NULL" and "dev->bus->self == NULL", and we
      panic with a null pointer dereference.
      
      These functions should previously have panicked when called on devices
      supporting OBFF or LTR, so they should be regarded as untested.
      
      Found by Coverity (CID 143038 and CID 143039).
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      8291550f