Skip to content
  1. Mar 07, 2013
  2. Mar 05, 2013
    • Alan Stern's avatar
      USB: EHCI: don't check DMA values in QH overlays · feca7746
      Alan Stern authored
      This patch (as1661) fixes a rather obscure bug in ehci-hcd.  In a
      couple of places, the driver compares the DMA address stored in a QH's
      overlay region with the address of a particular qTD, in order to see
      whether that qTD is the one currently being processed by the hardware.
      (If it is then the status in the QH's overlay region is more
      up-to-date than the status in the qTD, and if it isn't then the
      overlay's value needs to be adjusted when the QH is added back to the
      active schedule.)
      
      However, DMA address in the overlay region isn't always valid.  It
      sometimes will contain a stale value, which may happen by coincidence
      to be equal to a qTD's DMA address.  Instead of checking the DMA
      address, we should check whether the overlay region is active and
      valid.  The patch tests the ACTIVE bit in the overlay, and clears this
      bit when the overlay becomes invalid (which happens when the
      currently-executing URB is unlinked).
      
      This is the second part of a fix for the regression reported at:
      
      	https://bugs.launchpad.net/bugs/1088733
      
      
      
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Reported-by: default avatarJoseph Salisbury <joseph.salisbury@canonical.com>
      Reported-and-tested-by: default avatarStephen Thirlwall <sdt@dr.com>
      CC: <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      feca7746
    • Alan Stern's avatar
      USB: EHCI: work around silicon bug in Intel's EHCI controllers · 6402c796
      Alan Stern authored
      This patch (as1660) works around a hardware problem present in some
      (if not all) Intel EHCI controllers.  After a QH has been unlinked
      from the async schedule and the corresponding IAA interrupt has
      occurred, the controller is not supposed access the QH and its qTDs.
      There certainly shouldn't be any more DMA writes to those structures.
      Nevertheless, Intel's controllers have been observed to perform a
      final writeback to the QH's overlay region and to the most recent qTD.
      For more information and a test program to determine whether this
      problem is present in a particular controller, see
      
      	http://marc.info/?l=linux-usb&m=135492071812265&w=2
      	http://marc.info/?l=linux-usb&m=136182570800963&w=2
      
      This patch works around the problem by always waiting for two IAA
      cycles when unlinking an async QH.  The extra IAA delay gives the
      controller time to perform its final writeback.
      
      Surprisingly enough, the effects of this silicon bug have gone
      undetected until quite recently.  More through luck than anything
      else, it hasn't caused any apparent problems.  However, it does
      interact badly with the path that follows this one, so it needs to be
      addressed.
      
      This is the first part of a fix for the regression reported at:
      
      	https://bugs.launchpad.net/bugs/1088733
      
      
      
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Tested-by: default avatarStephen Thirlwall <sdt@dr.com>
      CC: <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6402c796
    • Greg Kroah-Hartman's avatar
      Merge tag 'fixes-for-v3.9-rc2' of... · ea5301aa
      Greg Kroah-Hartman authored
      Merge tag 'fixes-for-v3.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-linus
      
      Felipe writes:
      
      "usb: fixes for v3.9-rc2
      
      A few drivers got their gadget->dev registration problems
      exposed by the removal of ->start()/->stop() functions from
      udc-core.c. All of such instances are now fixed.
      
      We're also fixing chipidea's mistake of registering private
      debugging sysfs files under the gadget's device. This is
      in preparation to complete removal of gadget->dev handling
      from all UDC drivers which will happen for v3.10 merge window.
      
      MUSB's Kconfig got a fix to avoid a non-buildable selection
      of its Kconfig choices.
      
      Some extra devm_ioremap_resource() are added here because they
      missed the merge window.
      
      Finally, we have a temporary fix linking function drivers
      before gadget drivers so they work fine when they're statically
      linked to the kernel. We've done it so since the real fix wouldn't
      fit the -rc cycle."
      ea5301aa
  3. Mar 04, 2013
  4. Mar 03, 2013