1. 06 8月, 2010 9 次提交
  2. 26 7月, 2010 1 次提交
    • E
      Driver-core: Always create class directories for classses that support namespaces. · 24b1442d
      Eric W. Biederman 提交于
      This fixes the regression in 2.6.35-rcX where bluetooth network devices
      would fail to be deleted from sysfs, causing their destruction and
      recreation to fail.  In addition this fixes the mac80211_hwsim driver
      where it would leave around sysfs files when the driver was removed.
      
      This problem is discussed at
        https://bugzilla.kernel.org/show_bug.cgi?id=16257
      
      The reason for the regression is that the network namespace support
      added to sysfs expects and requires that network devices be put in
      directories that can contain only network devices.
      
      Today get_device_parent almost provides that guarantee for all class
      devices, except for a specific exception when the parent of a class
      devices is a class device.  It would be nice to simply remove that
      arguably incorrect special case, but apparently the input devices depend
      on it being there.  So I have only removed it for class devices with
      network namespace support.  Which today are the network devices.
      
      It has been suggested that a better fix would be to change the parent
      device from a class device to a bus device, which in the case of the
      bluetooth driver would change /sys/class/bluetooth to /sys/bus/bluetoth,
      I can not see how we would avoid significant userspace breakage if we
      were to make that change.
      
      Adding an extra directory in the path to the device will also be
      userspace visible but it is much less likely to break things.
      Everything is still accessible from /sys/class (for example), and it
      fixes two bugs.  Adding an extra directory fixes a 3 year old regression
      introduced with the new sysfs layout that makes it impossible to rename
      bnep0 network devices to names that conflict with hci device attributes
      like hci_revsion.  Adding an additional directory removes the new
      failure modes introduced by the network namespace code.
      
      If it weren't for the regession in the renaming of network devices I
      would figure out how to just make the sysfs code deal with this
      configuration of devices.
      
      In summary this patch fixes regressions by changing:
      "/sys/class/bluetooth/hci0/bnep0" to "/sys/class/bluetooth/hci0/net/bnep0".
      Reported-by: NJohannes Berg <johannes@sipsolutions.net>
      Reported-by: NJanusz Krzysztofik <jkrzyszt@tis.icnet.pl>
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      24b1442d
  3. 19 7月, 2010 4 次提交
    • A
      PM / Runtime: Add runtime PM statistics (v3) · 8d4b9d1b
      Arjan van de Ven 提交于
      In order for PowerTOP to be able to report how well the new runtime PM is
      working for the various drivers, the kernel needs to export some basic
      statistics in sysfs.
      
      This patch adds two sysfs files in the runtime PM domain that expose the
      total time a device has been active, and the time a device has been
      suspended.
      
      With this PowerTOP can compute the activity percentage
      
      Active %age = 100 * (delta active) / (delta active + delta suspended)
      
      and present the information to the user.
      
      I've written the PowerTOP code (slated for version 1.12) already, and the
      output looks like this:
      
      Runtime Device Power Management statistics
      Active  Device name
       10.0%	06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller
      
      [version 2: fix stat update bugs noticed by Alan Stern]
      [version 3: rebase to -next and move the sysfs declaration]
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      8d4b9d1b
    • A
      PM / Runtime: Make runtime_status attribute not debug-only (v. 2) · 0fcb4eef
      Alan Stern 提交于
      This patch (as1404b) makes the runtime_status sysfs attribute available
      even in the absence of CONFIG_PM_ADVANCED_DEBUG, and it changes the
      routine to display "unsupported" when runtime PM is disabled for a
      device.  Although not strictly 100% accurate, this will almost always
      be correct.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Acked-by: NDominik Brodowski <linux@dominikbrodowski.net>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      0fcb4eef
    • R
      PM: Do not use dynamically allocated objects in pm_wakeup_event() · 4eb241e5
      Rafael J. Wysocki 提交于
      Originally, pm_wakeup_event() uses struct delayed_work objects,
      allocated with GFP_ATOMIC, to schedule the execution of pm_relax()
      in future.  However, as noted by Alan Stern, it is not necessary to
      do that, because all pm_wakeup_event() calls can use one static timer
      that will always be set to expire at the latest time passed to
      pm_wakeup_event().
      
      The modifications are based on the example code posted by Alan.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      4eb241e5
    • R
      PM: Make it possible to avoid races between wakeup and system sleep · c125e96f
      Rafael J. Wysocki 提交于
      One of the arguments during the suspend blockers discussion was that
      the mainline kernel didn't contain any mechanisms making it possible
      to avoid races between wakeup and system suspend.
      
      Generally, there are two problems in that area.  First, if a wakeup
      event occurs exactly when /sys/power/state is being written to, it
      may be delivered to user space right before the freezer kicks in, so
      the user space consumer of the event may not be able to process it
      before the system is suspended.  Second, if a wakeup event occurs
      after user space has been frozen, it is not generally guaranteed that
      the ongoing transition of the system into a sleep state will be
      aborted.
      
      To address these issues introduce a new global sysfs attribute,
      /sys/power/wakeup_count, associated with a running counter of wakeup
      events and three helper functions, pm_stay_awake(), pm_relax(), and
      pm_wakeup_event(), that may be used by kernel subsystems to control
      the behavior of this attribute and to request the PM core to abort
      system transitions into a sleep state already in progress.
      
      The /sys/power/wakeup_count file may be read from or written to by
      user space.  Reads will always succeed (unless interrupted by a
      signal) and return the current value of the wakeup events counter.
      Writes, however, will only succeed if the written number is equal to
      the current value of the wakeup events counter.  If a write is
      successful, it will cause the kernel to save the current value of the
      wakeup events counter and to abort the subsequent system transition
      into a sleep state if any wakeup events are reported after the write
      has returned.
      
      [The assumption is that before writing to /sys/power/state user space
      will first read from /sys/power/wakeup_count.  Next, user space
      consumers of wakeup events will have a chance to acknowledge or
      veto the upcoming system transition to a sleep state.  Finally, if
      the transition is allowed to proceed, /sys/power/wakeup_count will
      be written to and if that succeeds, /sys/power/state will be written
      to as well.  Still, if any wakeup events are reported to the PM core
      by kernel subsystems after that point, the transition will be
      aborted.]
      
      Additionally, put a wakeup events counter into struct dev_pm_info and
      make these per-device wakeup event counters available via sysfs,
      so that it's possible to check the activity of various wakeup event
      sources within the kernel.
      
      To illustrate how subsystems can use pm_wakeup_event(), make the
      low-level PCI runtime PM wakeup-handling code use it.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NJesse Barnes <jbarnes@virtuousgeek.org>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Acked-by: Nmarkgross <markgross@thegnar.org>
      Reviewed-by: NAlan Stern <stern@rowland.harvard.edu>
      c125e96f
  4. 05 7月, 2010 1 次提交
  5. 28 5月, 2010 1 次提交
  6. 25 5月, 2010 1 次提交
  7. 22 5月, 2010 19 次提交
  8. 18 5月, 2010 1 次提交
  9. 13 5月, 2010 1 次提交
    • P
      driver core: Early dev_name() depends on slab_is_available(). · 06fe53be
      Paul Mundt 提交于
      The early dev_name() setup needs to do an allocation which can only be
      satisfied under slab_is_available() conditions. Some of the early
      platform drivers may be initialized before this point, and those still
      need to contend themselves with an empty dev_name.
      
      This fixes up a regression with the SH earlyprintk which was bailing out
      prior to hitting the early probe path due to not being able to satisfy
      the early allocation. Other early platform drivers (such as the early
      timers) that need to match the dev name are sufficiently late that
      allocations are already possible.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      06fe53be
  10. 11 5月, 2010 2 次提交
    • M
      PM / platform_bus: Allow runtime PM by default · 543f2503
      Mark Brown 提交于
      Currently the default runtime PM callbacks for platform devices return
      -ENOSYS, preventing the use of runtime PM platforms until they have
      provided at least a default implementation. This hinders the use of
      runtime PM by devices which work with many platforms such as memory
      mapped devices, MFDs and on chip IPs shared by multiple architectures.
      
      Change the default implementation to the standard pm_generic_runtime
      one, allowing drivers to use runtime PM without per-architecture
      changes.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      543f2503
    • D
      PM / Runtime: Add sysfs debug files · c92445fa
      Dominik Brodowski 提交于
      Add a few sysfs files relating to runtime power management for
      advanced debug purposes:
      
      runtime_enabled: is runtime PM enabled for this device? States
      	are "enabled", "disabled", "forbidden" or a combination
      	of the latter two.
      
      runtime_status:	what state is the device in currently? E.g., it
      	reports "suspended" for runtime-suspended devices, and
              "active" for active devices. NOTE: if runtime_enabled
      	returns "disabled", the value of this file may not
      	reflect its physical state.
      
      runtime_usage: the runtime PM usage count of a device
      
      runtime_active_kids: the runtime PM children usage count of a device, or
      	0 if the ignore_children flag is set.
      
      Also, CONFIG_PM_SLEEP_ADVANCED_DEBUG is not defined in any Kconfig
      file, so replace it with CONFIG_PM_ADVANCED_DEBUG.
      Signed-off-by: NDominik Brodowski <linux@dominikbrodowski.net>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      c92445fa