1. 31 3月, 2009 5 次提交
  2. 27 3月, 2009 1 次提交
  3. 21 3月, 2009 5 次提交
  4. 20 3月, 2009 2 次提交
  5. 14 2月, 2009 1 次提交
  6. 05 2月, 2009 2 次提交
  7. 28 1月, 2009 2 次提交
    • R
      PCI PM: Do not wait for buses in B2 or B3 during resume · 476e7fae
      Rafael J. Wysocki 提交于
      pci_restore_standard_config() adds extra delay for PCI buses in
      low power states (B2 or B3), but this is only correct for buses in
      B2, because the buses in B3 are reset when they are put back into
      B0.  Thus we should wait for such buses to settle after the reset,
      but it's not a good idea to wait that long (1.1 s) with interrupts
      off.
      
      On the other hand, we have never waited for buses in B2 and B3
      during resume and it seems reasonable to go back to this well
      tested behaviour.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      476e7fae
    • R
      PCI PM: Power up devices before restoring their state · 48f67f54
      Rafael J. Wysocki 提交于
      Devices that have MSI-X enabled before suspend to RAM or hibernation
      and that are in a low power state during resume will not be handled
      correctly by pci_restore_standard_config().  Namely, it first calls
      pci_restore_state() which calls pci_restore_msi_state(), which in turn
      executes __pci_restore_msix_state() that accesses the device's memory
      space to restore the contents of the MSI-X table.  However, if the
      device is in a low power state at this point, it's memory space is
      not accessible.
      
      The easiest way to fix this potential problem is to make
      pci_restore_standard_config() call pci_restore_state() after
      it has put the device into the full power state, D0.  Fortunately,
      all of this is done with interrupts off, so the change of ordering
      should not cause any trouble.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      48f67f54
  8. 17 1月, 2009 2 次提交
    • R
      PCI PM: Restore standard config registers of all devices early · aa8c6c93
      Rafael J. Wysocki 提交于
      There is a problem in our handling of suspend-resume of PCI devices that
      many of them have their standard config registers restored with
      interrupts enabled and they are put into the full power state with
      interrupts enabled as well.  This may lead to the following scenario:
        * an interrupt vector is shared between two or more devices
        * one device is resumed earlier and generates an interrupt
        * the interrupt handler of another device tries to handle it and
          attempts to access the device the config space of which hasn't been
          restored yet and/or which still is in a low power state
        * the system crashes as a result
      
      To prevent this from happening we should restore the standard
      configuration registers of all devices with interrupts disabled and we
      should put them into the D0 power state right after that.
      Unfortunately, this cannot be done using the existing
      pci_set_power_state(), because it can sleep.  Also, to do it we have to
      make sure that the config spaces of all devices were actually saved
      during suspend.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      aa8c6c93
    • L
      Revert "PCI PM: Register power state of devices during initialization" · 50246dd4
      Linus Torvalds 提交于
      This reverts commit 98e6e286, as Yinghai
      Lu reports that it breaks kexec with at least the e1000 and e1000e
      drivers.  The reason is that the shutdown sequence puts the hardware
      into D3 sleep, and the commit causes us to claim that it then is in D0
      (running) state just because we don't understand the PM capabilities.
      
      Which then later makes "pci_set_power_state()" not do anything, and the
      device never wakes up properly and just returns 0xff to everything.
      Reported-by: NYinghai Lu <yinghai@kernel.org>
      Acked-by: NFrom: Rafael J. Wysocki <rjw@sisk.pl>
      Cc: Jesse Barnes <jesse.barnes@intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      50246dd4
  9. 08 1月, 2009 20 次提交