Merge tag 'v3.14.29' of http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux...
authorDenys Dmytriyenko <denys@ti.com>
Mon, 19 Jan 2015 20:53:49 +0000 (15:53 -0500)
committerDenys Dmytriyenko <denys@ti.com>
Mon, 19 Jan 2015 20:53:49 +0000 (15:53 -0500)
This is the 3.14.29 stable release

* tag 'v3.14.29' of http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable: (165 commits)
  Linux 3.14.29
  mm: Don't count the stack guard page towards RLIMIT_STACK
  mm: propagate error from stack expansion even for guard page
  mm, vmscan: prevent kswapd livelock due to pfmemalloc-throttled process being killed
  mmc: sdhci: Fix sleep in atomic after inserting SD card
  spi: fsl: Fix problem with multi message transfers
  perf session: Do not fail on processing out of order event
  perf: Fix events installation during moving group
  perf/x86/intel/uncore: Make sure only uncore events are collected
  Btrfs: don't delay inode ref updates during log replay
  arm64: kernel: fix __cpu_suspend mm switch on warm-boot
  arm64: Move cpu_resume into the text section
  arm64: kernel: refactor the CPU suspend API for retention states
  arm64: kernel: add missing __init section marker to cpu_suspend_init
  ACPI / PM: Fix PM initialization for devices that are not present
  ARM: mvebu: disable I/O coherency on non-SMP situations on Armada 370/375/38x/XP
  Revert "ARM: 7830/1: delay: don't bother reporting bogomips in /proc/cpuinfo"
  ARM: OMAP4: PM: Only do static dependency configuration in omap4_init_static_deps
  ARM: dts: Enable PWM node by default for s3c64xx
  ARM: dts: DRA7: wdt: Fix compatible property for watchdog node
  ...

Conflicts:
drivers/usb/host/xhci.c

Signed-off-by: Denys Dmytriyenko <denys@ti.com>
1  2 
arch/arm/kernel/setup.c
arch/arm/mach-omap2/pm44xx.c
drivers/ata/ahci.c
drivers/i2c/busses/i2c-omap.c
drivers/thermal/thermal_core.c
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -2962,58 -2937,21 +2964,35 @@@ void xhci_endpoint_reset(struct usb_hc
                struct usb_host_endpoint *ep)
  {
        struct xhci_hcd *xhci;
 +      struct usb_device *udev;
 +      unsigned int ep_index;
 +      unsigned long flags;
 +      int ret;
 +      struct xhci_virt_ep *virt_ep;
 +      struct xhci_command *command;
  
        xhci = hcd_to_xhci(hcd);
-       udev = (struct usb_device *) ep->hcpriv;
-       /* Called with a root hub endpoint (or an endpoint that wasn't added
-        * with xhci_add_endpoint()
-        */
-       if (!ep->hcpriv)
-               return;
-       ep_index = xhci_get_endpoint_index(&ep->desc);
-       virt_ep = &xhci->devs[udev->slot_id]->eps[ep_index];
-       if (!virt_ep->stopped_td) {
-               xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep,
-                       "Endpoint 0x%x not halted, refusing to reset.",
-                       ep->desc.bEndpointAddress);
-               return;
-       }
-       if (usb_endpoint_xfer_control(&ep->desc)) {
-               xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep,
-                               "Control endpoint stall already handled.");
-               return;
-       }
  
 +      command = xhci_alloc_command(xhci, false, false, GFP_ATOMIC);
 +      if (!command)
 +              return;
 +
 +      xhci_dbg_trace(xhci, trace_xhci_dbg_reset_ep,
 +                      "Queueing reset endpoint command");
 +      spin_lock_irqsave(&xhci->lock, flags);
 +      ret = xhci_queue_reset_ep(xhci, command, udev->slot_id, ep_index);
        /*
-        * Can't change the ring dequeue pointer until it's transitioned to the
-        * stopped state, which is only upon a successful reset endpoint
-        * command.  Better hope that last command worked!
+        * We might need to implement the config ep cmd in xhci 4.8.1 note:
+        * The Reset Endpoint Command may only be issued to endpoints in the
+        * Halted state. If software wishes reset the Data Toggle or Sequence
+        * Number of an endpoint that isn't in the Halted state, then software
+        * may issue a Configure Endpoint Command with the Drop and Add bits set
+        * for the target endpoint. that is in the Stopped state.
         */
-       if (!ret) {
-               xhci_cleanup_stalled_ring(xhci, udev, ep_index);
-               kfree(virt_ep->stopped_td);
-               xhci_ring_cmd_db(xhci);
-       }
-       virt_ep->stopped_td = NULL;
-       virt_ep->stopped_stream = 0;
-       spin_unlock_irqrestore(&xhci->lock, flags);
  
-       if (ret)
-               xhci_warn(xhci, "FIXME allocate a new ring segment\n");
+       /* For now just print debug to follow the situation */
+       xhci_dbg(xhci, "Endpoint 0x%x ep reset callback called\n",
+                ep->desc.bEndpointAddress);
  }
  
  static int xhci_check_streams_endpoint(struct xhci_hcd *xhci,