--- /dev/null
+From 5d62c183f9e9df1deeea0906d099a94e8a43047a Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Fri, 22 Dec 2017 15:51:13 +0100
+Subject: nohz: Prevent a timer interrupt storm in tick_nohz_stop_sched_tick()
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit 5d62c183f9e9df1deeea0906d099a94e8a43047a upstream.
+
+The conditions in irq_exit() to invoke tick_nohz_irq_exit() which
+subsequently invokes tick_nohz_stop_sched_tick() are:
+
+ if ((idle_cpu(cpu) && !need_resched()) || tick_nohz_full_cpu(cpu))
+
+If need_resched() is not set, but a timer softirq is pending then this is
+an indication that the softirq code punted and delegated the execution to
+softirqd. need_resched() is not true because the current interrupted task
+takes precedence over softirqd.
+
+Invoking tick_nohz_irq_exit() in this case can cause an endless loop of
+timer interrupts because the timer wheel contains an expired timer, but
+softirqs are not yet executed. So it returns an immediate expiry request,
+which causes the timer to fire immediately again. Lather, rinse and
+repeat....
+
+Prevent that by adding a check for a pending timer soft interrupt to the
+conditions in tick_nohz_stop_sched_tick() which avoid calling
+get_next_timer_interrupt(). That keeps the tick sched timer on the tick and
+prevents a repetitive programming of an already expired timer.
+
+Reported-by: Sebastian Siewior <bigeasy@linutronix.d>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
+Cc: Anna-Maria Gleixner <anna-maria@linutronix.de>
+Cc: Sebastian Siewior <bigeasy@linutronix.de>
+Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1712272156050.2431@nanos
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/time/tick-sched.c | 19 +++++++++++++++++--
+ 1 file changed, 17 insertions(+), 2 deletions(-)
+
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -568,6 +568,11 @@ static void tick_nohz_restart(struct tic
+ tick_program_event(hrtimer_get_expires(&ts->sched_timer), 1);
+ }
+
++static inline bool local_timer_softirq_pending(void)
++{
++ return local_softirq_pending() & TIMER_SOFTIRQ;
++}
++
+ static ktime_t tick_nohz_stop_sched_tick(struct tick_sched *ts,
+ ktime_t now, int cpu)
+ {
+@@ -584,8 +589,18 @@ static ktime_t tick_nohz_stop_sched_tick
+ } while (read_seqretry(&jiffies_lock, seq));
+ ts->last_jiffies = basejiff;
+
+- if (rcu_needs_cpu(basemono, &next_rcu) ||
+- arch_needs_cpu() || irq_work_needs_cpu()) {
++ /*
++ * Keep the periodic tick, when RCU, architecture or irq_work
++ * requests it.
++ * Aside of that check whether the local timer softirq is
++ * pending. If so its a bad idea to call get_next_timer_interrupt()
++ * because there is an already expired timer, so it will request
++ * immeditate expiry, which rearms the hardware timer with a
++ * minimal delta which brings us back to this place
++ * immediately. Lather, rinse and repeat...
++ */
++ if (rcu_needs_cpu(basemono, &next_rcu) || arch_needs_cpu() ||
++ irq_work_needs_cpu() || local_timer_softirq_pending()) {
+ next_tick = basemono + TICK_NSEC;
+ } else {
+ /*
usbip-fix-usbip-bind-writing-random-string-after-command-in-match_busid.patch
usbip-stub-stop-printing-kernel-pointer-addresses-in-messages.patch
usbip-vhci-stop-printing-kernel-pointer-addresses-in-messages.patch
+usb-serial-ftdi_sio-add-id-for-airbus-ds-p8gr.patch
+usb-serial-qcserial-add-sierra-wireless-em7565.patch
+usb-serial-option-add-support-for-telit-me910-pid-0x1101.patch
+usb-serial-option-adding-support-for-yuga-clm920-nc5.patch
+usb-add-device-quirk-for-logitech-hd-pro-webcam-c925e.patch
+usb-add-reset_resume-for-elsa-microlink-56k.patch
+usb-fix-off-by-one-in-type-specific-length-check-of-bos-ssp-capability.patch
+usb-xhci-add-xhci_trust_tx_length-for-renesas-upd720201.patch
+nohz-prevent-a-timer-interrupt-storm-in-tick_nohz_stop_sched_tick.patch
+x86-smpboot-remove-stale-tlb-flush-invocations.patch
--- /dev/null
+From 7f038d256c723dd390d2fca942919573995f4cfd Mon Sep 17 00:00:00 2001
+From: Dmitry Fleytman Dmitry Fleytman <dmitry.fleytman@gmail.com>
+Date: Tue, 19 Dec 2017 06:02:04 +0200
+Subject: usb: Add device quirk for Logitech HD Pro Webcam C925e
+
+From: Dmitry Fleytman Dmitry Fleytman <dmitry.fleytman@gmail.com>
+
+commit 7f038d256c723dd390d2fca942919573995f4cfd upstream.
+
+Commit e0429362ab15
+("usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e")
+introduced quirk to workaround an issue with some Logitech webcams.
+
+There is one more model that has the same issue - C925e, so applying
+the same quirk as well.
+
+See aforementioned commit message for detailed explanation of the problem.
+
+Signed-off-by: Dmitry Fleytman <dmitry.fleytman@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/core/quirks.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -57,10 +57,11 @@ static const struct usb_device_id usb_qu
+ /* Microsoft LifeCam-VX700 v2.0 */
+ { USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME },
+
+- /* Logitech HD Pro Webcams C920, C920-C and C930e */
++ /* Logitech HD Pro Webcams C920, C920-C, C925e and C930e */
+ { USB_DEVICE(0x046d, 0x082d), .driver_info = USB_QUIRK_DELAY_INIT },
+ { USB_DEVICE(0x046d, 0x0841), .driver_info = USB_QUIRK_DELAY_INIT },
+ { USB_DEVICE(0x046d, 0x0843), .driver_info = USB_QUIRK_DELAY_INIT },
++ { USB_DEVICE(0x046d, 0x085b), .driver_info = USB_QUIRK_DELAY_INIT },
+
+ /* Logitech ConferenceCam CC3000e */
+ { USB_DEVICE(0x046d, 0x0847), .driver_info = USB_QUIRK_DELAY_INIT },
--- /dev/null
+From b9096d9f15c142574ebebe8fbb137012bb9d99c2 Mon Sep 17 00:00:00 2001
+From: Oliver Neukum <oneukum@suse.com>
+Date: Tue, 12 Dec 2017 16:11:30 +0100
+Subject: usb: add RESET_RESUME for ELSA MicroLink 56K
+
+From: Oliver Neukum <oneukum@suse.com>
+
+commit b9096d9f15c142574ebebe8fbb137012bb9d99c2 upstream.
+
+This modem needs this quirk to operate. It produces timeouts when
+resumed without reset.
+
+Signed-off-by: Oliver Neukum <oneukum@suse.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/core/quirks.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/core/quirks.c
++++ b/drivers/usb/core/quirks.c
+@@ -155,6 +155,9 @@ static const struct usb_device_id usb_qu
+ /* Genesys Logic hub, internally used by KY-688 USB 3.1 Type-C Hub */
+ { USB_DEVICE(0x05e3, 0x0612), .driver_info = USB_QUIRK_NO_LPM },
+
++ /* ELSA MicroLink 56K */
++ { USB_DEVICE(0x05cc, 0x2267), .driver_info = USB_QUIRK_RESET_RESUME },
++
+ /* Genesys Logic hub, internally used by Moshi USB to Ethernet Adapter */
+ { USB_DEVICE(0x05e3, 0x0616), .driver_info = USB_QUIRK_NO_LPM },
+
--- /dev/null
+From 07b9f12864d16c3a861aef4817eb1efccbc5d0e6 Mon Sep 17 00:00:00 2001
+From: Mathias Nyman <mathias.nyman@linux.intel.com>
+Date: Tue, 19 Dec 2017 11:14:42 +0200
+Subject: USB: Fix off by one in type-specific length check of BOS SSP capability
+
+From: Mathias Nyman <mathias.nyman@linux.intel.com>
+
+commit 07b9f12864d16c3a861aef4817eb1efccbc5d0e6 upstream.
+
+USB 3.1 devices are not detected as 3.1 capable since 4.15-rc3 due to a
+off by one in commit 81cf4a45360f ("USB: core: Add type-specific length
+check of BOS descriptors")
+
+It uses USB_DT_USB_SSP_CAP_SIZE() to get SSP capability size which takes
+the zero based SSAC as argument, not the actual count of sublink speed
+attributes.
+
+USB3 spec 9.6.2.5 says "The number of Sublink Speed Attributes = SSAC + 1."
+
+The type-specific length check patch was added to stable and needs to be
+fixed there as well
+
+Fixes: 81cf4a45360f ("USB: core: Add type-specific length check of BOS descriptors")
+CC: Masakazu Mokuno <masakazu.mokuno@gmail.com>
+Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/core/config.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/core/config.c
++++ b/drivers/usb/core/config.c
+@@ -973,7 +973,7 @@ int usb_get_bos_descriptor(struct usb_de
+ case USB_SSP_CAP_TYPE:
+ ssp_cap = (struct usb_ssp_cap_descriptor *)buffer;
+ ssac = (le32_to_cpu(ssp_cap->bmAttributes) &
+- USB_SSP_SUBLINK_SPEED_ATTRIBS) + 1;
++ USB_SSP_SUBLINK_SPEED_ATTRIBS);
+ if (length >= USB_DT_USB_SSP_CAP_SIZE(ssac))
+ dev->bos->ssp_cap = ssp_cap;
+ break;
--- /dev/null
+From c6a36ad383559a60a249aa6016cebf3cb8b6c485 Mon Sep 17 00:00:00 2001
+From: Max Schulze <max.schulze@posteo.de>
+Date: Wed, 20 Dec 2017 20:47:44 +0100
+Subject: USB: serial: ftdi_sio: add id for Airbus DS P8GR
+
+From: Max Schulze <max.schulze@posteo.de>
+
+commit c6a36ad383559a60a249aa6016cebf3cb8b6c485 upstream.
+
+Add AIRBUS_DS_P8GR device IDs to ftdi_sio driver.
+
+Signed-off-by: Max Schulze <max.schulze@posteo.de>
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 1 +
+ drivers/usb/serial/ftdi_sio_ids.h | 6 ++++++
+ 2 files changed, 7 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -1017,6 +1017,7 @@ static const struct usb_device_id id_tab
+ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
+ { USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_BT_USB_PID) },
+ { USB_DEVICE(CYPRESS_VID, CYPRESS_WICED_WL_USB_PID) },
++ { USB_DEVICE(AIRBUS_DS_VID, AIRBUS_DS_P8GR) },
+ { } /* Terminating entry */
+ };
+
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -914,6 +914,12 @@
+ #define ICPDAS_I7563U_PID 0x0105
+
+ /*
++ * Airbus Defence and Space
++ */
++#define AIRBUS_DS_VID 0x1e8e /* Vendor ID */
++#define AIRBUS_DS_P8GR 0x6001 /* Tetra P8GR */
++
++/*
+ * RT Systems programming cables for various ham radios
+ */
+ #define RTSYSTEMS_VID 0x2100 /* Vendor ID */
--- /dev/null
+From 08933099e6404f588f81c2050bfec7313e06eeaf Mon Sep 17 00:00:00 2001
+From: Daniele Palmas <dnlplm@gmail.com>
+Date: Thu, 14 Dec 2017 16:54:45 +0100
+Subject: USB: serial: option: add support for Telit ME910 PID 0x1101
+
+From: Daniele Palmas <dnlplm@gmail.com>
+
+commit 08933099e6404f588f81c2050bfec7313e06eeaf upstream.
+
+This patch adds support for PID 0x1101 of Telit ME910.
+
+Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -283,6 +283,7 @@ static void option_instat_callback(struc
+ #define TELIT_PRODUCT_LE922_USBCFG3 0x1043
+ #define TELIT_PRODUCT_LE922_USBCFG5 0x1045
+ #define TELIT_PRODUCT_ME910 0x1100
++#define TELIT_PRODUCT_ME910_DUAL_MODEM 0x1101
+ #define TELIT_PRODUCT_LE920 0x1200
+ #define TELIT_PRODUCT_LE910 0x1201
+ #define TELIT_PRODUCT_LE910_USBCFG4 0x1206
+@@ -648,6 +649,11 @@ static const struct option_blacklist_inf
+ .reserved = BIT(1) | BIT(3),
+ };
+
++static const struct option_blacklist_info telit_me910_dual_modem_blacklist = {
++ .sendsetup = BIT(0),
++ .reserved = BIT(3),
++};
++
+ static const struct option_blacklist_info telit_le910_blacklist = {
+ .sendsetup = BIT(0),
+ .reserved = BIT(1) | BIT(2),
+@@ -1247,6 +1253,8 @@ static const struct usb_device_id option
+ .driver_info = (kernel_ulong_t)&telit_le922_blacklist_usbcfg0 },
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910),
+ .driver_info = (kernel_ulong_t)&telit_me910_blacklist },
++ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
++ .driver_info = (kernel_ulong_t)&telit_me910_dual_modem_blacklist },
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910),
+ .driver_info = (kernel_ulong_t)&telit_le910_blacklist },
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE910_USBCFG4),
--- /dev/null
+From 3920bb713038810f25770e7545b79f204685c8f2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?SZ=20Lin=20=28=E6=9E=97=E4=B8=8A=E6=99=BA=29?=
+ <sz.lin@moxa.com>
+Date: Tue, 19 Dec 2017 17:40:32 +0800
+Subject: USB: serial: option: adding support for YUGA CLM920-NC5
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: SZ Lin (林上智) <sz.lin@moxa.com>
+
+commit 3920bb713038810f25770e7545b79f204685c8f2 upstream.
+
+This patch adds support for YUGA CLM920-NC5 PID 0x9625 USB modem to option
+driver.
+
+Interface layout:
+0: QCDM/DIAG
+1: ADB
+2: MODEM
+3: AT
+4: RMNET
+
+Signed-off-by: Taiyi Wu <taiyity.wu@moxa.com>
+Signed-off-by: SZ Lin (林上智) <sz.lin@moxa.com>
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/option.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -236,6 +236,8 @@ static void option_instat_callback(struc
+ /* These Quectel products use Qualcomm's vendor ID */
+ #define QUECTEL_PRODUCT_UC20 0x9003
+ #define QUECTEL_PRODUCT_UC15 0x9090
++/* These Yuga products use Qualcomm's vendor ID */
++#define YUGA_PRODUCT_CLM920_NC5 0x9625
+
+ #define QUECTEL_VENDOR_ID 0x2c7c
+ /* These Quectel products use Quectel's vendor ID */
+@@ -683,6 +685,10 @@ static const struct option_blacklist_inf
+ .reserved = BIT(4) | BIT(5),
+ };
+
++static const struct option_blacklist_info yuga_clm920_nc5_blacklist = {
++ .reserved = BIT(1) | BIT(4),
++};
++
+ static const struct usb_device_id option_ids[] = {
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
+@@ -1187,6 +1193,9 @@ static const struct usb_device_id option
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC15)},
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_UC20),
+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
++ /* Yuga products use Qualcomm vendor ID */
++ { USB_DEVICE(QUALCOMM_VENDOR_ID, YUGA_PRODUCT_CLM920_NC5),
++ .driver_info = (kernel_ulong_t)&yuga_clm920_nc5_blacklist },
+ /* Quectel products using Quectel vendor ID */
+ { USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC21),
+ .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
--- /dev/null
+From 92a18a657fb2e2ffbfa0659af32cc18fd2346516 Mon Sep 17 00:00:00 2001
+From: Reinhard Speyerer <rspmn@arcor.de>
+Date: Fri, 15 Dec 2017 00:39:27 +0100
+Subject: USB: serial: qcserial: add Sierra Wireless EM7565
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Reinhard Speyerer <rspmn@arcor.de>
+
+commit 92a18a657fb2e2ffbfa0659af32cc18fd2346516 upstream.
+
+Sierra Wireless EM7565 devices use the QCSERIAL_SWI layout for their
+serial ports
+
+T: Bus=01 Lev=03 Prnt=29 Port=01 Cnt=02 Dev#= 31 Spd=480 MxCh= 0
+D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
+P: Vendor=1199 ProdID=9091 Rev= 0.06
+S: Manufacturer=Sierra Wireless, Incorporated
+S: Product=Sierra Wireless EM7565 Qualcomm Snapdragon X16 LTE-A
+S: SerialNumber=xxxxxxxx
+C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
+I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=qcserial
+E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=qcserial
+E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
+E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=qcserial
+E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
+E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+I:* If#= 8 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
+E: Ad=86(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
+E: Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+E: Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
+
+but need sendsetup = true for the NMEA port to make it work properly.
+
+Simplify the patch compared to v1 as suggested by Bjørn Mork by taking
+advantage of the fact that existing devices work with sendsetup = true
+too.
+
+Use sendsetup = true for the NMEA interface of QCSERIAL_SWI and add
+DEVICE_SWI entries for the EM7565 PID 0x9091 and the EM7565 QDL PID
+0x9090.
+
+Tests with several MC73xx/MC74xx/MC77xx devices have been performed in
+order to verify backward compatibility.
+
+Signed-off-by: Reinhard Speyerer <rspmn@arcor.de>
+Signed-off-by: Johan Hovold <johan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/serial/qcserial.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/serial/qcserial.c
++++ b/drivers/usb/serial/qcserial.c
+@@ -166,6 +166,8 @@ static const struct usb_device_id id_tab
+ {DEVICE_SWI(0x1199, 0x9079)}, /* Sierra Wireless EM74xx */
+ {DEVICE_SWI(0x1199, 0x907a)}, /* Sierra Wireless EM74xx QDL */
+ {DEVICE_SWI(0x1199, 0x907b)}, /* Sierra Wireless EM74xx */
++ {DEVICE_SWI(0x1199, 0x9090)}, /* Sierra Wireless EM7565 QDL */
++ {DEVICE_SWI(0x1199, 0x9091)}, /* Sierra Wireless EM7565 */
+ {DEVICE_SWI(0x413c, 0x81a2)}, /* Dell Wireless 5806 Gobi(TM) 4G LTE Mobile Broadband Card */
+ {DEVICE_SWI(0x413c, 0x81a3)}, /* Dell Wireless 5570 HSPA+ (42Mbps) Mobile Broadband Card */
+ {DEVICE_SWI(0x413c, 0x81a4)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card */
+@@ -346,6 +348,7 @@ static int qcprobe(struct usb_serial *se
+ break;
+ case 2:
+ dev_dbg(dev, "NMEA GPS interface found\n");
++ sendsetup = true;
+ break;
+ case 3:
+ dev_dbg(dev, "Modem port found\n");
--- /dev/null
+From da99706689481717998d1d48edd389f339eea979 Mon Sep 17 00:00:00 2001
+From: Daniel Thompson <daniel.thompson@linaro.org>
+Date: Thu, 21 Dec 2017 15:06:15 +0200
+Subject: usb: xhci: Add XHCI_TRUST_TX_LENGTH for Renesas uPD720201
+
+From: Daniel Thompson <daniel.thompson@linaro.org>
+
+commit da99706689481717998d1d48edd389f339eea979 upstream.
+
+When plugging in a USB webcam I see the following message:
+xhci_hcd 0000:04:00.0: WARN Successful completion on short TX: needs
+XHCI_TRUST_TX_LENGTH quirk?
+handle_tx_event: 913 callbacks suppressed
+
+All is quiet again with this patch (and I've done a fair but of soak
+testing with the camera since).
+
+Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
+Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/xhci-pci.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/usb/host/xhci-pci.c
++++ b/drivers/usb/host/xhci-pci.c
+@@ -185,6 +185,9 @@ static void xhci_pci_quirks(struct devic
+ xhci->quirks |= XHCI_BROKEN_STREAMS;
+ }
+ if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
++ pdev->device == 0x0014)
++ xhci->quirks |= XHCI_TRUST_TX_LENGTH;
++ if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
+ pdev->device == 0x0015)
+ xhci->quirks |= XHCI_RESET_ON_RESUME;
+ if (pdev->vendor == PCI_VENDOR_ID_VIA)
--- /dev/null
+From 322f8b8b340c824aef891342b0f5795d15e11562 Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Sat, 30 Dec 2017 22:13:53 +0100
+Subject: x86/smpboot: Remove stale TLB flush invocations
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit 322f8b8b340c824aef891342b0f5795d15e11562 upstream.
+
+smpboot_setup_warm_reset_vector() and smpboot_restore_warm_reset_vector()
+invoke local_flush_tlb() for no obvious reason.
+
+Digging in history revealed that the original code in the 2.1 era added
+those because the code manipulated a swapper_pg_dir pagetable entry. The
+pagetable manipulation was removed long ago in the 2.3 timeframe, but the
+TLB flush invocations stayed around forever.
+
+Remove them along with the pointless pr_debug()s which come from the same 2.1
+change.
+
+Reported-by: Dominik Brodowski <linux@dominikbrodowski.net>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: Andy Lutomirski <luto@kernel.org>
+Cc: Borislav Petkov <bp@alien8.de>
+Cc: Dave Hansen <dave.hansen@linux.intel.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Linus Torvalds <torvalds@linuxfoundation.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Link: http://lkml.kernel.org/r/20171230211829.586548655@linutronix.de
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/kernel/smpboot.c | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+--- a/arch/x86/kernel/smpboot.c
++++ b/arch/x86/kernel/smpboot.c
+@@ -104,14 +104,10 @@ static inline void smpboot_setup_warm_re
+ spin_lock_irqsave(&rtc_lock, flags);
+ CMOS_WRITE(0xa, 0xf);
+ spin_unlock_irqrestore(&rtc_lock, flags);
+- local_flush_tlb();
+- pr_debug("1.\n");
+ *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_HIGH)) =
+ start_eip >> 4;
+- pr_debug("2.\n");
+ *((volatile unsigned short *)phys_to_virt(TRAMPOLINE_PHYS_LOW)) =
+ start_eip & 0xf;
+- pr_debug("3.\n");
+ }
+
+ static inline void smpboot_restore_warm_reset_vector(void)
+@@ -119,11 +115,6 @@ static inline void smpboot_restore_warm_
+ unsigned long flags;
+
+ /*
+- * Install writable page 0 entry to set BIOS data area.
+- */
+- local_flush_tlb();
+-
+- /*
+ * Paranoid: Set warm reset code and vector here back
+ * to default values.
+ */