1. 17 10月, 2008 5 次提交
    • D
      W1: feature, enable hardware strong pullup · 6a158c0d
      David Fries 提交于
      Add a strong pullup option to the w1 system.  This supplies extra power
      for parasite powered devices.  There is a w1_master_pullup sysfs entry and
      enable_pullup module parameter to enable or disable the strong pullup.
      
      The one wire bus requires at a minimum one wire and ground.  The common
      wire is used for sending and receiving data as well as supplying power to
      devices that are parasite powered of which temperature sensors can be one
      example.  The bus must be idle and left high while a temperature
      conversion is in progress, in addition the normal pullup resister on
      larger networks or even higher temperatures might not supply enough power.
       The pullup resister can't provide too much pullup current, because
      devices need to pull the bus down to write a value.  This enables the
      strong pullup for supported hardware, which can supply more current when
      requested.  Unsupported hardware will just delay with the bus high.
      
      The hardware USB 2490 one wire bus master has a bit on some commands which
      will enable the strong pullup as soon as the command finishes executing.
      To use strong pullup, call the new w1_next_pullup function to register the
      duration.  The next write command will call set_pullup before sending the
      data, and reset the duration to zero once it returns.
      
      Switched from simple_strtol to strict_strtol.
      Signed-off-by: NDavid Fries <david@fries.net>
      Cc: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6a158c0d
    • D
      W1: w1_process, block or sleep · 3c52e4e6
      David Fries 提交于
      The w1_process thread's sleeping and termination has been modified.
      msleep_interruptible was replaced by schedule_timeout and schedule to
      allow for kthread_stop and wake_up_process to interrupt the sleep and the
      unbounded sleeping when a bus search is disabled.  The W1_MASTER_NEED_EXIT
      and flags variable were removed as they were redundant with
      kthread_should_stop and kthread_stop.  If w1_process is sleeping,
      requesting a search will immediately wake it up rather than waiting for
      the end of msleep_interruptible previously.
      Signed-off-by: NDavid Fries <david@fries.net>
      Signed-off-by: NEvgeniy Polyakov <johnpol@2ka.mipt.ru>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3c52e4e6
    • D
      W1: don't delay search start · 01e14d6d
      David Fries 提交于
      Move the creation of the w1_process thread to after the device has been
      initialized.  This way w1_process doesn't have to check to see if it has
      been initialized and the bus search can proceed without sleeping.  That
      also eliminates two checks in the w1_process loop.  The sleep now happens
      at the end of the loop not the beginning.
      
      Also added a comment for why the atomic_set was 2.
      Signed-off-by: NDavid Fries <david@fries.net>
      Signed-off-by: NEvgeniy Polyakov <johnpol@2ka.mipt.ru>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      01e14d6d
    • D
      W1: abort search early on on exit · 0d671b27
      David Fries 提交于
      Early abort if the master driver or the hardware goes away in the middle
      of a bus search operation.  The alternative is to spam the print buffer up
      to 64*64 times with read errors in the case of USB.
      Signed-off-by: NDavid Fries <david@fries.net>
      Signed-off-by: NEvgeniy Polyakov <johnpol@2ka.mipt.ru>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0d671b27
    • D
      W1: fix deadlocks and remove w1_control_thread · c30c9b15
      David Fries 提交于
      w1_control_thread was removed which would wake up every second and process
      newly registered family codes and complete some final cleanup for a
      removed master.  Those routines were moved to the threads that were
      previously requesting those operations.  A new function
      w1_reconnect_slaves takes care of reconnecting existing slave devices when
      a new family code is registered or removed.  The removal case was missing
      and would cause a deadlock waiting for the family code reference count to
      decrease, which will now happen.  A problem with registering a family code
      was fixed.  A slave device would be unattached if it wasn't yet claimed,
      then attached at the end of the list, two unclaimed slaves would cause an
      infinite loop.
      
      The struct w1_bus_master.search now takes a pointer to the struct
      w1_master device to avoid searching for it, which would have caused a
      lock ordering deadlock with the removal of w1_control_thread.
      Signed-off-by: NDavid Fries <david@fries.net>
      Signed-off-by: NEvgeniy Polyakov <johnpol@2ka.mipt.ru>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c30c9b15
  2. 07 2月, 2008 1 次提交
  3. 15 1月, 2008 1 次提交
  4. 13 10月, 2007 1 次提交
    • K
      Driver core: change add_uevent_var to use a struct · 7eff2e7a
      Kay Sievers 提交于
      This changes the uevent buffer functions to use a struct instead of a
      long list of parameters. It does no longer require the caller to do the
      proper buffer termination and size accounting, which is currently wrong
      in some places. It fixes a known bug where parts of the uevent
      environment are overwritten because of wrong index calculations.
      
      Many thanks to Mathieu Desnoyers for finding bugs and improving the
      error handling.
      Signed-off-by: NKay Sievers <kay.sievers@vrfy.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      7eff2e7a
  5. 25 9月, 2007 1 次提交
  6. 20 7月, 2007 1 次提交
  7. 18 7月, 2007 1 次提交
    • R
      Freezer: make kernel threads nonfreezable by default · 83144186
      Rafael J. Wysocki 提交于
      Currently, the freezer treats all tasks as freezable, except for the kernel
      threads that explicitly set the PF_NOFREEZE flag for themselves.  This
      approach is problematic, since it requires every kernel thread to either
      set PF_NOFREEZE explicitly, or call try_to_freeze(), even if it doesn't
      care for the freezing of tasks at all.
      
      It seems better to only require the kernel threads that want to or need to
      be frozen to use some freezer-related code and to remove any
      freezer-related code from the other (nonfreezable) kernel threads, which is
      done in this patch.
      
      The patch causes all kernel threads to be nonfreezable by default (ie.  to
      have PF_NOFREEZE set by default) and introduces the set_freezable()
      function that should be called by the freezable kernel threads in order to
      unset PF_NOFREEZE.  It also makes all of the currently freezable kernel
      threads call set_freezable(), so it shouldn't cause any (intentional)
      change of behaviour to appear.  Additionally, it updates documentation to
      describe the freezing of tasks more accurately.
      
      [akpm@linux-foundation.org: build fixes]
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NNigel Cunningham <nigel@nigel.suspend2.net>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Oleg Nesterov <oleg@tv-sign.ru>
      Cc: Gautham R Shenoy <ego@in.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      83144186
  8. 12 7月, 2007 2 次提交
    • Z
      sysfs: add parameter "struct bin_attribute *" in .read/.write methods for sysfs binary attributes · 91a69029
      Zhang Rui 提交于
      Well, first of all, I don't want to change so many files either.
      
      What I do:
      Adding a new parameter "struct bin_attribute *" in the
      .read/.write methods for the sysfs binary attributes.
      
      In fact, only the four lines change in fs/sysfs/bin.c and
      include/linux/sysfs.h do the real work.
      But I have to update all the files that use binary attributes
      to make them compatible with the new .read and .write methods.
      I'm not sure if I missed any. :(
      
      Why I do this:
      For a sysfs attribute, we can get a pointer pointing to the
      struct attribute in the .show/.store method,
      while we can't do this for the binary attributes.
      I don't know why this is different, but this does make it not
      so handy to use the binary attributes as the regular ones.
      So I think this patch is reasonable. :)
      
      Who benefits from it:
      The patch that exposes ACPI tables in sysfs
      requires such an improvement.
      All the table binary attributes share the same .read method.
      Parameter "struct bin_attribute *" is used to get
      the table signature and instance number which are used to
      distinguish different ACPI table binary attributes.
      
      Without this parameter, we need to offer different .read methods
      for different ACPI table binary attributes.
      This is impossible as there are various ACPI tables on different
      platforms, and we don't know what they are until they are loaded.
      Signed-off-by: NZhang Rui <rui.zhang@intel.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      91a69029
    • T
      sysfs: kill unnecessary attribute->owner · 7b595756
      Tejun Heo 提交于
      sysfs is now completely out of driver/module lifetime game.  After
      deletion, a sysfs node doesn't access anything outside sysfs proper,
      so there's no reason to hold onto the attribute owners.  Note that
      often the wrong modules were accounted for as owners leading to
      accessing removed modules.
      
      This patch kills now unnecessary attribute->owner.  Note that with
      this change, userland holding a sysfs node does not prevent the
      backing module from being unloaded.
      
      For more info regarding lifetime rule cleanup, please read the
      following message.
      
        http://article.gmane.org/gmane.linux.kernel/510293
      
      (tweaked by Greg to not delete the field just yet, to make it easier to
      merge things properly.)
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      7b595756
  9. 09 5月, 2007 1 次提交
  10. 08 12月, 2006 1 次提交
  11. 23 6月, 2006 5 次提交
  12. 24 3月, 2006 4 次提交
  13. 05 1月, 2006 1 次提交
  14. 15 10月, 2005 1 次提交
  15. 09 9月, 2005 6 次提交
  16. 13 8月, 2005 1 次提交
  17. 12 7月, 2005 1 次提交
  18. 26 6月, 2005 1 次提交
    • C
      [PATCH] Cleanup patch for process freezing · 3e1d1d28
      Christoph Lameter 提交于
      1. Establish a simple API for process freezing defined in linux/include/sched.h:
      
         frozen(process)		Check for frozen process
         freezing(process)		Check if a process is being frozen
         freeze(process)		Tell a process to freeze (go to refrigerator)
         thaw_process(process)	Restart process
         frozen_process(process)	Process is frozen now
      
      2. Remove all references to PF_FREEZE and PF_FROZEN from all
         kernel sources except sched.h
      
      3. Fix numerous locations where try_to_freeze is manually done by a driver
      
      4. Remove the argument that is no longer necessary from two function calls.
      
      5. Some whitespace cleanup
      
      6. Clear potential race in refrigerator (provides an open window of PF_FREEZE
         cleared before setting PF_FROZEN, recalc_sigpending does not check
         PF_FROZEN).
      
      This patch does not address the problem of freeze_processes() violating the rule
      that a task may only modify its own flags by setting PF_FREEZE. This is not clean
      in an SMP environment. freeze(process) is therefore not SMP safe!
      Signed-off-by: NChristoph Lameter <christoph@lameter.com>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      3e1d1d28
  19. 22 6月, 2005 5 次提交