1. 28 Apr, 2004 2 commits
    • Alan Stern's avatar
      [PATCH] USB: Lock devices during tree traversal · 59c2deed
      Alan Stern authored
      On Tue, 27 Apr 2004, Greg KH wrote:
      
      > So, what's next in this patch series?  :)
      
      Funny you should ask...
      
      While writing those patches I noted a problem, that the USB device tree
      can change while a process reading /proc/bus/usb/devices is traversing it,
      leading to an oops when a pointer to a no-longer-existing child device is
      dereferenced.  The ensuing discussion led to the conclusion that the
      devices' ->serialize locks should be acquired, top-down, while going
      through the tree.
      
      That means changing the code that populates the devices file and changing
      the code that adds and removes USB device structures.  This patch takes
      care of the first part.  I'm delaying the second part because that section
      of usbcore is still under change -- David Brownell's revisions have not
      yet been fully integrated.
      
      A similar change should be made to usb_find_device() and match_device() in
      usb.c.  You may want to add that yourself.
      59c2deed
    • Sean Young's avatar
      [PATCH] USB: add new USB PhidgetServo driver · df6ed992
      Sean Young authored
      Here is a driver for the usb servo controllers from Phidgets
      <http://www.phidgets.com/>, using sysfs.
      
      Note that the devices claim to be hid devices, so I've added them to the
      hid_blacklist (HID_QUIRK_IGNORE). A servo controller isn't really an hid
      device (or is it?).
      df6ed992
  2. 27 Apr, 2004 5 commits
  3. 26 Apr, 2004 9 commits
  4. 23 Apr, 2004 24 commits
    • Alan Stern's avatar
      [PATCH] USB: Altsetting update for USB net drivers · 581dc32c
      Alan Stern authored
      The only driver under usb/net that needed any altsetting changes was
      usbnet.  I'm not looking forward to going through all the source files
      under usb/serial. :-(
      581dc32c
    • Alan Stern's avatar
      [PATCH] USB: Altsetting update for USB misc drivers · cb2e2a36
      Alan Stern authored
      This is the altsetting update for the drivers under usb/misc.  As you can,
      not much was needed at all.
      cb2e2a36
    • Alan Stern's avatar
      [PATCH] USB: Altsetting updates for USB media drivers · 01a665f6
      Alan Stern authored
      This patch implements the new altsetting regime for the drivers under
      usb/media.  Not much needed to be changed.  I'm unable to test any of the
      changes, but at least they compile all right (except that I didn't even
      try to compile the pwc driver since it's marked BROKEN).
      
      The stv680 and w9968cf drivers still include an assumption that they are
      bound to interface number 0.  Since that the drivers are fairly tightly
      linked to a specific kind of device I didn't try to change those
      assumptions, but maybe they should be changed.
      01a665f6
    • Alan Stern's avatar
      [PATCH] USB: Cosmetic improvements for the UHCI driver · c72b4fbb
      Alan Stern authored
      This patch makes a few minor improvements to the appearance of the UHCI
      driver.  Please apply.
      c72b4fbb
    • Alan Stern's avatar
      [PATCH] USB: Ignore URB_NO_INTERRUPT flag in UHCI · c1f4a51d
      Alan Stern authored
      Following a suggestion of David Brownell's I have decided to remove
      support for the URB_NO_INTERRUPT flag in the UHCI driver.  The overall
      effect of the flag is to reduce the number of interrupts, thereby
      improving throughput somewhat while increasing the duration of the
      remaining IRQ handlers quite a lot (i.e., increasing interrupt variance).
      So I think we're better off without it.  Mind you, this is all in the
      absence of any firm measurements.
      
      A common case where this will come up is during usb-storage bulk
      transfers.  Such transfers are generally divided into scatter-gather
      components each corresponding to a single URB and transferring one memory
      page (4 KB).  While generating an interrupt for each one is a little
      faster than ideal -- about every 3 ms -- it's better than waiting until 64
      KB has been transferred and there are 1024 individual TDs to clean up
      during the IRQ.
      c1f4a51d
    • Duncan Sands's avatar
      [PATCH] USB usbfs: drop pointless racy check · 16443d6c
      Duncan Sands authored
      The check of interface->dev.driver requires a lock to be taken
      to protect against driver binding changes.  But in fact I think it
      is better just to drop the test.  The result is that the caller is
      required to claim an interface before changing the altsetting,
      which is consistent with the other routines that operate on
      interfaces.
      
       devio.c |    6 ++----
       1 files changed, 2 insertions(+), 4 deletions(-)
      16443d6c
    • Duncan Sands's avatar
      [PATCH] USB usbfs: missing lock in proc_getdriver · c057908f
      Duncan Sands authored
      Hi Oliver,
      
      > I expect it to rarely matter, but it might matter now and then. It's
      > just a question of hygiene. If you are using a temporary buffer I'd
      > like to see it used to full advantage. So either drop the lock or do
      > a direct copy. I'd prefer the first option your patch implemented.
      
      I agree.  Greg, please consider applying the updated patch:
      
      
      
      Protect against driver binding changes while reading the driver name.
      c057908f
    • Duncan Sands's avatar
      [PATCH] USB usbfs: destroy submitted urbs only on the disconnected interface · d4b73114
      Duncan Sands authored
      The remaining three patches contain miscellaneous fixes to usbfs.
      This one fixes up the disconnect callback to only shoot down urbs
      on the disconnected interface, and not on all interfaces.  It also adds
      a sanity check (this check is pointless because the interface could
      never have been claimed in the first place if it failed, but I feel better
      having it there).
      
       devio.c |    6 ++++--
       1 files changed, 4 insertions(+), 2 deletions(-)
      d4b73114
    • Duncan Sands's avatar
      [PATCH] USB usbfs: fix up releaseintf · c441f19b
      Duncan Sands authored
      The semaphore is now taken in the callers.
      
       devio.c |    2 --
       1 files changed, 2 deletions(-)
      c441f19b
    • Duncan Sands's avatar
      [PATCH] USB usbfs: fix up proc_ioctl · 2422de2c
      Duncan Sands authored
      The semaphore is now taken in the caller.
      
       devio.c |    2 --
       1 files changed, 2 deletions(-)
      2422de2c
    • Duncan Sands's avatar
      [PATCH] USB usbfs: fix up proc_setconfig · fb6f56a6
      Duncan Sands authored
      The semaphore is now taken in the caller.
      
       devio.c |    2 --
       1 files changed, 2 deletions(-)
      fb6f56a6
    • Duncan Sands's avatar
      [PATCH] USB usbfs: remove obsolete comment from proc_resetdevice · e8f366d4
      Duncan Sands authored
       devio.c |    3 ---
       1 files changed, 3 deletions(-)
      e8f366d4
    • Duncan Sands's avatar
      [PATCH] USB usbfs: replace the per-file semaphore with the per-device semaphore · f6380455
      Duncan Sands authored
       devio.c		|   43 +++++++++++++++++++++++--------------------
       usbdevice_fs.h	|    1 -
       2 files changed, 23 insertions(+), 21 deletions(-)
      f6380455
    • Duncan Sands's avatar
      [PATCH] USB usbfs: take a reference to the usb device · 8e082a0d
      Duncan Sands authored
      Hi Greg, this is the first of a series of patches that replace the
      per-file semaphore ps->devsem with the per-device semaphore
      ps->dev->serialize.  The role of devsem was to protect against
      device disconnection.  This can be done equally well using
      ps->dev->serialize.  On the other hand, ps->dev->serialize
      protects against configuration and other changes, and has
      already been introduced into usbfs in several places.  Using
      just one semaphore simplifies the code and removes some
      remaining race conditions.  It should also fix the oopses some
      people have been seeing.  In this first patch, a reference is
      taken to the usb device as long as the usbfs file is open.  That
      way we can use ps->dev->serialize for as long as ps exists.
      
       devio.c |   27 ++++++++++++++++-----------
       inode.c |    3 ---
       2 files changed, 16 insertions(+), 14 deletions(-)
      8e082a0d
    • David Brownell's avatar
      [PATCH] USB: khubd fixes · 75f00f32
      David Brownell authored
      This goes on top of the other enumeration patch I just sent,
      to handle some dubious and/or broken hub configurations better.
      
      
      Make khubd handle some cases better:
      
       - Track power budget for bus-powered hubs.  This version only warns
         when the budgets are exceeded.  Eventually, the budgets should help
         prevent such errors.
      
       - Rejects illegal USB setup:  two consecutive bus powered hubs
         would exceed the voltage drop budget, causing much flakiness.
      
       - For hosts with high speed hubs, warn when devices are hooked up
         to full speed hubs if they'd be faster on a high speed one.
      
       - For hubs that don't do power switching, don't try to use it
      
       - For hubs that aren't self-powered, don't report local power status
      75f00f32
    • David Brownell's avatar
      [PATCH] USB: re-factor enumeration logic · f0b314c4
      David Brownell authored
      This is an update to some patches from the December/January
      timeframe, which will help sort out some of the mess for
      drivers that need to use the reset logic.  It's one of the
      last significant patches in my gadget-2.6 tree that haven't
      yet been merged into the main kernel tree.
      
      
      More refactoring of the enumeration code paths:
      
       * The first half of usb_new_device() becomes the second half of a new
         hub_port_init() routine (resets, sets address, gets descriptor)
      
       * The middle chunk of hub_port_connect_change() becomes the first half
         of that new hub_port_init() routine.
      
       * Khubd uses that new routine in hub_port_connect_change().
      
       * Now usb_new_device() cleans up better after faults, and has
         a more useful locking policy (caller owns dev->serialize).
      
       * Has related minor cleanups including commenting some of
         the curious request sequences coming from khubd.
      
      Refactoring means a lot of the current usb_reset_device() logic won't
      need to stay an imperfect clone of the enumeration code ... soon, it
      can just call hub_port_init().
      
      Even without touching usb_reset_device(), this eliminates a deadlock.
      Previously, address0_sem was used both during probe and during reset,
      so probe routines can't implement DFU firmware download (involves a
      reset; DFU also uncovers other problems) or safely recover from probe
      faults by resetting (usb-storage can try that).  Now that lock is no
      longer held during probe(); so those deadlocks are gone.  (And some
      drivers, like at76c503, can start to remove ugly workarounds.)
      f0b314c4
    • David Brownell's avatar
      [PATCH] USB: usbtest, smp unlink modes · ce77b50c
      David Brownell authored
      Handle some SMP-visible unlink states better.
      ce77b50c
    • Greg Kroah-Hartman's avatar
    • Alan Stern's avatar
      [PATCH] USB: Eliminate dead code from the UHCI driver · 85d0f7fa
      Alan Stern authored
      I'm not sure what this piece of code is doing in the UHCI driver.  It
      looks like someone envisioned queuing several URBs for the same endpoint
      simultaneously.  Anyway, the driver can't do that and this code can never
      run.
      85d0f7fa
    • Alan Stern's avatar
      [PATCH] USB: Implement endpoint_disable() for UHCI · 44fedd70
      Alan Stern authored
      This patch implements the endpoint_disable method for the UHCI driver, as
      you requested a while back.  It guarantees that during unbinding events
      (disconnect, configuration change, rmmod) the UHCI driver will have
      finished using every URB for the interface being unbound.  It doesn't
      quite guarantee that the completion handlers will have finished running,
      but it would take a pretty unlikely race to violate that assumption.  (I
      think it's the same with the OHCI and EHCI drivers.)
      
      Despite the patch numbering this one applies _after_ as249, which is a
      more important bugfix.
      44fedd70
    • Alan Stern's avatar
      [PATCH] USB: unusual_devs.h update · bfdcf3ef
      Alan Stern authored
      On Tue, 20 Apr 2004, Damian Ivereigh wrote:
      
      > Here is the output of dmesg when plugging in an IBM USB MemKey
      >
      > usb-storage: This device (0a16,8888,0100 S 06 P 50) has unneeded SubClass and Protocol entries in unusual_devs.h
      >    Please send a copy of this message to <linux-usb-devel@lists.sourceforge.net>
      
      Thank you for sending this in.  Greg and Pete, here's the patch.
      bfdcf3ef
    • Alan Stern's avatar
      [PATCH] USB: Remove unusual_devs entries for Minolta DiMAGE 7, 7Hi · d22cb6bc
      Alan Stern authored
      It looks safe to conclude that the unusual_devs.h entries for the Minolta
      DiMAGE 7x cameras aren't needed.  (Michael has tested the 7Hi and it's
      definitely unnecessary.)  The two other DiMAGE entries probably aren't
      needed either, but we don't have any evidence of that so I'm leaving them.
      d22cb6bc
    • David Brownell's avatar
      [PATCH] USB: root hubs can report remote wakeup feature · 1d6569cd
      David Brownell authored
      The patch lets HCDs report the root hub remote wakeup feature to usbcore
      through config descriptors, and lets usbcore say whether or not remote
      wakeup (of host from sleep, by devices) should be enabled.
      
      Both OHCI and UHCI HCDs have some remote wakeup support already; I'm not
      too sure how well it works.  Given (separate) patches, their root hubs
      can start to act more like other hubs in this area too.  That'll make
      it easier to start using USB suspend mode.
      1d6569cd
    • David Brownell's avatar
      [PATCH] USB: fix usbfs iso interval problem · 2aad220d
      David Brownell authored
      In 2.6, ISO transfers on USB require a value for urb->interval ... which
      usbfs didn't provide (until this patch), or let user mode drivers specify.
      
      This patch initializes the urb->interval from the endpoint's descriptor,
      so ISO transfers should now work from userspace.  It also fixes a related
      problem for interrupt transfers.
      2aad220d