11 Jul, 2008

1 commit


07 Jul, 2008

1 commit

  • This reverts commit e872154921a6b5256a3c412dd69158ac0b135176.

    Andrey Borzenkov reports that it resulted in a totally hung machine for
    him when loading the OHCI driver. Extensive netconsole capture with
    SysRq output shows that modprobe gets stuck in ohci_hub_status_data()
    when probing and enabling the OHCI controller, see for example

    http://lkml.org/lkml/2008/7/5/236

    for an analysis.

    The problem appears to be an interrupt flood triggered by the commit
    that gets reverted, and Andrey confirmed that the revert makes things
    work for him again.

    Reported-and-tested-by: Andrey Borzenkov
    Acked-by: Alan Stern
    Acked-by: David Brownell
    Cc: Greg Kroah-Hartman
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

04 Jul, 2008

13 commits

  • The reason for forcing a number of ports should be documented.

    Signed-off-by: Oliver Neukum
    Signed-off-by: Greg Kroah-Hartman

    Oliver Neukum
     
  • Fixes bugzilla.kernel.org #10868

    Signed-off-by: Oliver Neukum
    Signed-off-by: Greg Kroah-Hartman

    Oliver Neukum
     
  • As reported by Ken A Scott

    Cc: Ken A Scott
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • Thanks to umesh b for the information here.

    Cc: umesh b
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • This patch (as1111) fixes a bug in the hub driver. When a hub
    resumes, disconnections that occurred while the hub was suspended are
    lost.

    A completely different fix for this problem has already been accepted
    for 2.6.27; however the problem still needs to be handled in 2.6.26.

    Signed-off-by: Alan Stern
    Tested-by: Lukas Hejtmanek
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • 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: Stefan Becker
    Cc: stable
    Acked-by: David Brownell
    Acked-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Stefan Becker
     
  • 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
    Signed-off-by: Greg Kroah-Hartman

    Jon K Hellan
     
  • 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: Will Newton
    Signed-off-by: Greg Kroah-Hartman

    Will Newton
     
  • CY7C68310 chip also support cypress atacb "ATA command" pass_thru.

    Signed-off-by: Matthieu CASTET
    Signed-off-by: Greg Kroah-Hartman

    matthieu castet
     
  • 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: David Brownell
    Cc: Leonid
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    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: David Brownell
    Cc: Alan Stern
    Cc: Leonid
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    David Brownell
     
  • 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: Oliver Neukum
    Signed-off-by: Greg Kroah-Hartman

    Oliver Neukum
     
  • 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: Ben Dooks
    Acked-by: David Brownell
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Ben Dooks
     

18 Jun, 2008

1 commit


17 Jun, 2008

1 commit


12 Jun, 2008

