1. 17 10月, 2010 10 次提交
    • A
      PM / Runtime: Implement autosuspend support · 15bcb91d
      Alan Stern 提交于
      This patch (as1427) implements the "autosuspend" facility for runtime
      PM.  A few new fields are added to the dev_pm_info structure and
      several new PM helper functions are defined, for telling the PM core
      whether or not a device uses autosuspend, for setting the autosuspend
      delay, and for marking periods of device activity.
      
      Drivers that do not want to use autosuspend can continue using the
      same helper functions as before; their behavior will not change.  In
      addition, drivers supporting autosuspend can also call the old helper
      functions to get the old behavior.
      
      The details are all explained in Documentation/power/runtime_pm.txt
      and Documentation/ABI/testing/sysfs-devices-power.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      15bcb91d
    • A
      PM / Runtime: Add no_callbacks flag · 7490e442
      Alan Stern 提交于
      Some devices, such as USB interfaces, cannot be power-managed
      independently of their parents, i.e., they cannot be put in low power
      while the parent remains at full power.  This patch (as1425) creates a
      new "no_callbacks" flag, which tells the PM core not to invoke the
      runtime-PM callback routines for the such devices but instead to
      assume that the callbacks always succeed.  In addition, the
      non-debugging runtime-PM sysfs attributes for the devices are removed,
      since they are pretty much meaningless.
      
      The advantage of this scheme comes not so much from avoiding the
      callbacks themselves, but rather from the fact that without the need
      for a process context in which to run the callbacks, more work can be
      done in interrupt context.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      7490e442
    • A
      PM / Runtime: Combine runtime PM entry points · 140a6c94
      Alan Stern 提交于
      This patch (as1424) combines the various public entry points for the
      runtime PM routines into three simple functions: one for idle, one for
      suspend, and one for resume.  A new bitflag specifies whether or not
      to increment or decrement the usage_count field.
      
      The new entry points are named __pm_runtime_idle,
      __pm_runtime_suspend, and __pm_runtime_resume, to reflect that they
      are trampolines.  Simultaneously, the corresponding internal routines
      are renamed to rpm_idle, rpm_suspend, and rpm_resume.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      140a6c94
    • A
      PM / Runtime: Merge synchronous and async runtime routines · 1bfee5bc
      Alan Stern 提交于
      This patch (as1423) merges the asynchronous routines
      __pm_request_idle(), __pm_request_suspend(), and __pm_request_resume()
      with their synchronous counterparts.  The RPM_ASYNC bitflag argument
      serves to indicate what sort of operation to perform.
      
      In the course of performing this merger, it became apparent that the
      various functions don't all behave consistenly with regard to error
      reporting and cancellation of outstanding requests.  A new routine,
      rpm_check_suspend_allowed(), was written to centralize much of the
      testing, and the other functions were revised to follow a simple
      algorithm:
      
      	If the operation is disallowed because of the device's
      	settings or current state, return an error.
      
      	Cancel pending or scheduled requests of lower priority.
      
      	Schedule, queue, or perform the desired operation.
      
      A few special cases and exceptions are noted in comments.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      1bfee5bc
    • A
      PM / Runtime: Replace boolean arguments with bitflags · 3f9af051
      Alan Stern 提交于
      The "from_wq" argument in __pm_runtime_suspend() and
      __pm_runtime_resume() supposedly indicates whether or not the function
      was called by the PM workqueue thread, but in fact it isn't always
      used this way.  It really indicates whether or not the function should
      return early if the requested operation is already in progress.
      
      Along with this badly-named boolean argument, later patches in this
      series will add several other boolean arguments to these functions and
      others.  Therefore this patch (as1422) begins the conversion process
      by replacing from_wq with a bitflag argument.  The same bitflags are
      also used in __pm_runtime_get() and __pm_runtime_put(), where they
      indicate whether or not the operation should be asynchronous.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      3f9af051
    • A
      PM / Runtime: Move code in drivers/base/power/runtime.c · 4769373c
      Alan Stern 提交于
      This patch (as1421) moves the PM runtime accounting subroutines up to
      the beginning of runtime.c, taking them out of the middle of the
      functions that do the actual work.  No operational changes.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      4769373c
    • R
      PM: Fix potential issue with failing asynchronous suspend · 098dff73
      Rafael J. Wysocki 提交于
      There is a potential issue with the asynchronous suspend code that
      a device driver suspending asynchronously may not notice that it
      should back off.  There are two failing scenarions, (1) when the
      driver is waiting for a driver suspending synchronously to complete
      and that second driver returns error code, in which case async_error
      won't be set and the waiting driver will continue suspending and (2)
      after the driver has called device_pm_wait_for_dev() and the waited
      for driver returns error code, in which case the caller of
      device_pm_wait_for_dev() will not know that there was an error and
      will continue suspending.
      
      To fix this issue make __device_suspend() set async_error, so
      async_suspend() doesn't need to set it any more, and make
      device_pm_wait_for_dev() return async_error, so that its callers
      can check whether or not they should continue suspending.
      
      No more changes are necessary, since device_pm_wait_for_dev() is
      not used by any drivers' suspend routines.
      Reported-by: NColin Cross <ccross@android.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      098dff73
    • R
      PM / Wakeup: Introduce wakeup source objects and event statistics (v3) · 074037ec
      Rafael J. Wysocki 提交于
      Introduce struct wakeup_source for representing system wakeup sources
      within the kernel and for collecting statistics related to them.
      Make the recently introduced helper functions pm_wakeup_event(),
      pm_stay_awake() and pm_relax() use struct wakeup_source objects
      internally, so that wakeup statistics associated with wakeup devices
      can be collected and reported in a consistent way (the definition of
      pm_relax() is changed, which is harmless, because this function is
      not called directly by anyone yet).  Introduce new wakeup-related
      sysfs device attributes in /sys/devices/.../power for reporting the
      device wakeup statistics.
      
      Change the global wakeup events counters event_count and
      events_in_progress into atomic variables, so that it is not necessary
      to acquire a global spinlock in pm_wakeup_event(), pm_stay_awake()
      and pm_relax(), which should allow us to avoid lock contention in
      these functions on SMP systems with many wakeup devices.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      074037ec
    • K
      PM: Fix signed/unsigned warning in dpm_show_time() · 0702d9ee
      Kevin Cernekee 提交于
      Seen on MIPS32, gcc 4.4.3, 2.6.36-rc4:
      
      drivers/base/power/main.c: In function 'dpm_show_time':
      drivers/base/power/main.c:415: warning: comparison of distinct pointer types lacks a cast
      
      do_div() takes unsigned parameters:
      
      uint32_t do_div(uint64_t *n, uint32_t base);
      
      Using an unsigned variable for usecs64 should not cause any problems,
      because calltime >= starttime .
      Signed-off-by: NKevin Cernekee <cernekee@gmail.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      0702d9ee
    • O
      PM / Runtime: Lenient generic runtime pm callbacks · 05aa55dd
      Ohad Ben-Cohen 提交于
      Allow drivers, that belong to subsystems which use the generic
      runtime pm callbacks, not to define runtime pm suspend/resume handlers,
      by implicitly assuming success in such cases.
      
      This is needed to eliminate nop handlers that would otherwise be
      necessary by drivers which enable runtime pm, but don't need
      to do anything when their devices are runtime-suspended/resumed.
      Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
      Acked-by: NKevin Hilman <khilman@deeprootsystems.com>
      Acked-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      05aa55dd
  2. 16 10月, 2010 1 次提交
    • O
      mmc: sdio: fix SDIO suspend/resume regression · 1c8cf9c9
      Ohad Ben-Cohen 提交于
      Fix SDIO suspend/resume regression introduced by 4c2ef25f "mmc: fix
      all hangs related to mmc/sd card insert/removal during suspend/resume":
      
        PM: Syncing filesystems ... done.
        Freezing user space processes ... (elapsed 0.01 seconds) done.
        Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
        Suspending console(s) (use no_console_suspend to debug)
        pm_op(): platform_pm_suspend+0x0/0x5c returns -38
        PM: Device pxa2xx-mci.0 failed to suspend: error -38
        PM: Some devices failed to suspend
      
      4c2ef25f moved the card removal/insertion mechanism out of MMC's
      suspend/resume path and into pm notifiers (mmc_pm_notify), and that
      broke SDIO's expectation that mmc_suspend_host() will remove the card,
      and squash the error, in case -ENOSYS is returned from the bus suspend
      handler (mmc_sdio_suspend() in this case).
      
      mmc_sdio_suspend() is using this whenever at least one of the card's SDIO
      function drivers does not have suspend/resume handlers - in that case
      it is agreed to force removal of the entire card.
      
      This patch fixes this regression by trivially bringing back that part of
      mmc_suspend_host(), which was removed by 4c2ef25f.
      Reported-and-tested-by: NSven Neumann <s.neumann@raumfeld.com>
      Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
      Cc: Maxim Levitsky <maximlevitsky@gmail.com>
      Cc: <stable@kernel.org>
      Acked-by: NNicolas Pitre <nico@fluxnic.net>
      Signed-off-by: NChris Ball <cjb@laptop.org>
      1c8cf9c9
  3. 14 10月, 2010 3 次提交
    • D
      ioat2: fix performance regression · c50a898f
      Dan Williams 提交于
      Commit 07934481 "DMAENGINE: generic channel status v2" changed the interface for
      how dma channel progress is retrieved.  It inadvertently exported an internal
      helper function ioat_tx_status() instead of ioat_dma_tx_status().  The latter
      polls the hardware to get the latest completion state, while the helper just
      evaluates the current state without touching hardware.  The effect is that we
      end up waiting for completion timeouts or descriptor allocation errors before
      the completion state is updated.
      
      iperf (before fix):
      [SUM]  0.0-41.3 sec   364 MBytes  73.9 Mbits/sec
      
      iperf (after fix):
      [SUM]  0.0- 4.5 sec   499 MBytes   940 Mbits/sec
      
      This is a regression starting with 2.6.35.
      
      Cc: <stable@kernel.org>
      Cc: Dave Jiang <dave.jiang@intel.com>
      Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
      Cc: Linus Walleij <linus.walleij@stericsson.com>
      Cc: Maciej Sosnowski <maciej.sosnowski@intel.com>
      Reported-by: NRichard Scobie <richard@sauce.co.nz>
      Signed-off-by: NDan Williams <dan.j.williams@intel.com>
      c50a898f
    • B
      ehea: Fix a checksum issue on the receive path · 71085ce8
      Breno Leitao 提交于
      Currently we set all skbs with CHECKSUM_UNNECESSARY, even
      those whose protocol we don't know. This patch just
      add the CHECKSUM_COMPLETE tag for non TCP/UDP packets.
      Reported-by: NEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: NBreno Leitao <leitao@linux.vnet.ibm.com>
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      71085ce8
    • G
      net: allow FEC driver to use fixed PHY support · 6fcc040f
      Greg Ungerer 提交于
      At least one board using the FEC driver does not have a conventional
      PHY attached to it, it is directly connected to a somewhat simple
      ethernet switch (the board is the SnapGear/LITE, and the attached
      4-port ethernet switch is a RealTek RTL8305). This switch does not
      present the usual register interface of a PHY, it presents nothing.
      So a PHY scan will find nothing - it finds ID's of 0 for each PHY
      on the attached MII bus.
      
      After the FEC driver was changed to use phylib for supporting PHYs
      it no longer works on this particular board/switch setup.
      
      Add code support to use a fixed phy if no PHY is found on the MII bus.
      This is based on the way the cpmac.c driver solved this same problem.
      Signed-off-by: NGreg Ungerer <gerg@uclinux.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6fcc040f
  4. 13 10月, 2010 2 次提交
  5. 12 10月, 2010 11 次提交
  6. 11 10月, 2010 2 次提交
  7. 10 10月, 2010 3 次提交
  8. 09 10月, 2010 2 次提交
  9. 08 10月, 2010 1 次提交
  10. 07 10月, 2010 5 次提交