From: Greg Kroah-Hartman Date: Mon, 16 May 2022 08:23:33 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v4.9.315~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0216d160bb860aa02813b139817c673d838b9ae9;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: cgroup-cpuset-remove-cpus_allowed-mems_allowed-setup-in-cpuset_init_smp.patch slimbus-qcom-fix-irq-check-in-qcom_slim_probe.patch usb-serial-option-add-fibocom-l610-modem.patch usb-serial-option-add-fibocom-ma510-modem.patch usb-serial-pl2303-add-device-id-for-hp-lm930-display.patch usb-serial-qcserial-add-support-for-sierra-wireless-em7590.patch usb-typec-tcpci-don-t-skip-cleanup-in-.remove-on-error.patch --- diff --git a/queue-4.19/cgroup-cpuset-remove-cpus_allowed-mems_allowed-setup-in-cpuset_init_smp.patch b/queue-4.19/cgroup-cpuset-remove-cpus_allowed-mems_allowed-setup-in-cpuset_init_smp.patch new file mode 100644 index 00000000000..60a357b07e2 --- /dev/null +++ b/queue-4.19/cgroup-cpuset-remove-cpus_allowed-mems_allowed-setup-in-cpuset_init_smp.patch @@ -0,0 +1,73 @@ +From 2685027fca387b602ae565bff17895188b803988 Mon Sep 17 00:00:00 2001 +From: Waiman Long +Date: Wed, 27 Apr 2022 10:54:28 -0400 +Subject: cgroup/cpuset: Remove cpus_allowed/mems_allowed setup in cpuset_init_smp() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Waiman Long + +commit 2685027fca387b602ae565bff17895188b803988 upstream. + +There are 3 places where the cpu and node masks of the top cpuset can +be initialized in the order they are executed: + 1) start_kernel -> cpuset_init() + 2) start_kernel -> cgroup_init() -> cpuset_bind() + 3) kernel_init_freeable() -> do_basic_setup() -> cpuset_init_smp() + +The first cpuset_init() call just sets all the bits in the masks. +The second cpuset_bind() call sets cpus_allowed and mems_allowed to the +default v2 values. The third cpuset_init_smp() call sets them back to +v1 values. + +For systems with cgroup v2 setup, cpuset_bind() is called once. As a +result, cpu and memory node hot add may fail to update the cpu and node +masks of the top cpuset to include the newly added cpu or node in a +cgroup v2 environment. + +For systems with cgroup v1 setup, cpuset_bind() is called again by +rebind_subsystem() when the v1 cpuset filesystem is mounted as shown +in the dmesg log below with an instrumented kernel. + + [ 2.609781] cpuset_bind() called - v2 = 1 + [ 3.079473] cpuset_init_smp() called + [ 7.103710] cpuset_bind() called - v2 = 0 + +smp_init() is called after the first two init functions. So we don't +have a complete list of active cpus and memory nodes until later in +cpuset_init_smp() which is the right time to set up effective_cpus +and effective_mems. + +To fix this cgroup v2 mask setup problem, the potentially incorrect +cpus_allowed & mems_allowed setting in cpuset_init_smp() are removed. +For cgroup v2 systems, the initial cpuset_bind() call will set the masks +correctly. For cgroup v1 systems, the second call to cpuset_bind() +will do the right setup. + +cc: stable@vger.kernel.org +Signed-off-by: Waiman Long +Tested-by: Feng Tang +Reviewed-by: Michal Koutný +Signed-off-by: Tejun Heo +Signed-off-by: Greg Kroah-Hartman +--- + kernel/cgroup/cpuset.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +--- a/kernel/cgroup/cpuset.c ++++ b/kernel/cgroup/cpuset.c +@@ -2403,8 +2403,11 @@ static struct notifier_block cpuset_trac + */ + void __init cpuset_init_smp(void) + { +- cpumask_copy(top_cpuset.cpus_allowed, cpu_active_mask); +- top_cpuset.mems_allowed = node_states[N_MEMORY]; ++ /* ++ * cpus_allowd/mems_allowed set to v2 values in the initial ++ * cpuset_bind() call will be reset to v1 values in another ++ * cpuset_bind() call when v1 cpuset is mounted. ++ */ + top_cpuset.old_mems_allowed = top_cpuset.mems_allowed; + + cpumask_copy(top_cpuset.effective_cpus, cpu_active_mask); diff --git a/queue-4.19/series b/queue-4.19/series index 5eb43f274d3..855706da270 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -19,3 +19,10 @@ asoc-ops-validate-input-values-in-snd_soc_put_volsw_.patch s390-disable-warray-bounds.patch tcp-resalt-the-secret-every-10-seconds.patch usb-cdc-wdm-fix-reading-stuck-on-device-close.patch +usb-typec-tcpci-don-t-skip-cleanup-in-.remove-on-error.patch +usb-serial-pl2303-add-device-id-for-hp-lm930-display.patch +usb-serial-qcserial-add-support-for-sierra-wireless-em7590.patch +usb-serial-option-add-fibocom-l610-modem.patch +usb-serial-option-add-fibocom-ma510-modem.patch +slimbus-qcom-fix-irq-check-in-qcom_slim_probe.patch +cgroup-cpuset-remove-cpus_allowed-mems_allowed-setup-in-cpuset_init_smp.patch diff --git a/queue-4.19/slimbus-qcom-fix-irq-check-in-qcom_slim_probe.patch b/queue-4.19/slimbus-qcom-fix-irq-check-in-qcom_slim_probe.patch new file mode 100644 index 00000000000..5f423d5281f --- /dev/null +++ b/queue-4.19/slimbus-qcom-fix-irq-check-in-qcom_slim_probe.patch @@ -0,0 +1,43 @@ +From fe503887eed6ea528e144ec8dacfa1d47aa701ac Mon Sep 17 00:00:00 2001 +From: Miaoqian Lin +Date: Fri, 29 Apr 2022 17:49:17 +0100 +Subject: slimbus: qcom: Fix IRQ check in qcom_slim_probe + +From: Miaoqian Lin + +commit fe503887eed6ea528e144ec8dacfa1d47aa701ac upstream. + +platform_get_irq() returns non-zero IRQ number on success, +negative error number on failure. +And the doc of platform_get_irq() provides a usage example: + + int irq = platform_get_irq(pdev, 0); + if (irq < 0) + return irq; + +Fix the check of return value to catch errors correctly. + +Fixes: ad7fcbc308b0 ("slimbus: qcom: Add Qualcomm Slimbus controller driver") +Cc: stable@vger.kernel.org +Signed-off-by: Miaoqian Lin +Signed-off-by: Srinivas Kandagatla +Link: https://lore.kernel.org/r/20220429164917.5202-2-srinivas.kandagatla@linaro.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/slimbus/qcom-ctrl.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/slimbus/qcom-ctrl.c ++++ b/drivers/slimbus/qcom-ctrl.c +@@ -515,9 +515,9 @@ static int qcom_slim_probe(struct platfo + } + + ctrl->irq = platform_get_irq(pdev, 0); +- if (!ctrl->irq) { ++ if (ctrl->irq < 0) { + dev_err(&pdev->dev, "no slimbus IRQ\n"); +- return -ENODEV; ++ return ctrl->irq; + } + + sctrl = &ctrl->ctrl; diff --git a/queue-4.19/usb-serial-option-add-fibocom-l610-modem.patch b/queue-4.19/usb-serial-option-add-fibocom-l610-modem.patch new file mode 100644 index 00000000000..bc3010c7c2e --- /dev/null +++ b/queue-4.19/usb-serial-option-add-fibocom-l610-modem.patch @@ -0,0 +1,141 @@ +From 714adff9a6271b5f1664b04c944b598141ebfe73 Mon Sep 17 00:00:00 2001 +From: Sven Schwermer +Date: Mon, 25 Apr 2022 16:34:49 +0200 +Subject: USB: serial: option: add Fibocom L610 modem + +From: Sven Schwermer + +commit 714adff9a6271b5f1664b04c944b598141ebfe73 upstream. + +The L610 modem has 3 USB configurations that are configurable via the AT +command AT+GTUSBMODE={31,32,33} which make the modem enumerate with the +following interfaces, respectively: + +31: Modem + NV + MOS + Diag + LOG + AT + AT +32: ECM + Modem + NV + MOS + Diag + LOG + AT + AT +33: RNDIS + Modem + NV + MOS + Diag + LOG + AT + AT + +A detailed description of the USB configuration for each mode follows: + ++GTUSBMODE: 31 +-------------- +T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=124 Spd=480 MxCh= 0 +D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +P: Vendor=1782 ProdID=4d10 Rev= 0.00 +S: Manufacturer=FIBOCOM +S: Product=L610 +C:* #Ifs= 7 Cfg#= 1 Atr=e0 MxPwr=400mA +I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms + ++GTUSBMODE: 32 +-------------- +T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=122 Spd=480 MxCh= 0 +D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +P: Vendor=1782 ProdID=4d11 Rev= 0.00 +S: Manufacturer=FIBOCOM +S: Product=L610 +C:* #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=400mA +A: FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00 +I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether +E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=32ms +I: If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether +I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether +E: Ad=82(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= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=83(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= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms + ++GTUSBMODE: 33 +-------------- +T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=126 Spd=480 MxCh= 0 +D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +P: Vendor=1782 ProdID=4d11 Rev= 0.00 +S: Manufacturer=FIBOCOM +S: Product=L610 +C:* #Ifs= 9 Cfg#= 1 Atr=e0 MxPwr=400mA +A: FirstIf#= 0 IfCount= 2 Cls=e0(wlcon) Sub=01 Prot=03 +I:* If#= 0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host +E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=4096ms +I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host +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= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=83(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= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option +E: Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms + +Signed-off-by: Sven Schwermer +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/serial/option.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -2123,6 +2123,8 @@ static const struct usb_device_id option + .driver_info = RSVD(3) }, + { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 (IOT version) */ + .driver_info = RSVD(4) | RSVD(5) | RSVD(6) }, ++ { USB_DEVICE(0x1782, 0x4d10) }, /* Fibocom L610 (AT mode) */ ++ { USB_DEVICE_INTERFACE_CLASS(0x1782, 0x4d11, 0xff) }, /* Fibocom L610 (ECM/RNDIS mode) */ + { USB_DEVICE(0x2cb7, 0x0104), /* Fibocom NL678 series */ + .driver_info = RSVD(4) | RSVD(5) }, + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */ diff --git a/queue-4.19/usb-serial-option-add-fibocom-ma510-modem.patch b/queue-4.19/usb-serial-option-add-fibocom-ma510-modem.patch new file mode 100644 index 00000000000..eeed75f04a6 --- /dev/null +++ b/queue-4.19/usb-serial-option-add-fibocom-ma510-modem.patch @@ -0,0 +1,117 @@ +From 07989eb981d862f7f2be68d233d753f2e7ccc119 Mon Sep 17 00:00:00 2001 +From: Sven Schwermer +Date: Mon, 25 Apr 2022 16:34:50 +0200 +Subject: USB: serial: option: add Fibocom MA510 modem + +From: Sven Schwermer + +commit 07989eb981d862f7f2be68d233d753f2e7ccc119 upstream. + +The MA510 modem has 3 USB configurations that are configurable via the AT +command AT+GTUSBMODE={30,31,32} which make the modem enumerate with the +following interfaces, respectively: + +30: Diag + QDSS + Modem + RMNET +31: Diag + Modem + AT + ECM +32: Modem + AT + ECM + +The first configuration (30) reuses u-blox R410M's VID/PID with +identical interface configuration. + +A detailed description of the USB configuration for each mode follows: + ++GTUSBMODE: 30 +-------------- +T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#= 19 Spd=480 MxCh= 0 +D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 +P: Vendor=05c6 ProdID=90b2 Rev= 0.00 +S: Manufacturer=Fibocom MA510 Modem +S: Product=Fibocom MA510 Modem +S: SerialNumber=55e2695b +C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA +I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 1 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) +E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms +E: Ad=84(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=ff Prot=ff Driver=qmi_wwan +E: Ad=85(I) Atr=03(Int.) MxPS= 64 Ivl=2ms +E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms + ++GTUSBMODE: 31 +-------------- +T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#= 99 Spd=480 MxCh= 0 +D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 +P: Vendor=2cb7 ProdID=0106 Rev= 0.00 +S: Manufacturer=Fibocom MA510 Modem +S: Product=Fibocom MA510 Modem +S: SerialNumber=55e2695b +C:* #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA +A: FirstIf#= 3 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00 +I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=82(I) Atr=03(Int.) MxPS= 64 Ivl=2ms +E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option +E: Ad=84(I) Atr=03(Int.) MxPS= 64 Ivl=2ms +E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether +E: Ad=86(I) Atr=03(Int.) MxPS= 64 Ivl=2ms +I: If#= 4 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether +I:* If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether +E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms + ++GTUSBMODE: 32 +-------------- +T: Bus=03 Lev=01 Prnt=01 Port=06 Cnt=04 Dev#=100 Spd=480 MxCh= 0 +D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1 +P: Vendor=2cb7 ProdID=010a Rev= 0.00 +S: Manufacturer=Fibocom MA510 Modem +S: Product=Fibocom MA510 Modem +S: SerialNumber=55e2695b +C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA +A: FirstIf#= 2 IfCount= 2 Cls=02(comm.) Sub=00 Prot=00 +I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option +E: Ad=81(I) Atr=03(Int.) MxPS= 64 Ivl=2ms +E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=fe Prot=ff Driver=option +E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=2ms +E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms +I:* If#= 2 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether +E: Ad=85(I) Atr=03(Int.) MxPS= 64 Ivl=2ms +I: If#= 3 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether +I:* If#= 3 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether +E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms +E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms + +Signed-off-by: Sven Schwermer +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/serial/option.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -2129,6 +2129,8 @@ static const struct usb_device_id option + .driver_info = RSVD(4) | RSVD(5) }, + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0105, 0xff), /* Fibocom NL678 series */ + .driver_info = RSVD(6) }, ++ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x0106, 0xff) }, /* Fibocom MA510 (ECM mode w/ diag intf.) */ ++ { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x010a, 0xff) }, /* Fibocom MA510 (ECM mode) */ + { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0xff, 0x30) }, /* Fibocom FG150 Diag */ + { USB_DEVICE_AND_INTERFACE_INFO(0x2cb7, 0x010b, 0xff, 0, 0) }, /* Fibocom FG150 AT */ + { USB_DEVICE_INTERFACE_CLASS(0x2cb7, 0x01a0, 0xff) }, /* Fibocom NL668-AM/NL652-EU (laptop MBIM) */ diff --git a/queue-4.19/usb-serial-pl2303-add-device-id-for-hp-lm930-display.patch b/queue-4.19/usb-serial-pl2303-add-device-id-for-hp-lm930-display.patch new file mode 100644 index 00000000000..93add54e9ab --- /dev/null +++ b/queue-4.19/usb-serial-pl2303-add-device-id-for-hp-lm930-display.patch @@ -0,0 +1,41 @@ +From 26a08f8bad3e1f98d3153f939fb8cd330da4cb26 Mon Sep 17 00:00:00 2001 +From: Scott Chen +Date: Mon, 25 Apr 2022 17:00:20 +0800 +Subject: USB: serial: pl2303: add device id for HP LM930 Display + +From: Scott Chen + +commit 26a08f8bad3e1f98d3153f939fb8cd330da4cb26 upstream. + +Add the device id for the HPLM930Display which is a PL2303GC based +device. + +Signed-off-by: Scott Chen +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/serial/pl2303.c | 1 + + drivers/usb/serial/pl2303.h | 1 + + 2 files changed, 2 insertions(+) + +--- a/drivers/usb/serial/pl2303.c ++++ b/drivers/usb/serial/pl2303.c +@@ -100,6 +100,7 @@ static const struct usb_device_id id_tab + { USB_DEVICE(HP_VENDOR_ID, HP_LCM220_PRODUCT_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_LCM960_PRODUCT_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_LM920_PRODUCT_ID) }, ++ { USB_DEVICE(HP_VENDOR_ID, HP_LM930_PRODUCT_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_LM940_PRODUCT_ID) }, + { USB_DEVICE(HP_VENDOR_ID, HP_TD620_PRODUCT_ID) }, + { USB_DEVICE(CRESSI_VENDOR_ID, CRESSI_EDY_PRODUCT_ID) }, +--- a/drivers/usb/serial/pl2303.h ++++ b/drivers/usb/serial/pl2303.h +@@ -129,6 +129,7 @@ + #define HP_TD620_PRODUCT_ID 0x0956 + #define HP_LD960_PRODUCT_ID 0x0b39 + #define HP_LD381_PRODUCT_ID 0x0f7f ++#define HP_LM930_PRODUCT_ID 0x0f9b + #define HP_LCM220_PRODUCT_ID 0x3139 + #define HP_LCM960_PRODUCT_ID 0x3239 + #define HP_LD220_PRODUCT_ID 0x3524 diff --git a/queue-4.19/usb-serial-qcserial-add-support-for-sierra-wireless-em7590.patch b/queue-4.19/usb-serial-qcserial-add-support-for-sierra-wireless-em7590.patch new file mode 100644 index 00000000000..1abb3aae781 --- /dev/null +++ b/queue-4.19/usb-serial-qcserial-add-support-for-sierra-wireless-em7590.patch @@ -0,0 +1,31 @@ +From 870b1eee2d844727b06e238c121d260bc5645580 Mon Sep 17 00:00:00 2001 +From: Ethan Yang +Date: Mon, 25 Apr 2022 13:58:40 +0800 +Subject: USB: serial: qcserial: add support for Sierra Wireless EM7590 + +From: Ethan Yang + +commit 870b1eee2d844727b06e238c121d260bc5645580 upstream. + +Add support for Sierra Wireless EM7590 0xc080/0xc081 compositions. + +Signed-off-by: Ethan Yang +Link: https://lore.kernel.org/r/20220425055840.5693-1-etyang@sierrawireless.com +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/serial/qcserial.c | 2 ++ + 1 file changed, 2 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, 0x9090)}, /* Sierra Wireless EM7565 QDL */ + {DEVICE_SWI(0x1199, 0x9091)}, /* Sierra Wireless EM7565 */ + {DEVICE_SWI(0x1199, 0x90d2)}, /* Sierra Wireless EM9191 QDL */ ++ {DEVICE_SWI(0x1199, 0xc080)}, /* Sierra Wireless EM7590 QDL */ ++ {DEVICE_SWI(0x1199, 0xc081)}, /* Sierra Wireless EM7590 */ + {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 */ diff --git a/queue-4.19/usb-typec-tcpci-don-t-skip-cleanup-in-.remove-on-error.patch b/queue-4.19/usb-typec-tcpci-don-t-skip-cleanup-in-.remove-on-error.patch new file mode 100644 index 00000000000..efef29ab18b --- /dev/null +++ b/queue-4.19/usb-typec-tcpci-don-t-skip-cleanup-in-.remove-on-error.patch @@ -0,0 +1,53 @@ +From bbc126ae381cf0a27822c1f822d0aeed74cc40d9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= +Date: Mon, 2 May 2022 10:04:56 +0200 +Subject: usb: typec: tcpci: Don't skip cleanup in .remove() on error +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Uwe Kleine-König + +commit bbc126ae381cf0a27822c1f822d0aeed74cc40d9 upstream. + +Returning an error value in an i2c remove callback results in an error +message being emitted by the i2c core, but otherwise it doesn't make a +difference. The device goes away anyhow and the devm cleanups are +called. + +In this case the remove callback even returns early without stopping the +tcpm worker thread and various timers. A work scheduled on the work +queue, or a firing timer after tcpci_remove() returned probably results +in a use-after-free situation because the regmap and driver data were +freed. So better make sure that tcpci_unregister_port() is called even +if disabling the irq failed. + +Also emit a more specific error message instead of the i2c core's +"remove failed (EIO), will be ignored" and return 0 to suppress the +core's warning. + +This patch is (also) a preparation for making i2c remove callbacks +return void. + +Fixes: 3ba76256fc4e ("usb: typec: tcpci: mask event interrupts when remove driver") +Signed-off-by: Uwe Kleine-König +Cc: stable +Acked-by: Heikki Krogerus +Reviewed-by: Guenter Roeck +Link: https://lore.kernel.org/r/20220502080456.21568-1-u.kleine-koenig@pengutronix.de +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/typec/tcpci.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/typec/tcpci.c ++++ b/drivers/usb/typec/tcpci.c +@@ -601,7 +601,7 @@ static int tcpci_remove(struct i2c_clien + /* Disable chip interrupts before unregistering port */ + err = tcpci_write16(chip->tcpci, TCPC_ALERT_MASK, 0); + if (err < 0) +- return err; ++ dev_warn(&client->dev, "Failed to disable irqs (%pe)\n", ERR_PTR(err)); + + tcpci_unregister_port(chip->tcpci); +