]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 5.4
authorSasha Levin <sashal@kernel.org>
Sun, 24 Oct 2021 21:48:49 +0000 (17:48 -0400)
committerSasha Levin <sashal@kernel.org>
Sun, 24 Oct 2021 21:48:49 +0000 (17:48 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-5.4/alsa-hda-avoid-write-to-statests-if-controller-is-in.patch [new file with mode: 0644]
queue-5.4/arm-dts-spear3xx-fix-gmac-node.patch [new file with mode: 0644]
queue-5.4/btrfs-deal-with-errors-when-checking-if-a-dir-entry-.patch [new file with mode: 0644]
queue-5.4/gcc-plugins-structleak-add-makefile-var-for-disablin.patch [new file with mode: 0644]
queue-5.4/input-snvs_pwrkey-add-clk-handling.patch [new file with mode: 0644]
queue-5.4/isdn-misdn-fix-sleeping-function-called-from-invalid.patch [new file with mode: 0644]
queue-5.4/net-stmmac-add-support-for-dwmac-3.40a.patch [new file with mode: 0644]
queue-5.4/platform-x86-intel_scu_ipc-update-timeout-value-in-c.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/alsa-hda-avoid-write-to-statests-if-controller-is-in.patch b/queue-5.4/alsa-hda-avoid-write-to-statests-if-controller-is-in.patch
new file mode 100644 (file)
index 0000000..6b1da3c
--- /dev/null
@@ -0,0 +1,66 @@
+From 8ae79a3f757bf613d2d87ba8a4abe61372cd23ad Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 12 Oct 2021 17:29:35 +0300
+Subject: ALSA: hda: avoid write to STATESTS if controller is in reset
+
+From: Kai Vehmanen <kai.vehmanen@linux.intel.com>
+
+[ Upstream commit b37a15188eae9d4c49c5bb035e0c8d4058e4d9b3 ]
+
+The snd_hdac_bus_reset_link() contains logic to clear STATESTS register
+before performing controller reset. This code dates back to an old
+bugfix in commit e8a7f136f5ed ("[ALSA] hda-intel - Improve HD-audio
+codec probing robustness"). Originally the code was added to
+azx_reset().
+
+The code was moved around in commit a41d122449be ("ALSA: hda - Embed bus
+into controller object") and ended up to snd_hdac_bus_reset_link() and
+called primarily via snd_hdac_bus_init_chip().
+
+The logic to clear STATESTS is correct when snd_hdac_bus_init_chip() is
+called when controller is not in reset. In this case, STATESTS can be
+cleared. This can be useful e.g. when forcing a controller reset to retry
+codec probe. A normal non-power-on reset will not clear the bits.
+
+However, this old logic is problematic when controller is already in
+reset. The HDA specification states that controller must be taken out of
+reset before writing to registers other than GCTL.CRST (1.0a spec,
+3.3.7). The write to STATESTS in snd_hdac_bus_reset_link() will be lost
+if the controller is already in reset per the HDA specification mentioned.
+
+This has been harmless on older hardware. On newer generation of Intel
+PCIe based HDA controllers, if configured to report issues, this write
+will emit an unsupported request error. If ACPI Platform Error Interface
+(APEI) is enabled in kernel, this will end up to kernel log.
+
+Fix the code in snd_hdac_bus_reset_link() to only clear the STATESTS if
+the function is called when controller is not in reset. Otherwise
+clearing the bits is not possible and should be skipped.
+
+Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
+Link: https://lore.kernel.org/r/20211012142935.3731820-1-kai.vehmanen@linux.intel.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/hda/hdac_controller.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/sound/hda/hdac_controller.c b/sound/hda/hdac_controller.c
+index 7e7be8e4dcf9..87ba66dcfd47 100644
+--- a/sound/hda/hdac_controller.c
++++ b/sound/hda/hdac_controller.c
+@@ -395,8 +395,9 @@ int snd_hdac_bus_reset_link(struct hdac_bus *bus, bool full_reset)
+       if (!full_reset)
+               goto skip_reset;
+-      /* clear STATESTS */
+-      snd_hdac_chip_writew(bus, STATESTS, STATESTS_INT_MASK);
++      /* clear STATESTS if not in reset */
++      if (snd_hdac_chip_readb(bus, GCTL) & AZX_GCTL_RESET)
++              snd_hdac_chip_writew(bus, STATESTS, STATESTS_INT_MASK);
+       /* reset controller */
+       snd_hdac_bus_enter_link_reset(bus);
+-- 
+2.33.0
+
diff --git a/queue-5.4/arm-dts-spear3xx-fix-gmac-node.patch b/queue-5.4/arm-dts-spear3xx-fix-gmac-node.patch
new file mode 100644 (file)
index 0000000..52cc819
--- /dev/null
@@ -0,0 +1,41 @@
+From eab322c8448e6929e0de8357ee773f52156a1ba6 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 8 Oct 2021 12:34:40 +0200
+Subject: ARM: dts: spear3xx: Fix gmac node
+
+From: Herve Codina <herve.codina@bootlin.com>
+
+[ Upstream commit 6636fec29cdf6665bd219564609e8651f6ddc142 ]
+
+On SPEAr3xx, ethernet driver is not compatible with the SPEAr600
+one.
+Indeed, SPEAr3xx uses an earlier version of this IP (v3.40) and
+needs some driver tuning compare to SPEAr600.
+
+The v3.40 IP support was added to stmmac driver and this patch
+fixes this issue and use the correct compatible string for
+SPEAr3xx
+
+Signed-off-by: Herve Codina <herve.codina@bootlin.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm/boot/dts/spear3xx.dtsi | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm/boot/dts/spear3xx.dtsi b/arch/arm/boot/dts/spear3xx.dtsi
+index f266b7b03482..cc88ebe7a60c 100644
+--- a/arch/arm/boot/dts/spear3xx.dtsi
++++ b/arch/arm/boot/dts/spear3xx.dtsi
+@@ -47,7 +47,7 @@
+               };
+               gmac: eth@e0800000 {
+-                      compatible = "st,spear600-gmac";
++                      compatible = "snps,dwmac-3.40a";
+                       reg = <0xe0800000 0x8000>;
+                       interrupts = <23 22>;
+                       interrupt-names = "macirq", "eth_wake_irq";
+-- 
+2.33.0
+
diff --git a/queue-5.4/btrfs-deal-with-errors-when-checking-if-a-dir-entry-.patch b/queue-5.4/btrfs-deal-with-errors-when-checking-if-a-dir-entry-.patch
new file mode 100644 (file)
index 0000000..8302a61
--- /dev/null
@@ -0,0 +1,121 @@
+From be17aad935121ea7bb5704b347c2a2271893d49e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 1 Oct 2021 13:52:30 +0100
+Subject: btrfs: deal with errors when checking if a dir entry exists during
+ log replay
+
+From: Filipe Manana <fdmanana@suse.com>
+
+[ Upstream commit 77a5b9e3d14cbce49ceed2766b2003c034c066dc ]
+
+Currently inode_in_dir() ignores errors returned from
+btrfs_lookup_dir_index_item() and from btrfs_lookup_dir_item(), treating
+any errors as if the directory entry does not exists in the fs/subvolume
+tree, which is obviously not correct, as we can get errors such as -EIO
+when reading extent buffers while searching the fs/subvolume's tree.
+
+Fix that by making inode_in_dir() return the errors and making its only
+caller, add_inode_ref(), deal with returned errors as well.
+
+Signed-off-by: Filipe Manana <fdmanana@suse.com>
+Reviewed-by: David Sterba <dsterba@suse.com>
+Signed-off-by: David Sterba <dsterba@suse.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/btrfs/tree-log.c | 47 ++++++++++++++++++++++++++++-----------------
+ 1 file changed, 29 insertions(+), 18 deletions(-)
+
+diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
+index 9d358dafef36..f34205569987 100644
+--- a/fs/btrfs/tree-log.c
++++ b/fs/btrfs/tree-log.c
+@@ -900,9 +900,11 @@ out:
+ }
+ /*
+- * helper function to see if a given name and sequence number found
+- * in an inode back reference are already in a directory and correctly
+- * point to this inode
++ * See if a given name and sequence number found in an inode back reference are
++ * already in a directory and correctly point to this inode.
++ *
++ * Returns: < 0 on error, 0 if the directory entry does not exists and 1 if it
++ * exists.
+  */
+ static noinline int inode_in_dir(struct btrfs_root *root,
+                                struct btrfs_path *path,
+@@ -911,29 +913,35 @@ static noinline int inode_in_dir(struct btrfs_root *root,
+ {
+       struct btrfs_dir_item *di;
+       struct btrfs_key location;
+-      int match = 0;
++      int ret = 0;
+       di = btrfs_lookup_dir_index_item(NULL, root, path, dirid,
+                                        index, name, name_len, 0);
+-      if (di && !IS_ERR(di)) {
++      if (IS_ERR(di)) {
++              if (PTR_ERR(di) != -ENOENT)
++                      ret = PTR_ERR(di);
++              goto out;
++      } else if (di) {
+               btrfs_dir_item_key_to_cpu(path->nodes[0], di, &location);
+               if (location.objectid != objectid)
+                       goto out;
+-      } else
++      } else {
+               goto out;
+-      btrfs_release_path(path);
++      }
++      btrfs_release_path(path);
+       di = btrfs_lookup_dir_item(NULL, root, path, dirid, name, name_len, 0);
+-      if (di && !IS_ERR(di)) {
+-              btrfs_dir_item_key_to_cpu(path->nodes[0], di, &location);
+-              if (location.objectid != objectid)
+-                      goto out;
+-      } else
++      if (IS_ERR(di)) {
++              ret = PTR_ERR(di);
+               goto out;
+-      match = 1;
++      } else if (di) {
++              btrfs_dir_item_key_to_cpu(path->nodes[0], di, &location);
++              if (location.objectid == objectid)
++                      ret = 1;
++      }
+ out:
+       btrfs_release_path(path);
+-      return match;
++      return ret;
+ }
+ /*
+@@ -1500,10 +1508,12 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
+               if (ret)
+                       goto out;
+-              /* if we already have a perfect match, we're done */
+-              if (!inode_in_dir(root, path, btrfs_ino(BTRFS_I(dir)),
+-                                      btrfs_ino(BTRFS_I(inode)), ref_index,
+-                                      name, namelen)) {
++              ret = inode_in_dir(root, path, btrfs_ino(BTRFS_I(dir)),
++                                 btrfs_ino(BTRFS_I(inode)), ref_index,
++                                 name, namelen);
++              if (ret < 0) {
++                      goto out;
++              } else if (ret == 0) {
+                       /*
+                        * look for a conflicting back reference in the
+                        * metadata. if we find one we have to unlink that name
+@@ -1561,6 +1571,7 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,
+                       btrfs_update_inode(trans, root, inode);
+               }
++              /* Else, ret == 1, we already have a perfect match, we're done. */
+               ref_ptr = (unsigned long)(ref_ptr + ref_struct_size) + namelen;
+               kfree(name);
+-- 
+2.33.0
+
diff --git a/queue-5.4/gcc-plugins-structleak-add-makefile-var-for-disablin.patch b/queue-5.4/gcc-plugins-structleak-add-makefile-var-for-disablin.patch
new file mode 100644 (file)
index 0000000..8ac313e
--- /dev/null
@@ -0,0 +1,40 @@
+From a6dfb5c12803ad21d41c65a48bef7f21703c6809 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 29 Sep 2021 14:27:09 -0700
+Subject: gcc-plugins/structleak: add makefile var for disabling structleak
+
+From: Brendan Higgins <brendanhiggins@google.com>
+
+[ Upstream commit 554afc3b9797511e3245864e32aebeb6abbab1e3 ]
+
+KUnit and structleak don't play nice, so add a makefile variable for
+enabling structleak when it complains.
+
+Co-developed-by: Kees Cook <keescook@chromium.org>
+Signed-off-by: Kees Cook <keescook@chromium.org>
+Signed-off-by: Brendan Higgins <brendanhiggins@google.com>
+Reviewed-by: David Gow <davidgow@google.com>
+Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ scripts/Makefile.gcc-plugins | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/scripts/Makefile.gcc-plugins b/scripts/Makefile.gcc-plugins
+index 5f7df50cfe7a..63d21489216b 100644
+--- a/scripts/Makefile.gcc-plugins
++++ b/scripts/Makefile.gcc-plugins
+@@ -19,6 +19,10 @@ gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF)             \
+               += -fplugin-arg-structleak_plugin-byref
+ gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL)   \
+               += -fplugin-arg-structleak_plugin-byref-all
++ifdef CONFIG_GCC_PLUGIN_STRUCTLEAK
++    DISABLE_STRUCTLEAK_PLUGIN += -fplugin-arg-structleak_plugin-disable
++endif
++export DISABLE_STRUCTLEAK_PLUGIN
+ gcc-plugin-cflags-$(CONFIG_GCC_PLUGIN_STRUCTLEAK)             \
+               += -DSTRUCTLEAK_PLUGIN
+-- 
+2.33.0
+
diff --git a/queue-5.4/input-snvs_pwrkey-add-clk-handling.patch b/queue-5.4/input-snvs_pwrkey-add-clk-handling.patch
new file mode 100644 (file)
index 0000000..13b2285
--- /dev/null
@@ -0,0 +1,96 @@
+From 5ee8baf118fd48e3ae3853529fc740d931456f34 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 15 Oct 2021 21:19:33 -0700
+Subject: Input: snvs_pwrkey - add clk handling
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
+
+[ Upstream commit d997cc1715df7b6c3df798881fb9941acf0079f8 ]
+
+On i.MX7S and i.MX8M* (but not i.MX6*) the pwrkey device has an
+associated clock. Accessing the registers requires that this clock is
+enabled. Binding the driver on at least i.MX7S and i.MX8MP while not
+having the clock enabled results in a complete hang of the machine.
+(This usually only happens if snvs_pwrkey is built as a module and the
+rtc-snvs driver isn't already bound because at bootup the required clk
+is on and only gets disabled when the clk framework disables unused clks
+late during boot.)
+
+This completes the fix in commit 135be16d3505 ("ARM: dts: imx7s: add
+snvs clock to pwrkey").
+
+Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
+Link: https://lore.kernel.org/r/20211013062848.2667192-1-u.kleine-koenig@pengutronix.de
+Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/input/keyboard/snvs_pwrkey.c | 29 ++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+diff --git a/drivers/input/keyboard/snvs_pwrkey.c b/drivers/input/keyboard/snvs_pwrkey.c
+index e76b7a400a1c..248bb86f4b3f 100644
+--- a/drivers/input/keyboard/snvs_pwrkey.c
++++ b/drivers/input/keyboard/snvs_pwrkey.c
+@@ -3,6 +3,7 @@
+ // Driver for the IMX SNVS ON/OFF Power Key
+ // Copyright (C) 2015 Freescale Semiconductor, Inc. All Rights Reserved.
++#include <linux/clk.h>
+ #include <linux/device.h>
+ #include <linux/err.h>
+ #include <linux/init.h>
+@@ -81,6 +82,11 @@ static irqreturn_t imx_snvs_pwrkey_interrupt(int irq, void *dev_id)
+       return IRQ_HANDLED;
+ }
++static void imx_snvs_pwrkey_disable_clk(void *data)
++{
++      clk_disable_unprepare(data);
++}
++
+ static void imx_snvs_pwrkey_act(void *pdata)
+ {
+       struct pwrkey_drv_data *pd = pdata;
+@@ -93,6 +99,7 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
+       struct pwrkey_drv_data *pdata = NULL;
+       struct input_dev *input = NULL;
+       struct device_node *np;
++      struct clk *clk;
+       int error;
+       /* Get SNVS register Page */
+@@ -115,6 +122,28 @@ static int imx_snvs_pwrkey_probe(struct platform_device *pdev)
+               dev_warn(&pdev->dev, "KEY_POWER without setting in dts\n");
+       }
++      clk = devm_clk_get_optional(&pdev->dev, NULL);
++      if (IS_ERR(clk)) {
++              dev_err(&pdev->dev, "Failed to get snvs clock (%pe)\n", clk);
++              return PTR_ERR(clk);
++      }
++
++      error = clk_prepare_enable(clk);
++      if (error) {
++              dev_err(&pdev->dev, "Failed to enable snvs clock (%pe)\n",
++                      ERR_PTR(error));
++              return error;
++      }
++
++      error = devm_add_action_or_reset(&pdev->dev,
++                                       imx_snvs_pwrkey_disable_clk, clk);
++      if (error) {
++              dev_err(&pdev->dev,
++                      "Failed to register clock cleanup handler (%pe)\n",
++                      ERR_PTR(error));
++              return error;
++      }
++
+       pdata->wakeup = of_property_read_bool(np, "wakeup-source");
+       pdata->irq = platform_get_irq(pdev, 0);
+-- 
+2.33.0
+
diff --git a/queue-5.4/isdn-misdn-fix-sleeping-function-called-from-invalid.patch b/queue-5.4/isdn-misdn-fix-sleeping-function-called-from-invalid.patch
new file mode 100644 (file)
index 0000000..71f7e92
--- /dev/null
@@ -0,0 +1,80 @@
+From 5f41575ea6fa36f5fa7e46349b44377d533c6d83 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 9 Oct 2021 11:33:49 +0000
+Subject: isdn: mISDN: Fix sleeping function called from invalid context
+
+From: Zheyu Ma <zheyuma97@gmail.com>
+
+[ Upstream commit 6510e80a0b81b5d814e3aea6297ba42f5e76f73c ]
+
+The driver can call card->isac.release() function from an atomic
+context.
+
+Fix this by calling this function after releasing the lock.
+
+The following log reveals it:
+
+[   44.168226 ] BUG: sleeping function called from invalid context at kernel/workqueue.c:3018
+[   44.168941 ] in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 5475, name: modprobe
+[   44.169574 ] INFO: lockdep is turned off.
+[   44.169899 ] irq event stamp: 0
+[   44.170160 ] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
+[   44.170627 ] hardirqs last disabled at (0): [<ffffffff814209ed>] copy_process+0x132d/0x3e00
+[   44.171240 ] softirqs last  enabled at (0): [<ffffffff81420a1a>] copy_process+0x135a/0x3e00
+[   44.171852 ] softirqs last disabled at (0): [<0000000000000000>] 0x0
+[   44.172318 ] Preemption disabled at:
+[   44.172320 ] [<ffffffffa009b0a9>] nj_release+0x69/0x500 [netjet]
+[   44.174441 ] Call Trace:
+[   44.174630 ]  dump_stack_lvl+0xa8/0xd1
+[   44.174912 ]  dump_stack+0x15/0x17
+[   44.175166 ]  ___might_sleep+0x3a2/0x510
+[   44.175459 ]  ? nj_release+0x69/0x500 [netjet]
+[   44.175791 ]  __might_sleep+0x82/0xe0
+[   44.176063 ]  ? start_flush_work+0x20/0x7b0
+[   44.176375 ]  start_flush_work+0x33/0x7b0
+[   44.176672 ]  ? trace_irq_enable_rcuidle+0x85/0x170
+[   44.177034 ]  ? kasan_quarantine_put+0xaa/0x1f0
+[   44.177372 ]  ? kasan_quarantine_put+0xaa/0x1f0
+[   44.177711 ]  __flush_work+0x11a/0x1a0
+[   44.177991 ]  ? flush_work+0x20/0x20
+[   44.178257 ]  ? lock_release+0x13c/0x8f0
+[   44.178550 ]  ? __kasan_check_write+0x14/0x20
+[   44.178872 ]  ? do_raw_spin_lock+0x148/0x360
+[   44.179187 ]  ? read_lock_is_recursive+0x20/0x20
+[   44.179530 ]  ? __kasan_check_read+0x11/0x20
+[   44.179846 ]  ? do_raw_spin_unlock+0x55/0x900
+[   44.180168 ]  ? ____kasan_slab_free+0x116/0x140
+[   44.180505 ]  ? _raw_spin_unlock_irqrestore+0x41/0x60
+[   44.180878 ]  ? skb_queue_purge+0x1a3/0x1c0
+[   44.181189 ]  ? kfree+0x13e/0x290
+[   44.181438 ]  flush_work+0x17/0x20
+[   44.181695 ]  mISDN_freedchannel+0xe8/0x100
+[   44.182006 ]  isac_release+0x210/0x260 [mISDNipac]
+[   44.182366 ]  nj_release+0xf6/0x500 [netjet]
+[   44.182685 ]  nj_remove+0x48/0x70 [netjet]
+[   44.182989 ]  pci_device_remove+0xa9/0x250
+
+Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/isdn/hardware/mISDN/netjet.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/isdn/hardware/mISDN/netjet.c b/drivers/isdn/hardware/mISDN/netjet.c
+index 9e6aab04f9d6..8299defff55a 100644
+--- a/drivers/isdn/hardware/mISDN/netjet.c
++++ b/drivers/isdn/hardware/mISDN/netjet.c
+@@ -949,8 +949,8 @@ nj_release(struct tiger_hw *card)
+               nj_disable_hwirq(card);
+               mode_tiger(&card->bc[0], ISDN_P_NONE);
+               mode_tiger(&card->bc[1], ISDN_P_NONE);
+-              card->isac.release(&card->isac);
+               spin_unlock_irqrestore(&card->lock, flags);
++              card->isac.release(&card->isac);
+               release_region(card->base, card->base_s);
+               card->base_s = 0;
+       }
+-- 
+2.33.0
+
diff --git a/queue-5.4/net-stmmac-add-support-for-dwmac-3.40a.patch b/queue-5.4/net-stmmac-add-support-for-dwmac-3.40a.patch
new file mode 100644 (file)
index 0000000..e4d60d5
--- /dev/null
@@ -0,0 +1,53 @@
+From f690b684c279354188eb9674d4ee3ff875686280 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 8 Oct 2021 12:34:39 +0200
+Subject: net: stmmac: add support for dwmac 3.40a
+
+From: Herve Codina <herve.codina@bootlin.com>
+
+[ Upstream commit 9cb1d19f47fafad7dcf7c8564e633440c946cfd7 ]
+
+dwmac 3.40a is an old ip version that can be found on SPEAr3xx soc.
+
+Signed-off-by: Herve Codina <herve.codina@bootlin.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c   | 1 +
+ drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 8 ++++++++
+ 2 files changed, 9 insertions(+)
+
+diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c
+index fad503820e04..b3365b34cac7 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c
++++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-generic.c
+@@ -71,6 +71,7 @@ err_remove_config_dt:
+ static const struct of_device_id dwmac_generic_match[] = {
+       { .compatible = "st,spear600-gmac"},
++      { .compatible = "snps,dwmac-3.40a"},
+       { .compatible = "snps,dwmac-3.50a"},
+       { .compatible = "snps,dwmac-3.610"},
+       { .compatible = "snps,dwmac-3.70a"},
+diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+index 678aa2b001e0..a46fea472bc4 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+@@ -505,6 +505,14 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac)
+               plat->pmt = 1;
+       }
++      if (of_device_is_compatible(np, "snps,dwmac-3.40a")) {
++              plat->has_gmac = 1;
++              plat->enh_desc = 1;
++              plat->tx_coe = 1;
++              plat->bugged_jumbo = 1;
++              plat->pmt = 1;
++      }
++
+       if (of_device_is_compatible(np, "snps,dwmac-4.00") ||
+           of_device_is_compatible(np, "snps,dwmac-4.10a") ||
+           of_device_is_compatible(np, "snps,dwmac-4.20a")) {
+-- 
+2.33.0
+
diff --git a/queue-5.4/platform-x86-intel_scu_ipc-update-timeout-value-in-c.patch b/queue-5.4/platform-x86-intel_scu_ipc-update-timeout-value-in-c.patch
new file mode 100644 (file)
index 0000000..34de542
--- /dev/null
@@ -0,0 +1,43 @@
+From 0fb618be9a8405f06ff26a176f59da69b813f9bf Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 28 Sep 2021 03:19:34 -0700
+Subject: platform/x86: intel_scu_ipc: Update timeout value in comment
+
+From: Prashant Malani <pmalani@chromium.org>
+
+[ Upstream commit a0c5814b9933f25ecb6de169483c5b88cf632bca ]
+
+The comment decribing the IPC timeout hadn't been updated when the
+actual timeout was changed from 3 to 5 seconds in
+commit a7d53dbbc70a ("platform/x86: intel_scu_ipc: Increase virtual
+timeout from 3 to 5 seconds") .
+
+Since the value is anyway updated to 10s now, take this opportunity to
+update the value in the comment too.
+
+Signed-off-by: Prashant Malani <pmalani@chromium.org>
+Cc: Benson Leung <bleung@chromium.org>
+Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
+Link: https://lore.kernel.org/r/20210928101932.2543937-4-pmalani@chromium.org
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/platform/x86/intel_scu_ipc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/platform/x86/intel_scu_ipc.c b/drivers/platform/x86/intel_scu_ipc.c
+index e330ec73c465..bcb516892d01 100644
+--- a/drivers/platform/x86/intel_scu_ipc.c
++++ b/drivers/platform/x86/intel_scu_ipc.c
+@@ -181,7 +181,7 @@ static inline int busy_loop(struct intel_scu_ipc_dev *scu)
+       return 0;
+ }
+-/* Wait till ipc ioc interrupt is received or timeout in 3 HZ */
++/* Wait till ipc ioc interrupt is received or timeout in 10 HZ */
+ static inline int ipc_wait_for_interrupt(struct intel_scu_ipc_dev *scu)
+ {
+       int status;
+-- 
+2.33.0
+
index 84025d254742abd74f74ffa5bf09705fba00635c..6974f489bf20cb1c4f4fca781120bd41b7479f11 100644 (file)
@@ -42,3 +42,11 @@ nfc-nci-fix-the-uaf-of-rf_conn_info-object.patch
 isdn-cpai-check-ctr-cnr-to-avoid-array-index-out-of-bound.patch
 netfilter-kconfig-use-default-y-instead-of-m-for-bool-config-option.patch
 selftests-netfilter-remove-stray-bash-debug-line.patch
+gcc-plugins-structleak-add-makefile-var-for-disablin.patch
+btrfs-deal-with-errors-when-checking-if-a-dir-entry-.patch
+net-stmmac-add-support-for-dwmac-3.40a.patch
+arm-dts-spear3xx-fix-gmac-node.patch
+isdn-misdn-fix-sleeping-function-called-from-invalid.patch
+platform-x86-intel_scu_ipc-update-timeout-value-in-c.patch
+alsa-hda-avoid-write-to-statests-if-controller-is-in.patch
+input-snvs_pwrkey-add-clk-handling.patch