4 commits

  • This patch tries to identify which devices are able to accept
    reset-resume handling, by checking that there is at least one
    interface driver bound and that all of the drivers have a reset_resume
    method defined. If these conditions don't hold then during resume
    processing, the device is logicall disconnected.

    This is only a temporary fix. Later on we will explicitly unbind
    drivers that can't handle reset-resumes.

    Signed-off-by: Linus Torvalds
    Signed-off-by: Alan Stern
    Cc: Oliver Neukum
    Cc: Pavel Machek
    Signed-off-by: Greg Kroah-Hartman

    Linus Torvalds
     
  • This fixes the bogus "io mem 0x00000000" message printed
    during driver init due to hcd->rsrc_start being assigned after
    the call to usb_add_hcd().

    Signed-off-by: Nate Case
    Acked-by: Sebastian Siewior
    Signed-off-by: Greg Kroah-Hartman

    Nate Case
     
  • Different tools generate slightly different formats of the isight
    firmware. Ensure that the firmware buffer is not overrun, while still
    ensuring that the correct amount of data is written if trailing data is
    present.

    Signed-off-by: Matthew Garrett
    Report-by: Justin Mattock
    Tested-by: Justin Mattock
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Matthew Garrett
     
  • USB: fix build bug in USB_ISIGHTFW

    -tip tree testing found this build bug:

    drivers/built-in.o: In function `isight_firmware_load':
    isight_firmware.c:(.text+0x1ade08): undefined reference to `request_firmware'
    isight_firmware.c:(.text+0x1adf9c): undefined reference to `release_firmware'

    select FW_LOADER in USB_ISIGHTFW.

    From: Ingo Molnar
    Signed-off-by: Greg Kroah-Hartman

    Ingo Molnar
     

09 Jun, 2008

1 commit


04 Jun, 2008

3 commits


30 May, 2008

15 commits

  • This reverts commit fa38dfcc56b5f6cce787f9aaa5d1830509213802.

    It wasn't really a regression and David and Alan are still working
    through the issues reported.

    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • UDC needs to release lock before calling out to gadget driver, since
    it may need to reenter. The change fixes kernel BUG observed on rt
    kernel.

    > kernel BUG at kernel/rtmutex.c:683!
    > stopped custom tracer.
    > Oops: Exception in kernel mode, sig: 5 [#1]
    > PREEMPT MPC834x ITX
    > NIP: c021629c LR: c0216270 CTR: 00000000
    > REGS: df761d70 TRAP: 0700 Not tainted (2.6.23.9-rt13)
    > MSR: 00021032 CR: 28000022 XER: 00000000
    > TASK = df632080[241] 'IRQ-38' THREAD: df760000
    > GPR00: 00000001 df761e20 df632080 00000000 11111111 00000000 df761e6c
    > 00000000
    > GPR08: df761e48 00000000 df761e50 00000000 80000000 ede5cdde 1fffd000
    > 00800000
    > GPR16: ffffffff 00000000 007fff00 00000040 00000000 007ffeb0 00000000
    > 1fff8b08
    > GPR24: 00000000 00000026 00000000 df79a320 c026b2e8 c02240bc 00009032
    > df79a320
    > NIP [c021629c] rt_spin_lock_slowlock+0x9c/0x200
    > LR [c0216270] rt_spin_lock_slowlock+0x70/0x200
    > Call Trace:
    > [df761e20] [c0216270] rt_spin_lock_slowlock+0x70/0x200 (unreliable)
    > [df761e90] [c0182828] fsl_ep_disable+0xcc/0x154
    > [df761eb0] [c0184d30] eth_reset_config+0x88/0x1d0
    > [df761ed0] [c0184ec0] eth_disconnect+0x48/0x64
    > [df761ef0] [c01831a4] reset_queues+0x60/0x78
    > [df761f00] [c0183b74] fsl_udc_irq+0x9b8/0xa58
    > [df761f50] [c003ef30] handle_IRQ_event+0x64/0x100
    > [df761f80] [c003f758] thread_simple_irq+0x6c/0xc8
    > [df761fa0] [c003f888] do_irqd+0xd4/0x2e4
    > [df761fd0] [c0032284] kthread+0x50/0x8c
    > [df761ff0] [c000f9b4] kernel_thread+0x44/0x60

    Signed-off-by: Li Yang
    Cc: Eugene T. Bordenkircher
    Acked-by: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    Li Yang
     
  • Add the interface info matching to all Huawei cards, as they all also
    contain a Mass Storage Device interface (usually containing Windows
    drivers) which should not get bound by this driver.

    See also drivers/usb/storage/unusual_devs.h

    Signed-off-by: Michael Karcher
    Signed-off-by: Greg Kroah-Hartman

    Michael Karcher
     
  • I've just got a USB GPRS/EDGE modem branded Manufacturer Micromax Model
    MMX610U (see http://www.airtel.in/level2_t3data.aspx?path=1/106/179)
    working by adding another product ID to pl2303. Modem info reports same
    module as Max Arnold's i.e.SIMCOM SIM600 but with product ID 0x0612
    (cf Ox0611).

    From: Steve Murphy
    Signed-off-by: Greg Kroah-Hartman

    Steve Murphy
     
  • Like the HP53{00,70} scanner other devices of the OEM Avision require
    the USB_QUIRK_STRING_FETCH_255 to correct set a configuration with
    "recent" Linux kernels.

    Signed-off-by: René Rebe
    Signed-off-by: Greg Kroah-Hartman

    René Rebe
     
  • This patch adds support for rev 2 of an existing unusual_devs entry
    enabling ROKR W5s to work. Greg, please apply.

    From: Javier Smaldone
    Signed-off-by: Phil Dibowitz
    Signed-off-by: Greg Kroah-Hartman

    Javier Smaldone
     
  • It turns out that the unusual_devs entry for the Motorola M600i needs
    another flag. This patch adds it. Thanks to Atte André Jensen
    .

    Signed-off-by: Phil Dibowitz
    Signed-off-by: Greg Kroah-Hartman

    Phil Dibowitz
     
  • This patch (as1101) updates the unusual_devs entry for the Cypress
    ATACB pass-through. The protocol field is changed from US_PR_BULK to
    US_PR_DEVICE, since the Cypress devices already set bInterfaceProtocol
    to Bulk-only.

    Signed-off-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • This patch (as1099) fixes a performance regression in ehci-hcd. The
    fundamental problem is that queue headers get removed from the
    schedule too quickly, since the code checks for a counter advancing
    rather than making an actual time-based check. The latency involved
    in removing the queue header and then relinking it can severely
    degrade certain kinds of workloads.

    The patch replaces a simple counter with a timestamp derived from the
    controller's uframe value. In addition, the delay for unlinking an
    idle queue header is increased from 5 ms to 10 ms; since some
    controllers (nVidia) have a latency of up to 1 ms for unlinking, this
    reduces the relative impact from 20% to 10%.

    Finally, a logical error left over from the IAA watchdog-timer
    conversion is corrected. Now the driver will always either unlink an
    idle queue header or set up a timer to unlink it later. The old code
    would sometimes fail to do either.

    Signed-off-by: Alan Stern
    Cc: David Brownell
    Cc: Leonid
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • This patch (as1098) changes the way ehci-hcd schedules its periodic
    Iso transfers. That the current scheduling code is wrong is clear on
    the face of it: Sometimes it returns -EL2NSYNC (meaning that an URB
    couldn't be scheduled because it was submitted too late), but it does
    this even when the URB_ISO_ASAP flag is set (meaning the URB should be
    scheduled as soon as possible).

    The new code properly implements as-soon-as-possible scheduling,
    assigning the next unexpired slot as the URB's starting point. It
    also is more careful about checking for Iso URB completion: It doesn't
    bother to check for activity during frames that are already over,
    and it allows for the possibility that some of the URB's packets may
    have raced the hardware when they were submitted and so never got used
    (the packet status is set to -EXDEV).

    This fixes problems several people have experienced with USB video
    applications.

    Signed-off-by: Alan Stern
    Acked-by: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • This patch (as1097) fixes a bug in the remote-wakeup handling in
    ehci-hcd. The driver currently does not keep track of whether the
    change-suspend feature is enabled for each port; the feature is
    automatically reset the first time it is read. But recent changes to
    the hub driver require that the feature be read at least twice in
    order to work properly.

    A bit-vector is added for storing the change-suspend feature values.

    Signed-off-by: Alan Stern
    Acked-by: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • This patch (as1096) fixes an annoying problem: When a full-speed or
    low-speed device is plugged into an EHCI controller, it fails to
    enumerate at high speed and then is handed over to the companion
    controller. But usbcore logs a misleading and unwanted error message
    when the high-speed enumeration fails.

    The patch adds a new HCD method, port_handed_over, which asks whether
    a port has been handed over to a companion controller. If it has, the
    error message is suppressed.

    Signed-off-by: Alan Stern
    CC: David Brownell
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • This patch (as1095) cleans up the HCD glue and several of the EHCI
    bus-glue files. The ehci->is_tdi_rh_tt flag is redundant, since it
    means the same thing as the hcd->has_tt flag, so it is removed and the
    other flag used in its place.

    Some of the bus-glue files didn't get the relinquish_port method added
    to their hc_driver structures. Although that routine currently
    doesn't do anything for controllers with an integrated TT, in the
    future it might. So the patch adds it where it is missing.

    Lastly, some of the bus-glue files have erroneous entries for their
    hc_driver's suspend and resume methods. These method pointers are
    specific to PCI and shouldn't be used otherwise.

    (The patch also includes an invisible whitespace fix.)

    Signed-off-by: Alan Stern
    Acked-by: David Brownell

    Alan Stern
     
  • This patch (as1094) changes the output of the "descriptors" binary
    attribute. Now it will contain the device descriptor followed by all
    the configuration descriptors, not just the descriptor for the current
    config.

    Userspace libraries want to have access to the kernel's cached
    descriptor information, so they can learn about device characteristics
    without having to wake up suspended devices. So far the only user of
    this attribute is the new libusb-1.0 library; thus changing its
    contents shouldn't cause any problems.

    This should be considered for 2.6.26, if for no other reason than to
    minimize the range of releases in which the attribute contains only the
    current config descriptor.

    Also, it doesn't hurt that the patch removes the device locking --
    which was formerly needed in order to know for certain which config was
    indeed current.

    Signed-off-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     
  • There is a potential deadlock when the usb_generic driver is unbound
    from a device. The problem is that generic_disconnect() is called
    with the device lock held, and it removes a bunch of device attributes
    from sysfs. If a user task happens to be running an attribute method
    at the time, the removal will block until the method returns. But at
    least one of the attribute methods (the store routine for power/level)
    needs to acquire the device lock!

    This patch (as1093) eliminates the deadlock by moving the calls to
    create and remove the sysfs attributes from the usb_generic driver
    into usb_new_device() and usb_disconnect(), where they can be invoked
    without holding the device lock.

    Besides, the other sysfs attributes are created when the device is
    registered and removed when the device is unregistered. So it seems
    only fitting for the extra attributes to be created and removed at the
    same time.

    Signed-off-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern