]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.11-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 12 May 2021 11:02:29 +0000 (13:02 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 12 May 2021 11:02:29 +0000 (13:02 +0200)
added patches:
mfd-stmpe-revert-constify-static-struct-resource.patch
ovl-fix-missing-revert_creds-on-error-path.patch
revert-drivers-net-wan-hdlc_fr-fix-a-double-free-in-pvc_xmit.patch
revert-drm-qxl-do-not-run-release-if-qxl-failed-to-init.patch
revert-i3c-master-fix-missing-destroy_workqueue-on-error-in-i3c_master_register.patch
revert-tools-power-turbostat-adjust-for-temperature-offset.patch
usb-gadget-pch_udc-revert-d3cb25a12138-completely.patch

queue-5.11/mfd-stmpe-revert-constify-static-struct-resource.patch [new file with mode: 0644]
queue-5.11/ovl-fix-missing-revert_creds-on-error-path.patch [new file with mode: 0644]
queue-5.11/revert-drivers-net-wan-hdlc_fr-fix-a-double-free-in-pvc_xmit.patch [new file with mode: 0644]
queue-5.11/revert-drm-qxl-do-not-run-release-if-qxl-failed-to-init.patch [new file with mode: 0644]
queue-5.11/revert-i3c-master-fix-missing-destroy_workqueue-on-error-in-i3c_master_register.patch [new file with mode: 0644]
queue-5.11/revert-tools-power-turbostat-adjust-for-temperature-offset.patch [new file with mode: 0644]
queue-5.11/series
queue-5.11/usb-gadget-pch_udc-revert-d3cb25a12138-completely.patch [new file with mode: 0644]

diff --git a/queue-5.11/mfd-stmpe-revert-constify-static-struct-resource.patch b/queue-5.11/mfd-stmpe-revert-constify-static-struct-resource.patch
new file mode 100644 (file)
index 0000000..af22484
--- /dev/null
@@ -0,0 +1,76 @@
+From cb9e880a797a77c21c0f0e7ccd553da8eb4870af Mon Sep 17 00:00:00 2001
+From: Rikard Falkeborn <rikard.falkeborn@gmail.com>
+Date: Fri, 5 Mar 2021 00:07:09 +0100
+Subject: mfd: stmpe: Revert "Constify static struct resource"
+
+From: Rikard Falkeborn <rikard.falkeborn@gmail.com>
+
+commit cb9e880a797a77c21c0f0e7ccd553da8eb4870af upstream.
+
+In stmpe_devices_init(), the start and end field of these structs are
+modified, so they can not be const. Add a comment to those structs that
+lacked it to reduce the risk that this happens again.
+
+This reverts commit 8d7b3a6dac4eae22c58b0853696cbd256966741b.
+
+Fixes: 8d7b3a6dac4e ("mfd: stmpe: Constify static struct resource")
+Reported-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
+Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Signed-off-by: Lee Jones <lee.jones@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/mfd/stmpe.c |   14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
+
+--- a/drivers/mfd/stmpe.c
++++ b/drivers/mfd/stmpe.c
+@@ -312,7 +312,7 @@ EXPORT_SYMBOL_GPL(stmpe_set_altfunc);
+  * GPIO (all variants)
+  */
+-static const struct resource stmpe_gpio_resources[] = {
++static struct resource stmpe_gpio_resources[] = {
+       /* Start and end filled dynamically */
+       {
+               .flags  = IORESOURCE_IRQ,
+@@ -336,7 +336,8 @@ static const struct mfd_cell stmpe_gpio_
+  * Keypad (1601, 2401, 2403)
+  */
+-static const struct resource stmpe_keypad_resources[] = {
++static struct resource stmpe_keypad_resources[] = {
++      /* Start and end filled dynamically */
+       {
+               .name   = "KEYPAD",
+               .flags  = IORESOURCE_IRQ,
+@@ -357,7 +358,8 @@ static const struct mfd_cell stmpe_keypa
+ /*
+  * PWM (1601, 2401, 2403)
+  */
+-static const struct resource stmpe_pwm_resources[] = {
++static struct resource stmpe_pwm_resources[] = {
++      /* Start and end filled dynamically */
+       {
+               .name   = "PWM0",
+               .flags  = IORESOURCE_IRQ,
+@@ -445,7 +447,8 @@ static struct stmpe_variant_info stmpe80
+  * Touchscreen (STMPE811 or STMPE610)
+  */
+-static const struct resource stmpe_ts_resources[] = {
++static struct resource stmpe_ts_resources[] = {
++      /* Start and end filled dynamically */
+       {
+               .name   = "TOUCH_DET",
+               .flags  = IORESOURCE_IRQ,
+@@ -467,7 +470,8 @@ static const struct mfd_cell stmpe_ts_ce
+  * ADC (STMPE811)
+  */
+-static const struct resource stmpe_adc_resources[] = {
++static struct resource stmpe_adc_resources[] = {
++      /* Start and end filled dynamically */
+       {
+               .name   = "STMPE_TEMP_SENS",
+               .flags  = IORESOURCE_IRQ,
diff --git a/queue-5.11/ovl-fix-missing-revert_creds-on-error-path.patch b/queue-5.11/ovl-fix-missing-revert_creds-on-error-path.patch
new file mode 100644 (file)
index 0000000..5bca2d1
--- /dev/null
@@ -0,0 +1,40 @@
+From 7b279bbfd2b230c7a210ff8f405799c7e46bbf48 Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Tue, 23 Mar 2021 16:19:35 +0300
+Subject: ovl: fix missing revert_creds() on error path
+
+From: Dan Carpenter <dan.carpenter@oracle.com>
+
+commit 7b279bbfd2b230c7a210ff8f405799c7e46bbf48 upstream.
+
+Smatch complains about missing that the ovl_override_creds() doesn't
+have a matching revert_creds() if the dentry is disconnected.  Fix this
+by moving the ovl_override_creds() until after the disconnected check.
+
+Fixes: aa3ff3c152ff ("ovl: copy up of disconnected dentries")
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/overlayfs/copy_up.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/fs/overlayfs/copy_up.c
++++ b/fs/overlayfs/copy_up.c
+@@ -932,7 +932,7 @@ static int ovl_copy_up_one(struct dentry
+ static int ovl_copy_up_flags(struct dentry *dentry, int flags)
+ {
+       int err = 0;
+-      const struct cred *old_cred = ovl_override_creds(dentry->d_sb);
++      const struct cred *old_cred;
+       bool disconnected = (dentry->d_flags & DCACHE_DISCONNECTED);
+       /*
+@@ -943,6 +943,7 @@ static int ovl_copy_up_flags(struct dent
+       if (WARN_ON(disconnected && d_is_dir(dentry)))
+               return -EIO;
++      old_cred = ovl_override_creds(dentry->d_sb);
+       while (!err) {
+               struct dentry *next;
+               struct dentry *parent = NULL;
diff --git a/queue-5.11/revert-drivers-net-wan-hdlc_fr-fix-a-double-free-in-pvc_xmit.patch b/queue-5.11/revert-drivers-net-wan-hdlc_fr-fix-a-double-free-in-pvc_xmit.patch
new file mode 100644 (file)
index 0000000..a8c2bd7
--- /dev/null
@@ -0,0 +1,48 @@
+From d362fd0be456dba2d3d58a90b7a193962776562b Mon Sep 17 00:00:00 2001
+From: Xie He <xie.he.0141@gmail.com>
+Date: Sun, 2 May 2021 20:51:36 -0700
+Subject: Revert "drivers/net/wan/hdlc_fr: Fix a double free in pvc_xmit"
+
+From: Xie He <xie.he.0141@gmail.com>
+
+commit d362fd0be456dba2d3d58a90b7a193962776562b upstream.
+
+This reverts commit 1b479fb80160
+("drivers/net/wan/hdlc_fr: Fix a double free in pvc_xmit").
+
+1. This commit is incorrect. "__skb_pad" will NOT free the skb on
+failure when its "free_on_error" parameter is "false".
+
+2. This commit claims to fix my commit. But it didn't CC me??
+
+Fixes: 1b479fb80160 ("drivers/net/wan/hdlc_fr: Fix a double free in pvc_xmit")
+Cc: Lv Yunlong <lyl2019@mail.ustc.edu.cn>
+Signed-off-by: Xie He <xie.he.0141@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/wan/hdlc_fr.c |    5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wan/hdlc_fr.c
++++ b/drivers/net/wan/hdlc_fr.c
+@@ -415,7 +415,7 @@ static netdev_tx_t pvc_xmit(struct sk_bu
+               if (pad > 0) { /* Pad the frame with zeros */
+                       if (__skb_pad(skb, pad, false))
+-                              goto out;
++                              goto drop;
+                       skb_put(skb, pad);
+               }
+       }
+@@ -448,9 +448,8 @@ static netdev_tx_t pvc_xmit(struct sk_bu
+       return NETDEV_TX_OK;
+ drop:
+-      kfree_skb(skb);
+-out:
+       dev->stats.tx_dropped++;
++      kfree_skb(skb);
+       return NETDEV_TX_OK;
+ }
diff --git a/queue-5.11/revert-drm-qxl-do-not-run-release-if-qxl-failed-to-init.patch b/queue-5.11/revert-drm-qxl-do-not-run-release-if-qxl-failed-to-init.patch
new file mode 100644 (file)
index 0000000..7b49dfc
--- /dev/null
@@ -0,0 +1,36 @@
+From 93d8da8d7efbf690c0a9eaca798acc0c625245e6 Mon Sep 17 00:00:00 2001
+From: Gerd Hoffmann <kraxel@redhat.com>
+Date: Thu, 4 Feb 2021 15:57:03 +0100
+Subject: Revert "drm/qxl: do not run release if qxl failed to init"
+
+From: Gerd Hoffmann <kraxel@redhat.com>
+
+commit 93d8da8d7efbf690c0a9eaca798acc0c625245e6 upstream.
+
+This reverts commit b91907a6241193465ca92e357adf16822242296d.
+
+Patch is broken, it effectively makes qxl_drm_release() a nop
+because on normal driver shutdown qxl_drm_release() is called
+*after* drm_dev_unregister().
+
+Fixes: b91907a62411 ("drm/qxl: do not run release if qxl failed to init")
+Cc: Tong Zhang <ztong0001@gmail.com>
+Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
+Link: http://patchwork.freedesktop.org/patch/msgid/20210204145712.1531203-3-kraxel@redhat.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/qxl/qxl_drv.c |    2 --
+ 1 file changed, 2 deletions(-)
+
+--- a/drivers/gpu/drm/qxl/qxl_drv.c
++++ b/drivers/gpu/drm/qxl/qxl_drv.c
+@@ -144,8 +144,6 @@ static void qxl_drm_release(struct drm_d
+        * reodering qxl_modeset_fini() + qxl_device_fini() calls is
+        * non-trivial though.
+        */
+-      if (!dev->registered)
+-              return;
+       qxl_modeset_fini(qdev);
+       qxl_device_fini(qdev);
+ }
diff --git a/queue-5.11/revert-i3c-master-fix-missing-destroy_workqueue-on-error-in-i3c_master_register.patch b/queue-5.11/revert-i3c-master-fix-missing-destroy_workqueue-on-error-in-i3c_master_register.patch
new file mode 100644 (file)
index 0000000..e2426c1
--- /dev/null
@@ -0,0 +1,110 @@
+From 0d95f41ebde40d552bb4fea64b1d618607915fd6 Mon Sep 17 00:00:00 2001
+From: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
+Date: Thu, 8 Apr 2021 10:28:03 -0700
+Subject: Revert "i3c master: fix missing destroy_workqueue() on error in i3c_master_register"
+
+From: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
+
+commit 0d95f41ebde40d552bb4fea64b1d618607915fd6 upstream.
+
+Adding the destroy_workqueue call in i3c_master_register introduced below
+kernel warning because it makes duplicate destroy_workqueue calls when
+i3c_master_register fails after allocating the workqueue. The workqueue will
+be destroyed by i3c_masterdev_release which is called by put_device at the
+end of the i3c_master_register function eventually in failure cases so the
+workqueue doesn't need to be destroyed in i3c_master_register.
+
+[    6.972952] WARNING: CPU: 1 PID: 1 at lib/list_debug.c:48 __list_del_entry_valid+0x9c/0xf4
+[    6.982205] list_del corruption, 8fe03c08->prev is LIST_POISON2 (00000122)
+[    6.989910] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W         5.10.23-c12838a-dirty-31dc772 #1
+[    7.000295] Hardware name: Generic DT based system
+[    7.005638] Backtrace:
+[    7.008369] [<809133f0>] (dump_backtrace) from [<80913644>] (show_stack+0x20/0x24)
+[    7.016819]  r7:00000030 r6:60000013 r5:00000000 r4:813b5d40
+[    7.023137] [<80913624>] (show_stack) from [<8091e1a0>] (dump_stack+0x9c/0xb0)
+[    7.031201] [<8091e104>] (dump_stack) from [<8011fa30>] (__warn+0xf8/0x154)
+[    7.038972]  r7:00000030 r6:00000009 r5:804fa1c8 r4:80b6eca4
+[    7.045289] [<8011f938>] (__warn) from [<80913d14>] (warn_slowpath_fmt+0x8c/0xc0)
+[    7.053641]  r7:00000030 r6:80b6eca4 r5:80b6ed74 r4:818cc000
+[    7.059960] [<80913c8c>] (warn_slowpath_fmt) from [<804fa1c8>] (__list_del_entry_valid+0x9c/0xf4)
+[    7.069866]  r9:96becf8c r8:818cc000 r7:8fe03c10 r6:8fe03c00 r5:8fe03ba0 r4:ff7ead4c
+[    7.078513] [<804fa12c>] (__list_del_entry_valid) from [<8013f0b4>] (destroy_workqueue+0x1c4/0x23c)
+[    7.088615] [<8013eef0>] (destroy_workqueue) from [<806aa124>] (i3c_masterdev_release+0x40/0xb0)
+[    7.098421]  r7:00000000 r6:81a43b80 r5:8fe65360 r4:8fe65048
+[    7.104740] [<806aa0e4>] (i3c_masterdev_release) from [<805f3f04>] (device_release+0x40/0xb0)
+[    7.114254]  r5:00000000 r4:8fe65048
+[    7.118245] [<805f3ec4>] (device_release) from [<808fe754>] (kobject_put+0xc8/0x204)
+[    7.126885]  r5:813978dc r4:8fe65048
+[    7.130877] [<808fe68c>] (kobject_put) from [<805f5fbc>] (put_device+0x20/0x24)
+[    7.139037]  r7:8fe65358 r6:8fe65368 r5:8fe65358 r4:8fe65048
+[    7.145355] [<805f5f9c>] (put_device) from [<806abac4>] (i3c_master_register+0x338/0xb00)
+[    7.154487] [<806ab78c>] (i3c_master_register) from [<806ae084>] (dw_i3c_probe+0x224/0x24c)
+[    7.163811]  r10:00000000 r9:8fe7a100 r8:00000032 r7:819fa810 r6:819fa800 r5:8fe65040
+[    7.172547]  r4:00000000
+[    7.175376] [<806ade60>] (dw_i3c_probe) from [<805fdc14>] (platform_drv_probe+0x44/0x80)
+[    7.184409]  r9:813a25c0 r8:00000000 r7:815ec114 r6:00000000 r5:813a25c0 r4:819fa810
+[    7.193053] [<805fdbd0>] (platform_drv_probe) from [<805fb83c>] (really_probe+0x108/0x50c)
+[    7.202275]  r5:815ec004 r4:819fa810
+[    7.206265] [<805fb734>] (really_probe) from [<805fc180>] (driver_probe_device+0xb4/0x190)
+[    7.215492]  r10:813dc000 r9:80c4385c r8:000000d9 r7:813a25c0 r6:819fa810 r5:00000000
+[    7.224228]  r4:813a25c0
+[    7.227055] [<805fc0cc>] (driver_probe_device) from [<805fc5cc>] (device_driver_attach+0xb8/0xc0)
+[    7.236959]  r9:80c4385c r8:000000d9 r7:813a25c0 r6:819fa854 r4:819fa810
+[    7.244439] [<805fc514>] (device_driver_attach) from [<805fc65c>] (__driver_attach+0x88/0x16c)
+[    7.254051]  r7:00000000 r6:819fa810 r5:00000000 r4:813a25c0
+[    7.260369] [<805fc5d4>] (__driver_attach) from [<805f954c>] (bus_for_each_dev+0x88/0xc8)
+[    7.269489]  r7:00000000 r6:818cc000 r5:805fc5d4 r4:813a25c0
+[    7.275806] [<805f94c4>] (bus_for_each_dev) from [<805fc76c>] (driver_attach+0x2c/0x30)
+[    7.284739]  r7:81397c98 r6:00000000 r5:8fe7db80 r4:813a25c0
+[    7.291057] [<805fc740>] (driver_attach) from [<805f9eec>] (bus_add_driver+0x120/0x200)
+[    7.299984] [<805f9dcc>] (bus_add_driver) from [<805fce44>] (driver_register+0x98/0x128)
+[    7.309005]  r7:80c4383c r6:00000000 r5:00000000 r4:813a25c0
+[    7.315323] [<805fcdac>] (driver_register) from [<805fedb4>] (__platform_driver_register+0x50/0x58)
+[    7.325410]  r5:818cc000 r4:81397c98
+[    7.329404] [<805fed64>] (__platform_driver_register) from [<80c23398>] (dw_i3c_driver_init+0x24/0x28)
+[    7.339790]  r5:818cc000 r4:80c23374
+[    7.343784] [<80c23374>] (dw_i3c_driver_init) from [<80c01300>] (do_one_initcall+0xac/0x1d0)
+[    7.353206] [<80c01254>] (do_one_initcall) from [<80c01630>] (kernel_init_freeable+0x1a8/0x204)
+[    7.362916]  r8:000000d9 r7:80c4383c r6:00000007 r5:819ca2c0 r4:80c67680
+[    7.370398] [<80c01488>] (kernel_init_freeable) from [<8091eb18>] (kernel_init+0x18/0x12c)
+[    7.379616]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:8091eb00
+[    7.388343]  r4:00000000
+[    7.391170] [<8091eb00>] (kernel_init) from [<80100148>] (ret_from_fork+0x14/0x2c)
+[    7.399607] Exception stack(0x818cdfb0 to 0x818cdff8)
+[    7.405243] dfa0:                                     00000000 00000000 00000000 00000000
+[    7.414371] dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
+[    7.423499] dfe0: 00000000 00000000 00000000 00000000 00000013 00000000
+[    7.430879]  r5:8091eb00 r4:00000000
+
+This reverts commit 59165d16c699182b86b5c65181013f1fd88feb62.
+
+Fixes: 59165d16c699 ("i3c master: fix missing destroy_workqueue() on error in i3c_master_register")
+Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
+Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
+Link: https://lore.kernel.org/r/20210408172803.24599-1-jae.hyun.yoo@linux.intel.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/i3c/master.c |    5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+--- a/drivers/i3c/master.c
++++ b/drivers/i3c/master.c
+@@ -2537,7 +2537,7 @@ int i3c_master_register(struct i3c_maste
+       ret = i3c_master_bus_init(master);
+       if (ret)
+-              goto err_destroy_wq;
++              goto err_put_dev;
+       ret = device_add(&master->dev);
+       if (ret)
+@@ -2568,9 +2568,6 @@ err_del_dev:
+ err_cleanup_bus:
+       i3c_master_bus_cleanup(master);
+-err_destroy_wq:
+-      destroy_workqueue(master->wq);
+-
+ err_put_dev:
+       put_device(&master->dev);
diff --git a/queue-5.11/revert-tools-power-turbostat-adjust-for-temperature-offset.patch b/queue-5.11/revert-tools-power-turbostat-adjust-for-temperature-offset.patch
new file mode 100644 (file)
index 0000000..9264ef1
--- /dev/null
@@ -0,0 +1,112 @@
+From b2b94be787bf47eedd5890a249f3318bf9f1f1d5 Mon Sep 17 00:00:00 2001
+From: Len Brown <len.brown@intel.com>
+Date: Thu, 11 Mar 2021 18:36:35 -0500
+Subject: Revert "tools/power turbostat: adjust for temperature offset"
+
+From: Len Brown <len.brown@intel.com>
+
+commit b2b94be787bf47eedd5890a249f3318bf9f1f1d5 upstream.
+
+This reverts commit 6ff7cb371c4bea3dba03a56d774da925e78a5087.
+
+Apparently the TCC offset should not be used to adjust what temperature
+we show the user after all.
+
+(on most systems, TCC offset is 0, FWIW)
+
+Fixes: 6ff7cb371c4b
+
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/power/x86/turbostat/turbostat.c |   62 ++++++++++++++++++----------------
+ 1 file changed, 33 insertions(+), 29 deletions(-)
+
+--- a/tools/power/x86/turbostat/turbostat.c
++++ b/tools/power/x86/turbostat/turbostat.c
+@@ -4822,33 +4822,12 @@ double discover_bclk(unsigned int family
+  * below this value, including the Digital Thermal Sensor (DTS),
+  * Package Thermal Management Sensor (PTM), and thermal event thresholds.
+  */
+-int read_tcc_activation_temp()
++int set_temperature_target(struct thread_data *t, struct core_data *c, struct pkg_data *p)
+ {
+       unsigned long long msr;
+-      unsigned int tcc, target_c, offset_c;
+-
+-      /* Temperature Target MSR is Nehalem and newer only */
+-      if (!do_nhm_platform_info)
+-              return 0;
+-
+-      if (get_msr(base_cpu, MSR_IA32_TEMPERATURE_TARGET, &msr))
+-              return 0;
++      unsigned int target_c_local;
++      int cpu;
+-      target_c = (msr >> 16) & 0xFF;
+-
+-      offset_c = (msr >> 24) & 0xF;
+-
+-      tcc = target_c - offset_c;
+-
+-      if (!quiet)
+-              fprintf(outf, "cpu%d: MSR_IA32_TEMPERATURE_TARGET: 0x%08llx (%d C) (%d default - %d offset)\n",
+-                      base_cpu, msr, tcc, target_c, offset_c);
+-
+-      return tcc;
+-}
+-
+-int set_temperature_target(struct thread_data *t, struct core_data *c, struct pkg_data *p)
+-{
+       /* tcc_activation_temp is used only for dts or ptm */
+       if (!(do_dts || do_ptm))
+               return 0;
+@@ -4857,18 +4836,43 @@ int set_temperature_target(struct thread
+       if (!(t->flags & CPU_IS_FIRST_THREAD_IN_CORE) || !(t->flags & CPU_IS_FIRST_CORE_IN_PACKAGE))
+               return 0;
++      cpu = t->cpu_id;
++      if (cpu_migrate(cpu)) {
++              fprintf(outf, "Could not migrate to CPU %d\n", cpu);
++              return -1;
++      }
++
+       if (tcc_activation_temp_override != 0) {
+               tcc_activation_temp = tcc_activation_temp_override;
+-              fprintf(outf, "Using cmdline TCC Target (%d C)\n", tcc_activation_temp);
++              fprintf(outf, "cpu%d: Using cmdline TCC Target (%d C)\n",
++                      cpu, tcc_activation_temp);
+               return 0;
+       }
+-      tcc_activation_temp = read_tcc_activation_temp();
+-      if (tcc_activation_temp)
+-              return 0;
++      /* Temperature Target MSR is Nehalem and newer only */
++      if (!do_nhm_platform_info)
++              goto guess;
++
++      if (get_msr(base_cpu, MSR_IA32_TEMPERATURE_TARGET, &msr))
++              goto guess;
++
++      target_c_local = (msr >> 16) & 0xFF;
++
++      if (!quiet)
++              fprintf(outf, "cpu%d: MSR_IA32_TEMPERATURE_TARGET: 0x%08llx (%d C)\n",
++                      cpu, msr, target_c_local);
++
++      if (!target_c_local)
++              goto guess;
++
++      tcc_activation_temp = target_c_local;
++
++      return 0;
++guess:
+       tcc_activation_temp = TJMAX_DEFAULT;
+-      fprintf(outf, "Guessing tjMax %d C, Please use -T to specify\n", tcc_activation_temp);
++      fprintf(outf, "cpu%d: Guessing tjMax %d C, Please use -T to specify\n",
++              cpu, tcc_activation_temp);
+       return 0;
+ }
index 6bd50483d30b2c12305a59598e5a59bd0f2b4e74..e45e3c16705310a1653ad711dae835314792e741 100644 (file)
@@ -112,3 +112,10 @@ kvm-arm64-fully-zero-the-vcpu-state-on-reset.patch
 kvm-arm64-fix-kvm_vgic_v3_addr_type_redist_region-read.patch
 kvm-selftests-sync-data-verify-of-dirty-logging-with-guest-sync.patch
 kvm-selftests-always-run-vcpu-thread-with-blocked-sig_ipi.patch
+revert-drivers-net-wan-hdlc_fr-fix-a-double-free-in-pvc_xmit.patch
+revert-i3c-master-fix-missing-destroy_workqueue-on-error-in-i3c_master_register.patch
+mfd-stmpe-revert-constify-static-struct-resource.patch
+ovl-fix-missing-revert_creds-on-error-path.patch
+revert-drm-qxl-do-not-run-release-if-qxl-failed-to-init.patch
+usb-gadget-pch_udc-revert-d3cb25a12138-completely.patch
+revert-tools-power-turbostat-adjust-for-temperature-offset.patch
diff --git a/queue-5.11/usb-gadget-pch_udc-revert-d3cb25a12138-completely.patch b/queue-5.11/usb-gadget-pch_udc-revert-d3cb25a12138-completely.patch
new file mode 100644 (file)
index 0000000..305b447
--- /dev/null
@@ -0,0 +1,83 @@
+From 50a318cc9b54a36f00beadf77e578a50f3620477 Mon Sep 17 00:00:00 2001
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Date: Tue, 23 Mar 2021 17:36:24 +0200
+Subject: usb: gadget: pch_udc: Revert d3cb25a12138 completely
+
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+
+commit 50a318cc9b54a36f00beadf77e578a50f3620477 upstream.
+
+The commit d3cb25a12138 ("usb: gadget: udc: fix spin_lock in pch_udc")
+obviously was not thought through and had made the situation even worse
+than it was before. Two changes after almost reverted it. but a few
+leftovers have been left as it. With this revert d3cb25a12138 completely.
+
+While at it, narrow down the scope of unlocked section to prevent
+potential race when prot_stall is assigned.
+
+Fixes: d3cb25a12138 ("usb: gadget: udc: fix spin_lock in pch_udc")
+Fixes: 9903b6bedd38 ("usb: gadget: pch-udc: fix lock")
+Fixes: 1d23d16a88e6 ("usb: gadget: pch_udc: reorder spin_[un]lock to avoid deadlock")
+Cc: Iago Abal <mail@iagoabal.eu>
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Link: https://lore.kernel.org/r/20210323153626.54908-5-andriy.shevchenko@linux.intel.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/gadget/udc/pch_udc.c |   17 +++++++++++++----
+ 1 file changed, 13 insertions(+), 4 deletions(-)
+
+--- a/drivers/usb/gadget/udc/pch_udc.c
++++ b/drivers/usb/gadget/udc/pch_udc.c
+@@ -596,18 +596,22 @@ static void pch_udc_reconnect(struct pch
+ static inline void pch_udc_vbus_session(struct pch_udc_dev *dev,
+                                         int is_active)
+ {
++      unsigned long           iflags;
++
++      spin_lock_irqsave(&dev->lock, iflags);
+       if (is_active) {
+               pch_udc_reconnect(dev);
+               dev->vbus_session = 1;
+       } else {
+               if (dev->driver && dev->driver->disconnect) {
+-                      spin_lock(&dev->lock);
++                      spin_unlock_irqrestore(&dev->lock, iflags);
+                       dev->driver->disconnect(&dev->gadget);
+-                      spin_unlock(&dev->lock);
++                      spin_lock_irqsave(&dev->lock, iflags);
+               }
+               pch_udc_set_disconnect(dev);
+               dev->vbus_session = 0;
+       }
++      spin_unlock_irqrestore(&dev->lock, iflags);
+ }
+ /**
+@@ -1166,20 +1170,25 @@ static int pch_udc_pcd_selfpowered(struc
+ static int pch_udc_pcd_pullup(struct usb_gadget *gadget, int is_on)
+ {
+       struct pch_udc_dev      *dev;
++      unsigned long           iflags;
+       if (!gadget)
+               return -EINVAL;
++
+       dev = container_of(gadget, struct pch_udc_dev, gadget);
++
++      spin_lock_irqsave(&dev->lock, iflags);
+       if (is_on) {
+               pch_udc_reconnect(dev);
+       } else {
+               if (dev->driver && dev->driver->disconnect) {
+-                      spin_lock(&dev->lock);
++                      spin_unlock_irqrestore(&dev->lock, iflags);
+                       dev->driver->disconnect(&dev->gadget);
+-                      spin_unlock(&dev->lock);
++                      spin_lock_irqsave(&dev->lock, iflags);
+               }
+               pch_udc_set_disconnect(dev);
+       }
++      spin_unlock_irqrestore(&dev->lock, iflags);
+       return 0;
+ }