1. 17 Oct, 2012 40 commits
    • Paulo Zanoni's avatar
      drm/i915: make sure we write all the DIP data bytes · c948a535
      Paulo Zanoni authored
      commit adf00b26 upstream.
      
      ... even if the actual infoframe is smaller than the maximum possible
      size.
      
      If we don't write all the 32 DIP data bytes the InfoFrame ECC may not
      be correctly calculated in some cases (e.g., when changing the port),
      and this will lead to black screens on HDMI monitors. The ECC value is
      generated by the hardware.
      
      I don't see how this should break anything since we're writing 0 and
      that should be the correct value, so this patch should be safe.
      
      Notice that on IVB and older we actually have 64 bytes available for
      VIDEO_DIP_DATA, but only bytes 0-31 actually store infoframe data: the
      others are either read-only ECC values or marked as "reserved". On HSW
      we only have 32 bytes, and the ECC value is stored on its own separate
      read-only register. See BSpec.
      
      This patch fixes bug #46761, which is marked as a regression
      introduced by commit 4e89ee17:
          drm/i915: set the DIP port on ibx_write_infoframe
      
      Before commit 4e89 we were just failing to send AVI infoframes when we
      needed to change the port, which can lead to black screens in some
      cases. After commit 4e89 we started sending infoframes, but with a
      possibly wrong ECC value. After this patch I hope we start sending
      correct infoframes.
      
      Version 2:
        - Improve commit message
        - Try to make the code more clear
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=46761Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
      Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      [bwh: Backported to 3.2: only two write_infoframe functions to be modified]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      c948a535
    • Paulo Zanoni's avatar
      drm/i915: add some barriers when changing DIPs · 2887c281
      Paulo Zanoni authored
      commit 9d9740f0 upstream.
      
      On IVB and older, we basically have two registers: the control and the
      data register. We write a few consecutitve times to the control
      register, and we need these writes to arrive exactly in the specified
      order.
      
      Also, when we're changing the data register, we need to guarantee that
      anything written to the control register already arrived (since
      changing the control register can change where the data register
      points to). Also, we need to make sure all the writes to the data
      register happen exactly in the specified order, and we also *can't*
      read the data register during this process, since reading and/or
      writing it will change the place it points to.
      
      So invoke the "better safe than sorry" rule and just be careful and
      put barriers everywhere :)
      
      On HSW we still have a control register that we write many times, but
      we have many data registers.
      Demanded-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      [bwh: Backported to 3.2:
       - There are only two write_infoframe functions to be modified
       - The other VIDEO_DIP_CTL writes are in entirely different functions]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      2887c281
    • Sarah Sharp's avatar
      xhci: Intel Panther Point BEI quirk. · 7cd9c440
      Sarah Sharp authored
      commit 80fab3b2 upstream.
      
      When a device with an isochronous endpoint is behind a hub plugged into
      the Intel Panther Point xHCI host controller, and the driver submits
      multiple frames per URB, the xHCI driver will set the Block Event
      Interrupt (BEI) flag on all but the last TD for the URB.  This causes
      the host controller to place an event on the event ring, but not send an
      interrupt.  When the last TD for the URB completes, BEI is cleared, and
      we get an interrupt for the whole URB.
      
      However, under a Panther Point xHCI host controller, if the parent hub
      is unplugged when one or more events from transfers with BEI set are on
      the event ring, a port status change event is placed on the event ring,
      but no interrupt is generated.  This means URBs stop completing, and the
      USB device disconnect is not noticed.  Something like a USB headset will
      cause mplayer to hang when the device is disconnected.
      
      If another transfer is sent (such as running `sudo lsusb -v`), the next
      transfer event seems to "unstick" the event ring, the xHCI driver gets
      an interrupt, and the disconnect is reported to the USB core.
      
      The fix is not to use the BEI flag under the Panther Point xHCI host.
      This will impact power consumption and system responsiveness, because
      the xHCI driver will receive an interrupt for every frame in all
      isochronous URBs instead of once per URB.
      
      Intel chipset developers confirm that this bug will be hit if the BEI
      flag is used on any endpoint, not just ones that are behind a hub.
      
      This patch should be backported to kernels as old as 3.0, that contain
      the commit 69e848c2 "Intel xhci: Support
      EHCI/xHCI port switching."
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      7cd9c440
    • Sujith Manoharan's avatar
      ath9k: Disable ASPM only for AR9285 · 03b6b180
      Sujith Manoharan authored
      commit 046b6802 upstream.
      
      Currently, ASPM is disabled for all WLAN+BT combo chipsets
      when BTCOEX is enabled. This is incorrect since the workaround
      is required only for WB195, which is a AR9285+AR3011 combo
      solution. Fix this by checking for the HW version when enabling
      the workaround.
      Signed-off-by: default avatarSujith Manoharan <c_manoha@qca.qualcomm.com>
      Tested-by: default avatarPaul Stewart <pstew@chromium.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      [bwh: Backported to 3.2: ath9k_hw_get_btcoex_scheme() function is missing]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      03b6b180
    • Lin Ming's avatar
      ACPI: run _OSC after ACPI_FULL_INITIALIZATION · e7d2d979
      Lin Ming authored
      commit fc54ab72 upstream.
      
      The _OSC method may exist in module level code,
      so it must be called after ACPI_FULL_INITIALIZATION
      
      On some new platforms with Zero-Power-Optical-Disk-Drive (ZPODD)
      support, this fix is necessary to save power.
      Signed-off-by: default avatarLin Ming <ming.m.lin@intel.com>
      Tested-by: default avatarAaron Lu <aaron.lu@intel.com>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      e7d2d979
    • Antonio Ospite's avatar
      USB: ftdi_sio: add TIAO USB Multi-Protocol Adapter (TUMPA) support · 78b9c6cd
      Antonio Ospite authored
      commit 54575b05 upstream.
      
      TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA) is an FTDI FT2232H
      based device which provides an easily accessible JTAG, SPI, I2C, serial
      breakout.
      
      http://www.diygadget.com/tiao-usb-multi-protocol-adapter-jtag-spi-i2c-serial.html
      http://www.tiaowiki.com/w/TIAO_USB_Multi_Protocol_Adapter_User%27s_Manual
      
      FTDI FT2232H provides two serial channels (A and B), but on the TUMPA
      channel A is dedicated to JTAG/SPI while channel B can be used for
      UART/RS-232: use the ftdi_jtag_quirk to expose only channel B as
      a usb-serial interface to userspace.
      Signed-off-by: default avatarAntonio Ospite <ospite@studenti.unina.it>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      78b9c6cd
    • Vivek Gautam's avatar
      usb: host: xhci: Fix Null pointer dereferencing with 71c731a2 for non-x86 systems · 47fe8854
      Vivek Gautam authored
      commit 457a73d3 upstream.
      
      In 71c731a2: usb: host: xhci: Fix Compliance Mode on SN65LVPE502CP Hardware
      when extracting DMI strings (vendor or product_name) to mark them as quirk
      we may get NULL pointer in case of non-x86 systems which won't define
      CONFIG_DMI. Hence susbsequent strstr() calls crash while driver probing.
      
      So, returning 'false' here in case we get a NULL vendor or product_name.
      
      This is tested with ARM (exynos) system.
      
      This patch should be backported to stable kernels as old as 3.6, that
      contain the commit 71c731a2 "usb: host:
      xhci: Fix Compliance Mode on SN65LVPE502CP Hardware"
      Signed-off-by: default avatarVivek Gautam <gautam.vivek@samsung.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Reported-by: default avatarSebastian Gottschall (DD-WRT) <s.gottschall@dd-wrt.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      47fe8854
    • Michael Spang's avatar
      Increase XHCI suspend timeout to 16ms · 2d74f106
      Michael Spang authored
      commit a6e097df upstream.
      
      The Intel XHCI specification says that after clearing the run/stop bit
      the controller may take up to 16ms to halt. We've seen a device take
      14ms, which with the current timeout of 10ms causes the kernel to
      abort the suspend. Increasing the timeout to the recommended value
      fixes the problem.
      
      This patch should be backported to kernels as old as 2.6.37, that
      contain the commit 5535b1d5 "USB: xHCI:
      PCI power management implementation".
      Signed-off-by: default avatarMichael Spang <spang@chromium.org>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      2d74f106
    • Bart Van Assche's avatar
      scsi_dh_alua: Enable STPG for unavailable ports · b75790b5
      Bart Van Assche authored
      commit e47f8976 upstream.
      
      A quote from SPC-4: "While in the unavailable primary target port
      asymmetric access state, the device server shall support those of
      the following commands that it supports while in the active/optimized
      state: [ ... ] d) SET TARGET PORT GROUPS; [ ... ]". Hence enable
      sending STPG to a target port group that is in the unavailable state.
      Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
      Reviewed-by: default avatarMike Christie <michaelc@cs.wisc.edu>
      Acked-by: default avatarHannes Reinecke <hare@suse.de>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      b75790b5
    • Dan Williams's avatar
      scsi_remove_target: fix softlockup regression on hot remove · 85764e72
      Dan Williams authored
      commit bc3f02a7 upstream.
      
      John reports:
       BUG: soft lockup - CPU#2 stuck for 23s! [kworker/u:8:2202]
       [..]
       Call Trace:
        [<ffffffff8141782a>] scsi_remove_target+0xda/0x1f0
        [<ffffffff81421de5>] sas_rphy_remove+0x55/0x60
        [<ffffffff81421e01>] sas_rphy_delete+0x11/0x20
        [<ffffffff81421e35>] sas_port_delete+0x25/0x160
        [<ffffffff814549a3>] mptsas_del_end_device+0x183/0x270
      
      ...introduced by commit 3b661a92 "[SCSI] fix hot unplug vs async scan race".
      
      Don't restart lookup of more stargets in the multi-target case, just
      arrange to traverse the list once, on the assumption that new targets
      are always added at the end.  There is no guarantee that the target will
      change state in scsi_target_reap() so we can end up spinning if we
      restart.
      Acked-by: default avatarJack Wang <jack_wang@usish.com>
      LKML-Reference: <CAEhu1-6wq1YsNiscGMwP4ud0Q+MrViRzv=kcWCQSBNc8c68N5Q@mail.gmail.com>
      Reported-by: default avatarJohn Drescher <drescherjm@gmail.com>
      Tested-by: default avatarJohn Drescher <drescherjm@gmail.com>
      Signed-off-by: default avatarDan Williams <djbw@fb.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      85764e72
    • Benjamin Herrenschmidt's avatar
      ibmvscsi: Fix host config length field overflow · 9b6c30f5
      Benjamin Herrenschmidt authored
      commit 225c5696 upstream.
      
      The length field in the host config packet is only 16-bit long, so
      passing it 0x10000 (64K which is our standard PAGE_SIZE) doesn't
      work and result in an empty config from the server.
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Acked-by: default avatarRobert Jennings <rcj@linux.vnet.ibm.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      9b6c30f5
    • Martin Peschke's avatar
      zfcp: only access zfcp_scsi_dev for valid scsi_device · a7e99ace
      Martin Peschke authored
      commit d436de8c upstream.
      
      __scsi_remove_device (e.g. due to dev_loss_tmo) calls
      zfcp_scsi_slave_destroy which in turn sends a close LUN FSF request to
      the adapter. After 30 seconds without response,
      zfcp_erp_timeout_handler kicks the ERP thread failing the close LUN
      ERP action. zfcp_erp_wait in zfcp_erp_lun_shutdown_wait and thus
      zfcp_scsi_slave_destroy returns and then scsi_device is no longer
      valid. Sometime later the response to the close LUN FSF request may
      finally come in. However, commit
      b62a8d9b
      "[SCSI] zfcp: Use SCSI device data zfcp_scsi_dev instead of zfcp_unit"
      introduced a number of attempts to unconditionally access struct
      zfcp_scsi_dev through struct scsi_device causing a use-after-free.
      This leads to an Oops due to kernel page fault in one of:
      zfcp_fsf_abort_fcp_command_handler, zfcp_fsf_open_lun_handler,
      zfcp_fsf_close_lun_handler, zfcp_fsf_req_trace,
      zfcp_fsf_fcp_handler_common.
      Move dereferencing of zfcp private data zfcp_scsi_dev allocated in
      scsi_device via scsi_transport_reserve_device after the check for
      potentially aborted FSF request and thus no longer valid scsi_device.
      Only then assign sdev_to_zfcp(sdev) to the local auto variable struct
      zfcp_scsi_dev *zfcp_sdev.
      Signed-off-by: default avatarMartin Peschke <mpeschke@linux.vnet.ibm.com>
      Signed-off-by: default avatarSteffen Maier <maier@linux.vnet.ibm.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      a7e99ace
    • Steffen Maier's avatar
      zfcp: restore refcount check on port_remove · 54178d76
      Steffen Maier authored
      commit d99b601b upstream.
      
      Upstream commit f3450c7b
      "[SCSI] zfcp: Replace local reference counting with common kref"
      accidentally dropped a reference count check before tearing down
      zfcp_ports that are potentially in use by zfcp_units.
      Even remote ports in use can be removed causing
      unreachable garbage objects zfcp_ports with zfcp_units.
      Thus units won't come back even after a manual port_rescan.
      The kref of zfcp_port->dev.kobj is already used by the driver core.
      We cannot re-use it to track the number of zfcp_units.
      Re-introduce our own counter for units per port
      and check on port_remove.
      Signed-off-by: default avatarSteffen Maier <maier@linux.vnet.ibm.com>
      Reviewed-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      54178d76
    • Julia Lawall's avatar
      zfcp: remove invalid reference to list iterator variable · c6a407c6
      Julia Lawall authored
      commit ca579c9f upstream.
      
      If list_for_each_entry, etc complete a traversal of the list, the iterator
      variable ends up pointing to an address at an offset from the list head,
      and not a meaningful structure.  Thus this value should not be used after
      the end of the iterator.  Replace port->adapter->scsi_host by
      adapter->scsi_host.
      
      This problem was found using Coccinelle (http://coccinelle.lip6.fr/).
      
      Oversight in upsteam commit of v2.6.37
      a1ca4831
      "[SCSI] zfcp: Move ACL/CFDC code to zfcp_cfdc.c"
      which merged the content of zfcp_erp_port_access_changed().
      Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
      Signed-off-by: default avatarSteffen Maier <maier@linux.vnet.ibm.com>
      Reviewed-by: default avatarMartin Peschke <mpeschke@linux.vnet.ibm.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      c6a407c6
    • Steffen Maier's avatar
      zfcp: Do not wakeup while suspended · 50c67dae
      Steffen Maier authored
      commit cb452149 upstream.
      
      If the mapping of FCP device bus ID and corresponding subchannel
      is modified while the Linux image is suspended, the resume of FCP
      devices can fail. During resume, zfcp gets callbacks from cio regarding
      the modified subchannels but they can be arbitrarily mixed with the
      restore/resume callback. Since the cio callbacks would trigger
      adapter recovery, zfcp could wakeup before the resume callback.
      Therefore, ignore the cio callbacks regarding subchannels while
      being suspended. We can safely do so, since zfcp does not deal itself
      with subchannels. For problem determination purposes, we still trace the
      ignored callback events.
      
      The following kernel messages could be seen on resume:
      
      kernel: <WWPN>: parent <FCP device bus ID> should not be sleeping
      
      As part of adapter reopen recovery, zfcp performs auto port scanning
      which can erroneously try to register new remote ports with
      scsi_transport_fc and the device core code complains about the parent
      (adapter) still sleeping.
      
      kernel: zfcp.3dff9c: <FCP device bus ID>:\
       Setting up the QDIO connection to the FCP adapter failed
      <last kernel message repeated 3 more times>
      kernel: zfcp.574d43: <FCP device bus ID>:\
       ERP cannot recover an error on the FCP device
      
      In such cases, the adapter gave up recovery and remained blocked along
      with its child objects: remote ports and LUNs/scsi devices. Even the
      adapter shutdown as part of giving up recovery failed because the ccw
      device state remained disconnected. Later, the corresponding remote
      ports ran into dev_loss_tmo. As a result, the LUNs were erroneously
      not available again after resume.
      
      Even a manually triggered adapter recovery (e.g. sysfs attribute
      failed, or device offline/online via sysfs) could not recover the
      adapter due to the remaining disconnected state of the corresponding
      ccw device.
      Signed-off-by: default avatarSteffen Maier <maier@linux.vnet.ibm.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      50c67dae
    • Steffen Maier's avatar
      zfcp: Bounds checking for deferred error trace · 64b0bb9b
      Steffen Maier authored
      commit 01e60527 upstream.
      
      The pl vector has scount elements, i.e. pl[scount-1] is the last valid
      element. For maximum sized requests, payload->counter == scount after
      the last loop iteration. Therefore, do bounds checking first (with
      boolean shortcut) to not access the invalid element pl[scount].
      
      Do not trust the maximum sbale->scount value from the HBA
      but ensure we won't access the pl vector out of our allocated bounds.
      While at it, clean up scoping and prevent unnecessary memset.
      
      Minor fix for 86a9668a
      "[SCSI] zfcp: support for hardware data router"
      Signed-off-by: default avatarSteffen Maier <maier@linux.vnet.ibm.com>
      Reviewed-by: default avatarMartin Peschke <mpeschke@linux.vnet.ibm.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      64b0bb9b
    • Steffen Maier's avatar
      zfcp: Make trace record tags unique · 38256c96
      Steffen Maier authored
      commit 0100998d upstream.
      
      Duplicate fssrh_2 from a54ca0f6
      "[SCSI] zfcp: Redesign of the debug tracing for HBA records."
      complicates distinction of generic status read response from
      local link up.
      Duplicate fsscth1 from 2c55b750
      "[SCSI] zfcp: Redesign of the debug tracing for SAN records."
      complicates distinction of good common transport response from
      invalid port handle.
      Signed-off-by: default avatarSteffen Maier <maier@linux.vnet.ibm.com>
      Reviewed-by: default avatarMartin Peschke <mpeschke@linux.vnet.ibm.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      38256c96
    • Paul E. McKenney's avatar
      rcu: Fix day-one dyntick-idle stall-warning bug · 9abfe7ad
      Paul E. McKenney authored
      commit a10d206e upstream.
      
      Each grace period is supposed to have at least one callback waiting
      for that grace period to complete.  However, if CONFIG_NO_HZ=n, an
      extra callback-free grace period is no big problem -- it will chew up
      a tiny bit of CPU time, but it will complete normally.  In contrast,
      CONFIG_NO_HZ=y kernels have the potential for all the CPUs to go to
      sleep indefinitely, in turn indefinitely delaying completion of the
      callback-free grace period.  Given that nothing is waiting on this grace
      period, this is also not a problem.
      
      That is, unless RCU CPU stall warnings are also enabled, as they are
      in recent kernels.  In this case, if a CPU wakes up after at least one
      minute of inactivity, an RCU CPU stall warning will result.  The reason
      that no one noticed until quite recently is that most systems have enough
      OS noise that they will never remain absolutely idle for a full minute.
      But there are some embedded systems with cut-down userspace configurations
      that consistently get into this situation.
      
      All this begs the question of exactly how a callback-free grace period
      gets started in the first place.  This can happen due to the fact that
      CPUs do not necessarily agree on which grace period is in progress.
      If a CPU still believes that the grace period that just completed is
      still ongoing, it will believe that it has callbacks that need to wait for
      another grace period, never mind the fact that the grace period that they
      were waiting for just completed.  This CPU can therefore erroneously
      decide to start a new grace period.  Note that this can happen in
      TREE_RCU and TREE_PREEMPT_RCU even on a single-CPU system:  Deadlock
      considerations mean that the CPU that detected the end of the grace
      period is not necessarily officially informed of this fact for some time.
      
      Once this CPU notices that the earlier grace period completed, it will
      invoke its callbacks.  It then won't have any callbacks left.  If no
      other CPU has any callbacks, we now have a callback-free grace period.
      
      This commit therefore makes CPUs check more carefully before starting a
      new grace period.  This new check relies on an array of tail pointers
      into each CPU's list of callbacks.  If the CPU is up to date on which
      grace periods have completed, it checks to see if any callbacks follow
      the RCU_DONE_TAIL segment, otherwise it checks to see if any callbacks
      follow the RCU_WAIT_TAIL segment.  The reason that this works is that
      the RCU_WAIT_TAIL segment will be promoted to the RCU_DONE_TAIL segment
      as soon as the CPU is officially notified that the old grace period
      has ended.
      
      This change is to cpu_needs_another_gp(), which is called in a number
      of places.  The only one that really matters is in rcu_start_gp(), where
      the root rcu_node structure's ->lock is held, which prevents any
      other CPU from starting or completing a grace period, so that the
      comparison that determines whether the CPU is missing the completion
      of a grace period is stable.
      Reported-by: default avatarBecky Bruce <bgillbruce@gmail.com>
      Reported-by: default avatarSubodh Nijsure <snijsure@grid-net.com>
      Reported-by: default avatarPaul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarPaul E. McKenney <paul.mckenney@linaro.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      Tested-by: Paul Walmsley <paul@pwsan.com>  # OMAP3730, OMAP4430
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      9abfe7ad
    • Nicholas Bellinger's avatar
      iscsi-target: Correctly set 0xffffffff field within ISCSI_OP_REJECT PDU · 68c333c5
      Nicholas Bellinger authored
      commit f25590f3 upstream.
      
      This patch adds a missing iscsi_reject->ffffffff assignment within
      iscsit_send_reject() code to properly follow RFC-3720 Section 10.17
      Bytes 16 -> 19 for the PDU format definition of ISCSI_OP_REJECT.
      
      We've not seen any initiators care about this bytes in practice, but
      as Ronnie reported this was causing trouble with wireshark packet
      decoding lets go ahead and fix this up now.
      Reported-by: default avatarRonnie Sahlberg <ronniesahlberg@gmail.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      68c333c5
    • Wei Yongjun's avatar
      can: mscan-mpc5xxx: fix return value check in mpc512x_can_get_clock() · 320c688c
      Wei Yongjun authored
      commit f61bd058 upstream.
      
      In case of error, the function clk_get() returns ERR_PTR()
      and never returns NULL pointer. The NULL test in the error
      handling should be replaced with IS_ERR().
      
      dpatch engine is used to auto generated this patch.
      (https://github.com/weiyj/dpatch)
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Acked-by: default avatarWolfgang Grandegger <wg@grandegger.com>
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      320c688c
    • Bjørn Mork's avatar
      USB: qcaux: add Pantech vendor class match · cd2e82d4
      Bjørn Mork authored
      commit c638eb28 upstream.
      
      The three Pantech devices UML190 (106c:3716), UML290 (106c:3718) and
      P4200 (106c:3721) all use the same subclasses to identify vendor
      specific functions.  Replace the existing device specific entries
      with generic vendor matching, adding support for the P4200.
      Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
      Cc: Thomas Schäfer <tschaefer@t-online.de>
      Acked-by: default avatarDan Williams <dcbw@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      cd2e82d4
    • Bjørn Mork's avatar
      USB: option: blacklist QMI interface on ZTE MF683 · a806ca83
      Bjørn Mork authored
      commit 160c9425 upstream.
      
      Interface #5 on ZTE MF683 is a QMI/wwan interface.
      Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
      Cc: Shawn J. Goff <shawn7400@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      a806ca83
    • Ian Abbott's avatar
      staging: comedi: fix memory leak for saved channel list · 2a522045
      Ian Abbott authored
      commit c8cad4c8 upstream.
      
      When `do_cmd_ioctl()` allocates memory for the kernel copy of a channel
      list, it frees any previously allocated channel list in
      `async->cmd.chanlist` and replaces it with the new one.  However, if the
      device is ever removed (or "detached") the cleanup code in
      `cleanup_device()` in "drivers.c" does not free this memory so it is
      lost.
      
      A sensible place to free the kernel copy of the channel list is in
      `do_become_nonbusy()` as at that point the comedi asynchronous command
      associated with the channel list is no longer valid.  Free the channel
      list in `do_become_nonbusy()` instead of `do_cmd_ioctl()` and clear the
      pointer to prevent it being freed more than once.
      
      Note that `cleanup_device()` could be called at an inappropriate time
      while the comedi device is open, but that's a separate bug not related
      to this this patch.
      Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      2a522045
    • Theodore Ts'o's avatar
      ext4: fix potential deadlock in ext4_nonda_switch() · fda55976
      Theodore Ts'o authored
      commit 00d4e736 upstream.
      
      In ext4_nonda_switch(), if the file system is getting full we used to
      call writeback_inodes_sb_if_idle().  The problem is that we can be
      holding i_mutex already, and this causes a potential deadlock when
      writeback_inodes_sb_if_idle() when it tries to take s_umount.  (See
      lockdep output below).
      
      As it turns out we don't need need to hold s_umount; the fact that we
      are in the middle of the write(2) system call will keep the superblock
      pinned.  Unfortunately writeback_inodes_sb() checks to make sure
      s_umount is taken, and the VFS uses a different mechanism for making
      sure the file system doesn't get unmounted out from under us.  The
      simplest way of dealing with this is to just simply grab s_umount
      using a trylock, and skip kicking the writeback flusher thread in the
      very unlikely case that we can't take a read lock on s_umount without
      blocking.
      
      Also, we now check the cirteria for kicking the writeback thread
      before we decide to whether to fall back to non-delayed writeback, so
      if there are any outstanding delayed allocation writes, we try to get
      them resolved as soon as possible.
      
         [ INFO: possible circular locking dependency detected ]
         3.6.0-rc1-00042-gce894ca #367 Not tainted
         -------------------------------------------------------
         dd/8298 is trying to acquire lock:
          (&type->s_umount_key#18){++++..}, at: [<c02277d4>] writeback_inodes_sb_if_idle+0x28/0x46
      
         but task is already holding lock:
          (&sb->s_type->i_mutex_key#8){+.+...}, at: [<c01ddcce>] generic_file_aio_write+0x5f/0xd3
      
         which lock already depends on the new lock.
      
         2 locks held by dd/8298:
          #0:  (sb_writers#2){.+.+.+}, at: [<c01ddcc5>] generic_file_aio_write+0x56/0xd3
          #1:  (&sb->s_type->i_mutex_key#8){+.+...}, at: [<c01ddcce>] generic_file_aio_write+0x5f/0xd3
      
         stack backtrace:
         Pid: 8298, comm: dd Not tainted 3.6.0-rc1-00042-gce894ca #367
         Call Trace:
          [<c015b79c>] ? console_unlock+0x345/0x372
          [<c06d62a1>] print_circular_bug+0x190/0x19d
          [<c019906c>] __lock_acquire+0x86d/0xb6c
          [<c01999db>] ? mark_held_locks+0x5c/0x7b
          [<c0199724>] lock_acquire+0x66/0xb9
          [<c02277d4>] ? writeback_inodes_sb_if_idle+0x28/0x46
          [<c06db935>] down_read+0x28/0x58
          [<c02277d4>] ? writeback_inodes_sb_if_idle+0x28/0x46
          [<c02277d4>] writeback_inodes_sb_if_idle+0x28/0x46
          [<c026f3b2>] ext4_nonda_switch+0xe1/0xf4
          [<c0271ece>] ext4_da_write_begin+0x27/0x193
          [<c01dcdb0>] generic_file_buffered_write+0xc8/0x1bb
          [<c01ddc47>] __generic_file_aio_write+0x1dd/0x205
          [<c01ddce7>] generic_file_aio_write+0x78/0xd3
          [<c026d336>] ext4_file_write+0x480/0x4a6
          [<c0198c1d>] ? __lock_acquire+0x41e/0xb6c
          [<c0180944>] ? sched_clock_cpu+0x11a/0x13e
          [<c01967e9>] ? trace_hardirqs_off+0xb/0xd
          [<c018099f>] ? local_clock+0x37/0x4e
          [<c0209f2c>] do_sync_write+0x67/0x9d
          [<c0209ec5>] ? wait_on_retry_sync_kiocb+0x44/0x44
          [<c020a7b9>] vfs_write+0x7b/0xe6
          [<c020a9a6>] sys_write+0x3b/0x64
          [<c06dd4bd>] syscall_call+0x7/0xb
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      fda55976
    • Trond Myklebust's avatar
      SUNRPC: Ensure that the TCP socket is closed when in CLOSE_WAIT · 4dad4841
      Trond Myklebust authored
      commit a519fc7a upstream.
      
      Instead of doing a shutdown() call, we need to do an actual close().
      Ditto if/when the server is sending us junk RPC headers.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Tested-by: default avatarSimon Kirby <sim@hostway.ca>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      4dad4841
    • Ian Abbott's avatar
      staging: comedi: don't dereference user memory for INSN_INTTRIG · 20a94a21
      Ian Abbott authored
      commit 5d06e3df upstream.
      
      `parse_insn()` is dereferencing the user-space pointer `insn->data`
      directly when handling the `INSN_INTTRIG` comedi instruction.  It
      shouldn't be using `insn->data` at all; it should be using the separate
      `data` pointer passed to the function.  Fix it.
      Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      20a94a21
    • Gustavo Padovan's avatar
      Bluetooth: Add USB_VENDOR_AND_INTERFACE_INFO() for Broadcom/Foxconn · 3a5a8c3f
      Gustavo Padovan authored
      commit ee66401b upstream.
      
      Foxconn devices has a vendor specific class of device, we will match them
      differently now.
      Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      3a5a8c3f
    • Yinghai Lu's avatar
      PCI: Check P2P bridge for invalid secondary/subordinate range · 9f714c68
      Yinghai Lu authored
      commit 1965f66e upstream.
      
      For bridges with "secondary > subordinate", i.e., invalid bus number
      apertures, we don't enumerate anything behind the bridge unless the
      user specified "pci=assign-busses".
      
      This patch makes us automatically try to reassign the downstream bus
      numbers in this case (just for that bridge, not for all bridges as
      "pci=assign-busses" does).
      
      We don't discover all the devices on the Intel DP43BF motherboard
      without this change (or "pci=assign-busses") because its BIOS configures
      a bridge as:
      
          pci 0000:00:1e.0: PCI bridge to [bus 20-08] (subtractive decode)
      
      [bhelgaas: changelog, change message to dev_info]
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=18412
      Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=625754Reported-by: default avatarBrian C. Huffman <bhuffman@graze.net>
      Reported-by: default avatarVL <vl.homutov@gmail.com>
      Tested-by: default avatarVL <vl.homutov@gmail.com>
      Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      9f714c68
    • Lai Jiangshan's avatar
      workqueue: fix possible stall on try_to_grab_pending() of a delayed work item · 69db9d43
      Lai Jiangshan authored
      commit 3aa62497 upstream.
      
      Currently, when try_to_grab_pending() grabs a delayed work item, it
      leaves its linked work items alone on the delayed_works.  The linked
      work items are always NO_COLOR and will cause future
      cwq_activate_first_delayed() increase cwq->nr_active incorrectly, and
      may cause the whole cwq to stall.  For example,
      
      state: cwq->max_active = 1, cwq->nr_active = 1
             one work in cwq->pool, many in cwq->delayed_works.
      
      step1: try_to_grab_pending() removes a work item from delayed_works
             but leaves its NO_COLOR linked work items on it.
      
      step2: Later on, cwq_activate_first_delayed() activates the linked
             work item increasing ->nr_active.
      
      step3: cwq->nr_active = 1, but all activated work items of the cwq are
             NO_COLOR.  When they finish, cwq->nr_active will not be
             decreased due to NO_COLOR, and no further work items will be
             activated from cwq->delayed_works. the cwq stalls.
      
      Fix it by ensuring the target work item is activated before stealing
      PENDING in try_to_grab_pending().  This ensures that all the linked
      work items are activated without incorrectly bumping cwq->nr_active.
      
      tj: Updated comment and description.
      Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      69db9d43
    • Alex Williamson's avatar
      intel-iommu: Default to non-coherent for domains unattached to iommus · 606d8a8a
      Alex Williamson authored
      commit 2e12bc29 upstream.
      
      domain_update_iommu_coherency() currently defaults to setting domains
      as coherent when the domain is not attached to any iommus.  This
      allows for a window in domain_context_mapping_one() where such a
      domain can update context entries non-coherently, and only after
      update the domain capability to clear iommu_coherency.
      
      This can be seen using KVM device assignment on VT-d systems that
      do not support coherency in the ecap register.  When a device is
      added to a guest, a domain is created (iommu_coherency = 0), the
      device is attached, and ranges are mapped.  If we then hot unplug
      the device, the coherency is updated and set to the default (1)
      since no iommus are attached to the domain.  A subsequent attach
      of a device makes use of the same dmar domain (now marked coherent)
      updates context entries with coherency enabled, and only disables
      coherency as the last step in the process.
      
      To fix this, switch domain_update_iommu_coherency() to use the
      safer, non-coherent default for domains not attached to iommus.
      Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
      Tested-by: default avatarDonald Dutile <ddutile@redhat.com>
      Acked-by: default avatarDonald Dutile <ddutile@redhat.com>
      Acked-by: default avatarChris Wright <chrisw@sous-sol.org>
      Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
      [bwh: Backported to 3.2: dmar_domain::iommu_bmp is a single unsigned long
       not an array, so add &]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      606d8a8a
    • Gavin Shan's avatar
      powerpc/eeh: Lock module while handling EEH event · 7ced5a34
      Gavin Shan authored
      commit feadf7c0 upstream.
      
      The EEH core is talking with the PCI device driver to determine the
      action (purely reset, or PCI device removal). During the period, the
      driver might be unloaded and in turn causes kernel crash as follows:
      
      EEH: Detected PCI bus error on PHB#4-PE#10000
      EEH: This PCI device has failed 3 times in the last hour
      lpfc 0004:01:00.0: 0:2710 PCI channel disable preparing for reset
      Unable to handle kernel paging request for data at address 0x00000490
      Faulting instruction address: 0xd00000000e682c90
      cpu 0x1: Vector: 300 (Data Access) at [c000000fc75ffa20]
          pc: d00000000e682c90: .lpfc_io_error_detected+0x30/0x240 [lpfc]
          lr: d00000000e682c8c: .lpfc_io_error_detected+0x2c/0x240 [lpfc]
          sp: c000000fc75ffca0
         msr: 8000000000009032
         dar: 490
       dsisr: 40000000
        current = 0xc000000fc79b88b0
        paca    = 0xc00000000edb0380	 softe: 0	 irq_happened: 0x00
          pid   = 3386, comm = eehd
      enter ? for help
      [c000000fc75ffca0] c000000fc75ffd30 (unreliable)
      [c000000fc75ffd30] c00000000004fd3c .eeh_report_error+0x7c/0xf0
      [c000000fc75ffdc0] c00000000004ee00 .eeh_pe_dev_traverse+0xa0/0x180
      [c000000fc75ffe70] c00000000004ffd8 .eeh_handle_event+0x68/0x300
      [c000000fc75fff00] c0000000000503a0 .eeh_event_handler+0x130/0x1a0
      [c000000fc75fff90] c000000000020138 .kernel_thread+0x54/0x70
      1:mon>
      
      The patch increases the reference of the corresponding driver modules
      while EEH core does the negotiation with PCI device driver so that the
      corresponding driver modules can't be unloaded during the period and
      we're safe to refer the callbacks.
      Reported-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: default avatarGavin Shan <shangw@linux.vnet.ibm.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      [bwh: Backported to 3.2:
       - Adjust context
       - Reporting functions return int (success = 0), not void * (success = NULL)
       - Assume that the 'dev' arguments are non-null]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      7ced5a34
    • Peter Senna Tschudin's avatar
      target: fix return code in target_core_init_configfs error path · 3f9797d1
      Peter Senna Tschudin authored
      commit 37bb7899 upstream.
      
      This patch fixes error cases within target_core_init_configfs() to
      properly set ret = -ENOMEM before jumping to the out_global exception
      path.
      
      This was originally discovered with the following Coccinelle semantic
      match information:
      
      Convert a nonnegative error return code to a negative one, as returned
      elsewhere in the function.  A simplified version of the semantic match
      that finds this problem is as follows: (http://coccinelle.lip6.fr/)
      
      // <smpl>
      (
      if@p1 (\(ret < 0\|ret != 0\))
       { ... return ret; }
      |
      ret@p1 = 0
      )
      ... when != ret = e1
          when != &ret
      *if(...)
      {
        ... when != ret = e2
            when forall
       return ret;
      }
      // </smpl>
      Signed-off-by: default avatarPeter Senna Tschudin <peter.senna@gmail.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      3f9797d1
    • Ben Hutchings's avatar
      staging: speakup_soft: Fix reading of init string · 20ce58f2
      Ben Hutchings authored
      commit 40fe4f89 upstream.
      
      softsynth_read() reads a character at a time from the init string;
      when it finds the null terminator it sets the initialized flag but
      then repeats the last character.
      
      Additionally, if the read() buffer is not big enough for the init
      string, the next read() will start reading from the beginning again.
      So the caller may never progress to reading anything else.
      
      Replace the simple initialized flag with the current position in
      the init string, carried over between calls.  Switch to reading
      real data once this reaches the null terminator.
      
      (This assumes that the length of the init string can't change, which
      seems to be the case.  Really, the string and position belong together
      in a per-file private struct.)
      Tested-by: default avatarSamuel Thibault <sthibault@debian.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      20ce58f2
    • Ben Hutchings's avatar
      rc: ite-cir: Initialise ite_dev::rdev earlier · a4d44b6b
      Ben Hutchings authored
      commit 4b961180 upstream.
      
      ite_dev::rdev is currently initialised in ite_probe() after
      rc_register_device() returns.  If a newly registered device is opened
      quickly enough, we may enable interrupts and try to use ite_dev::rdev
      before it has been initialised.  Move it up to the earliest point we
      can, right after calling rc_allocate_device().
      Reported-and-tested-by: default avatarYunQiang Su <wzssyqa@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      a4d44b6b
    • Stephen M. Cameron's avatar
      hpsa: Use LUN reset instead of target reset · 22391820
      Stephen M. Cameron authored
      commit 21e89afd upstream.
      
      It turns out Smart Array logical drives do not support target
      reset and when the target reset fails, the logical drive will
      be taken off line.  Symptoms look like this:
      
      hpsa 0000:03:00.0: Abort request on C1:B0:T0:L0
      hpsa 0000:03:00.0: resetting device 1:0:0:0
      hpsa 0000:03:00.0: cp ffff880037c56000 is reported invalid (probably means target device no longer present)
      hpsa 0000:03:00.0: resetting device failed.
      sd 1:0:0:0: Device offlined - not ready after error recovery
      sd 1:0:0:0: rejecting I/O to offline device
      EXT3-fs error (device sdb1): read_block_bitmap:
      
      LUN reset is supported though, and is what we should be using.
      Target reset is also disruptive in shared SAS situations,
      for example, an external MSA1210m which does support target
      reset attached to Smart Arrays in multiple hosts -- a target
      reset from one host is disruptive to other hosts as all LUNs
      on the target will be reset and will abort all outstanding i/os
      back to all the attached hosts.  So we should use LUN reset,
      not target reset.
      
      Tested this with Smart Array logical drives and with tape drives.
      Not sure how this bug survived since 2009, except it must be very
      rare for a Smart Array to require more than 30s to complete a request.
      Signed-off-by: default avatarStephen M. Cameron <scameron@beardog.cce.hp.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      22391820
    • Elric Fu's avatar
      xHCI: cancel command after command timeout · 2535cfea
      Elric Fu authored
      commit 6e4468b9 upstream.
      
      The patch is used to cancel command when the command isn't
      acknowledged and a timeout occurs.
      
      This patch should be backported to kernels as old as 3.0, that contain
      the commit 7ed603ec "xhci: Add an
      assertion to check for virt_dev=0 bug." That commit papers over a NULL
      pointer dereference, and this patch fixes the underlying issue that
      caused the NULL pointer dereference.
      Signed-off-by: default avatarElric Fu <elricfu1@gmail.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Tested-by: default avatarMiroslav Sabljic <miroslav.sabljic@avl.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      2535cfea
    • Elric Fu's avatar
      xHCI: add aborting command ring function · 88bd928d
      Elric Fu authored
      commit b92cc66c upstream.
      
      Software have to abort command ring and cancel command
      when a command is failed or hang. Otherwise, the command
      ring will hang up and can't handle the others. An example
      of a command that may hang is the Address Device Command,
      because waiting for a SET_ADDRESS request to be acknowledged
      by a USB device is outside of the xHC's ability to control.
      
      To cancel a command, software will initialize a command
      descriptor for the cancel command, and add it into a
      cancel_cmd_list of xhci.
      
      Sarah: Fixed missing newline on "Have the command ring been stopped?"
      debugging statement.
      
      This patch should be backported to kernels as old as 3.0, that contain
      the commit 7ed603ec "xhci: Add an
      assertion to check for virt_dev=0 bug." That commit papers over a NULL
      pointer dereference, and this patch fixes the underlying issue that
      caused the NULL pointer dereference.
      Signed-off-by: default avatarElric Fu <elricfu1@gmail.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Tested-by: default avatarMiroslav Sabljic <miroslav.sabljic@avl.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      88bd928d
    • Elric Fu's avatar
      xHCI: add cmd_ring_state · df045069
      Elric Fu authored
      commit c181bc5b upstream.
      
      Adding cmd_ring_state for command ring. It helps to verify
      the current command ring state for controlling the command
      ring operations.
      
      This patch should be backported to kernels as old as 3.0.  The commit
      7ed603ec "xhci: Add an assertion to
      check for virt_dev=0 bug." papers over the NULL pointer dereference that
      I now believe is related to a timed out Set Address command.  This (and
      the four patches that follow it) contain the real fix that also allows
      VIA USB 3.0 hubs to consistently re-enumerate during the plug/unplug
      stress tests.
      Signed-off-by: default avatarElric Fu <elricfu1@gmail.com>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Tested-by: default avatarMiroslav Sabljic <miroslav.sabljic@avl.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      df045069
    • Sarah Sharp's avatar
      xhci: Warn when hosts don't halt. · b89d0660
      Sarah Sharp authored
      commit 5af98bb0 upstream.
      
      Eric Fu reports a problem with his VIA host controller fetching a zeroed
      event ring pointer on resume from suspend.  The host should have been
      halted, but we can't be sure because that code ignores the return value
      from xhci_halt().  Print a warning when the host controller refuses to
      halt within XHCI_MAX_HALT_USEC (currently 16 seconds).
      
      (Update: it turns out that the VIA host controller is reporting a halted
      state when it fetches the zeroed event ring pointer.  However, we still
      need this warning for other host controllers.)
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      b89d0660
    • Frank Schäfer's avatar
      gspca_pac7302: add support for device 1ae7:2001 Speedlink Snappy Microphone SL-6825-SBK · 6a230d70
      Frank Schäfer authored
      commit 97d2fbf5 upstream.
      Signed-off-by: default avatarFrank Schäfer <fschaefer.oss@googlemail.com>
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      [bwh: Backported to 3.2: adjust filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      6a230d70