1. 21 3月, 2009 2 次提交
  2. 05 2月, 2009 4 次提交
  3. 28 1月, 2009 2 次提交
    • R
      PCI PM: Fix hibernation breakage on EeePC 701 · 545ffd58
      Rafael J. Wysocki 提交于
      Hibernation breaks on EeePC 701 as a result of attempting to put one
      of its (driverless) devices into a low power state.  Avoid that by
      not attepmting to power manage driverless devices during hibernation.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Reported-and-tested-by: NAlan Jenkins <alan-jenkins@tuffmail.co.uk>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      545ffd58
    • R
      PCI PM: Fix suspend error paths and testing facility breakage · 418e4da3
      Rafael J. Wysocki 提交于
      If one of device drivers refuses to suspend by returning error code
      from its ->suspend() callback, the devices that have already been
      suspended are resumed by executing their drivers' ->resume()
      callbacks.  Some of these callbacks expect the device's
      configuration space to be restored if the device has been put into
      D3 before they are called.  Unfortunately, this mechanism has been
      broken by recent changes moving the restoration of config spaces
      of some devices (most importantly, USB controllers and HDA Intel)
      into the resume callbacks executed with interrupts off.  Obviously,
      these callbacks are not invoked in the suspend error path and, as a
      result, the system cannot be successfully brought back into the
      working state in case of a suspend error.  The same thing happens
      in the hibernation error path right before putting the system into
      S4.
      
      Similarly, the suspend testing facility associated with the
      /sys/power/pm_test file is broken, because it uses the very same
      mechanism that is used in the suspend and hibernation error paths.
      
      Fix the breakage by making the PCI core restore the configuration
      spaces of PCI devices that haven't been restored already before
      pci_pm_resume() is called for those devices by the PM core.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      418e4da3
  4. 17 1月, 2009 1 次提交
    • 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
  5. 08 1月, 2009 11 次提交
  6. 07 1月, 2009 2 次提交
    • R
      PCI: Rework default handling of suspend and resume · 355a72d7
      Rafael J. Wysocki 提交于
      Rework the handling of suspend and resume of PCI devices which have
      no drivers or the drivers of which do not provide any suspend-resume
      callbacks in such a way that their standard PCI configuration
      registers will be saved and restored with interrupts disabled.  This
      should prevent such devices, including PCI bridges, from being
      resumed too late to be able to function correctly during the resume
      of the other PCI devices that may depend on them.
      
      Also, to remove one possible source of future confusion, drop the
      default handling of suspend and resume for PCI devices with drivers
      providing the 'pm' object introduced by the new suspend-resume
      framework (there are no such PCI drivers at the moment).
      
      This patch addresses the regression from 2.6.26 tracked as
      http://bugzilla.kernel.org/show_bug.cgi?id=12121 .
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      355a72d7
    • R
      PM: Simplify the new suspend/hibernation framework for devices · adf09493
      Rafael J. Wysocki 提交于
      PM: Simplify the new suspend/hibernation framework for devices
      
      Following the discussion at the Kernel Summit, simplify the new
      device PM framework by merging 'struct pm_ops' and
      'struct pm_ext_ops' and removing pointers to 'struct pm_ext_ops'
      from 'struct platform_driver' and 'struct pci_driver'.
      
      After this change, the suspend/hibernation callbacks will only
      reside in 'struct device_driver' as well as at the bus type/
      device class/device type level.  Accordingly, PCI and platform
      device drivers are now expected to put their suspend/hibernation
      callbacks into the 'struct device_driver' embedded in
      'struct pci_driver' or 'struct platform_driver', respectively.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NPavel Machek <pavel@suse.cz>
      Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      adf09493
  7. 21 10月, 2008 2 次提交
  8. 11 6月, 2008 2 次提交
  9. 24 5月, 2008 1 次提交
  10. 30 4月, 2008 1 次提交
    • Y
      pci/irq: let pci_device_shutdown to call pci_msi_shutdown v2 · d52877c7
      Yinghai Lu 提交于
      [PATCH 2/2] pci/irq: let pci_device_shutdown to call pci_msi_shutdown v2
      
      this change
      
      | commit 23a274c8
      | Author: Prakash, Sathya <sathya.prakash@lsi.com>
      | Date:   Fri Mar 7 15:53:21 2008 +0530
      |
      |     [SCSI] mpt fusion: Enable MSI by default for SAS controllers
      |
      |     This patch modifies the driver to enable MSI by default for all SAS chips.
      |
      |     Signed-off-by: Sathya Prakash <sathya.prakash@lsi.com>
      |     Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
      |
      Causes the kexec of a RHEL 5.1 kernel to fail.
      
      root casue: the rhel 5.1 kernel still uses INTx emulation.  and
      mptscsih_shutdown doesn't call pci_disable_msi to reenable INTx on kexec path
      
      So call pci_msi_shutdown in the shutdown path to do the same thing to msix
      Signed-off-by: NYinghai Lu <yhlu.kernel@gmail.com>
      Signed-off-by: NJesse Barnes <jbarnes@hobbes.lan>
      d52877c7
  11. 20 4月, 2008 1 次提交
    • M
      generic: use new set_cpus_allowed_ptr function · f70316da
      Mike Travis 提交于
        * Use new set_cpus_allowed_ptr() function added by previous patch,
          which instead of passing the "newly allowed cpus" cpumask_t arg
          by value,  pass it by pointer:
      
          -int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask)
          +int set_cpus_allowed_ptr(struct task_struct *p, const cpumask_t *new_mask)
      
        * Modify CPU_MASK_ALL
      
      Depends on:
      	[sched-devel]: sched: add new set_cpus_allowed_ptr function
      Signed-off-by: NMike Travis <travis@sgi.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f70316da
  12. 02 2月, 2008 1 次提交
    • L
      PCI: Mem Policy: fix mempolicy usage in pci driver · 74e27e44
      Lee Schermerhorn 提交于
      In an attempt to ensure memory allocation from the local node, the pci
      driver temporarily replaces the current task's memory policy with the
      system default policy.  Trying to be a good citizen, the driver then call's
      mpol_get() on the new policy.  When it's finished probing, it undoes the
      '_get by calling mpol_free() [on the system default policy] and then
      restores the current task's saved mempolicy.
      
      A couple of issues here:
      
      1) it's never necessary to set a task's mempolicy to the
         system default policy in order to get system default
         allocation behavior.  Simply set the current task's
         mempolicy to NULL and allocations will fall back to
         system default policy.
      
      2) we should never [need to] call mpol_free() on the system
         default policy.  [I plan on trapping this with a VM_BUG_ON()
         in a subsequent patch.]
      
      This patch removes the calls to mpol_get() and mpol_free()
      and uses NULL for the temporary task mempolicy to effect
      default allocation behavior.
      Signed-off-by: NLee Schermerhorn <lee.schermerhorn@hp.com>
      Acked-by: NChristoph Lameter <clameter@sgi.com>
      Acked-by: NMel Gorman <mel@csn.ul.ie>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      74e27e44
  13. 25 1月, 2008 2 次提交
  14. 06 11月, 2007 1 次提交
  15. 13 10月, 2007 2 次提交
  16. 01 8月, 2007 1 次提交
  17. 09 5月, 2007 1 次提交
  18. 03 5月, 2007 2 次提交
  19. 28 4月, 2007 1 次提交