1. 04 7月, 2008 8 次提交
    • S
      USB: fix interrupt disabling for HCDs with shared interrupt handlers · de85422b
      Stefan Becker 提交于
      USB: fix interrupt disabling for HCDs with shared interrupt handlers
      
      As has been discussed several times on LKML, IRQF_SHARED | IRQF_DISABLED
      doesn't work reliably, i.e. a shared interrupt handler CAN'T be certain to
      be called with interrupts disabled. Most USB HCD handlers use IRQF_DISABLED
      and therefore havoc can break out if they share their interrupt with a
      handler that doesn't use it.
      
      On my test machine the yenta_socket interrupt handler (no IRQF_DISABLED)
      was registered before ehci_hcd and one uhci_hcd instance. Therefore all
      usb_hcd_irq() invocations for ehci_hcd and for one uhci_hcd instance
      happened with interrupts enabled. That led to random lockups as USB core
      HCD functions that acquire the same spinlock could be called twice
      from interrupt handlers.
      
      This patch updates usb_hcd_irq() to always disable/restore interrupts.
      usb_add_hcd() will silently remove any IRQF_DISABLED requested from HCD code.
      Signed-off-by: NStefan Becker <stefan.becker@nokia.com>
      Cc: stable <stable@kernel.org>
      Acked-by: NDavid Brownell <david-b@pacbell.net>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      de85422b
    • J
      USB: New device ID for ftdi_sio driver · 2542335c
      Jon K Hellan 提交于
      Here's a new device ID for the ftdio_sio driver.
      The diff is with linus's tree as of this morning.
      
      The device is the RigExpert Tiny USB Soundcard Transceiver Interface for ham
      radio.
      
      (I didn't actually test this. A fellow ham couldn't get the device to work, and
      I suggested binding the device ID using sysfs - see
      "http://jk.ufisa.uninett.no/usb/". However, he had had moved on to other things
      by then. I guess adding the device ID to the kernel "on spec" won't hurt.
      The relevant part of cat /proc/bus/usb/devices shows:
      
      T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
      D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
      P:  Vendor=0403 ProdID=ed22 Rev= 5.00
      S:  Manufacturer=FTDI
      S:  Product=MixW RigExpert Tiny
      S:  SerialNumber=00000000
      C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
      I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      E:  Ad=83(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      E:  Ad=04(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
      )
      
      From: Jon K Hellan <hellan@acm.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      
      2542335c
    • W
      sisusbvga: Fix oops on disconnect. · f15e3973
      Will Newton 提交于
      Remove dev_info call on disconnect. The sisusb_dev pointer may have been
      set to zero by sisusb_delete at this point causing an oops.
      
      The message does not provide any extra information over the standard USB
      subsystem output so removing it does not affect functionality.
      Signed-off-by: NWill Newton <will.newton@gmail.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      f15e3973
    • M
      USB: mass storage: new id for US_SC_CYP_ATACB · e72616f4
      matthieu castet 提交于
      CY7C68310 chip also support cypress atacb "ATA command" pass_thru.
      Signed-off-by: NMatthieu CASTET <castet.matthieu@free.fr>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      e72616f4
    • D
      USB: ohci - record data toggle after unlink · 29c8f6a7
      David Brownell 提交于
      This patch fixes a problem with OHCI where canceling bulk or
      interrupt URBs may lose track of the right data toggle.  This
      seems to be a longstanding bug, possibly dating back to the
      Linux 2.4 kernel, which stayed hidden because
      
       (a) about half the time the data toggle bit was correct;
       (b) canceling such URBs is unusual; and
       (c) the few drivers which cancel these URBs either
            [1] do it only as part of shutting down, or
            [2] have fault recovery logic, which recovers.
      
      For those transfer types, the toggle is normally written back
      into the ED when each TD is retired.  But canceling bypasses
      the mechanism used to retire TDs ... so on average, half the
      time the toggle bit will be invalid after cancelation.
      
      The fix is simple:  the toggle state of any canceled TDs are
      propagated back to the ED in the finish_unlinks function.
      
      (Issue found by leonidv11@gmail.com ...)
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Leonid <leonidv11@gmail.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      29c8f6a7
    • D
      USB: ehci - fix timer regression · 056761e5
      David Brownell 提交于
      This patch fixes a regression in the EHCI driver's TIMER_IO_WATCHDOG
      behavior.  The patch "USB: EHCI: add separate IAA watchdog timer" changed
      how that timer is handled, so that short timeouts on the remaining
      timer (unfortunately, overloaded) would never be used.
      
      This takes a more direct approach, reorganizing the code slightly to
      be explicit about only the I/O watchdog role now being overridable.
      It also replaces a now-obsolete comment describing older timer behavior.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Cc: Leonid <leonidv11@gmail.com>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      056761e5
    • O
      USB: fix cdc-acm resume() · 4b828abe
      Oliver Neukum 提交于
      cdc-acm has
      - a memory leak in resume()
      - will fail to reactivate the read code path if this is needed.
      his corrects it by deleting the useless relict code.
      Signed-off-by: NOliver Neukum <oneukum@suse.de>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      4b828abe
    • B
      OHCI: Fix problem if SM501 and another platform driver is selected · 3ee38d8b
      Ben Dooks 提交于
      If the SM501 and another platform driver, such as the SM501
      then we end up defining PLATFORM_DRIVER twice. This patch
      seperated the SM501 onto a seperate define of SM501_OHCI_DRIVER
      so that it can be selected without overwriting the original
      definition.
      Signed-off-by: NBen Dooks <ben-linux@fluff.org>
      Acked-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: stable <stable@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      3ee38d8b
  2. 03 7月, 2008 22 次提交
  3. 02 7月, 2008 10 次提交