]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Mar 2023 07:29:24 +0000 (08:29 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 6 Mar 2023 07:29:24 +0000 (08:29 +0100)
added patches:
rtc-pm8xxx-fix-set-alarm-race.patch
wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch

queue-4.14/rtc-pm8xxx-fix-set-alarm-race.patch [new file with mode: 0644]
queue-4.14/series
queue-4.14/wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch [new file with mode: 0644]

diff --git a/queue-4.14/rtc-pm8xxx-fix-set-alarm-race.patch b/queue-4.14/rtc-pm8xxx-fix-set-alarm-race.patch
new file mode 100644 (file)
index 0000000..1dff86a
--- /dev/null
@@ -0,0 +1,74 @@
+From c88db0eff9722fc2b6c4d172a50471d20e08ecc6 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan+linaro@kernel.org>
+Date: Thu, 2 Feb 2023 16:54:27 +0100
+Subject: rtc: pm8xxx: fix set-alarm race
+
+From: Johan Hovold <johan+linaro@kernel.org>
+
+commit c88db0eff9722fc2b6c4d172a50471d20e08ecc6 upstream.
+
+Make sure to disable the alarm before updating the four alarm time
+registers to avoid spurious alarms during the update.
+
+Note that the disable needs to be done outside of the ctrl_reg_lock
+section to prevent a racing alarm interrupt from disabling the newly set
+alarm when the lock is released.
+
+Fixes: 9a9a54ad7aa2 ("drivers/rtc: add support for Qualcomm PMIC8xxx RTC")
+Cc: stable@vger.kernel.org      # 3.1
+Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
+Reviewed-by: David Collins <quic_collinsd@quicinc.com>
+Link: https://lore.kernel.org/r/20230202155448.6715-2-johan+linaro@kernel.org
+Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/rtc/rtc-pm8xxx.c |   24 ++++++++++--------------
+ 1 file changed, 10 insertions(+), 14 deletions(-)
+
+--- a/drivers/rtc/rtc-pm8xxx.c
++++ b/drivers/rtc/rtc-pm8xxx.c
+@@ -235,7 +235,6 @@ static int pm8xxx_rtc_set_alarm(struct d
+ {
+       int rc, i;
+       u8 value[NUM_8_BIT_RTC_REGS];
+-      unsigned int ctrl_reg;
+       unsigned long secs, irq_flags;
+       struct pm8xxx_rtc *rtc_dd = dev_get_drvdata(dev);
+       const struct pm8xxx_rtc_regs *regs = rtc_dd->regs;
+@@ -247,6 +246,11 @@ static int pm8xxx_rtc_set_alarm(struct d
+               secs >>= 8;
+       }
++      rc = regmap_update_bits(rtc_dd->regmap, regs->alarm_ctrl,
++                              regs->alarm_en, 0);
++      if (rc)
++              return rc;
++
+       spin_lock_irqsave(&rtc_dd->ctrl_reg_lock, irq_flags);
+       rc = regmap_bulk_write(rtc_dd->regmap, regs->alarm_rw, value,
+@@ -256,19 +260,11 @@ static int pm8xxx_rtc_set_alarm(struct d
+               goto rtc_rw_fail;
+       }
+-      rc = regmap_read(rtc_dd->regmap, regs->alarm_ctrl, &ctrl_reg);
+-      if (rc)
+-              goto rtc_rw_fail;
+-
+-      if (alarm->enabled)
+-              ctrl_reg |= regs->alarm_en;
+-      else
+-              ctrl_reg &= ~regs->alarm_en;
+-
+-      rc = regmap_write(rtc_dd->regmap, regs->alarm_ctrl, ctrl_reg);
+-      if (rc) {
+-              dev_err(dev, "Write to RTC alarm control register failed\n");
+-              goto rtc_rw_fail;
++      if (alarm->enabled) {
++              rc = regmap_update_bits(rtc_dd->regmap, regs->alarm_ctrl,
++                                      regs->alarm_en, regs->alarm_en);
++              if (rc)
++                      goto rtc_rw_fail;
+       }
+       dev_dbg(dev, "Alarm Set for h:r:s=%d:%d:%d, d/m/y=%d/%d/%d\n",
index 7f0903f329228645e127440ec5de0bdf79ac20f2..08d83286375b5adad9f0aab6a642c5214e1f1813 100644 (file)
@@ -97,3 +97,5 @@ pinctrl-at91-use-devm_kasprintf-to-avoid-potential-l.patch
 dm-thin-add-cond_resched-to-various-workqueue-loops.patch
 dm-cache-add-cond_resched-to-various-workqueue-loops.patch
 spi-bcm63xx-hsspi-fix-multi-bit-mode-setting.patch
+wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch
+rtc-pm8xxx-fix-set-alarm-race.patch
diff --git a/queue-4.14/wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch b/queue-4.14/wifi-rtl8xxxu-fixing-transmisison-failure-for-rtl8192eu.patch
new file mode 100644 (file)
index 0000000..c18d9ce
--- /dev/null
@@ -0,0 +1,36 @@
+From c6015bf3ff1ffb3caa27eb913797438a0fc634a0 Mon Sep 17 00:00:00 2001
+From: Jun ASAKA <JunASAKA@zzy040330.moe>
+Date: Sat, 17 Dec 2022 11:06:59 +0800
+Subject: wifi: rtl8xxxu: fixing transmisison failure for rtl8192eu
+
+From: Jun ASAKA <JunASAKA@zzy040330.moe>
+
+commit c6015bf3ff1ffb3caa27eb913797438a0fc634a0 upstream.
+
+Fixing transmission failure which results in
+"authentication with ... timed out". This can be
+fixed by disable the REG_TXPAUSE.
+
+Signed-off-by: Jun ASAKA <JunASAKA@zzy040330.moe>
+Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
+Signed-off-by: Kalle Valo <kvalo@kernel.org>
+Link: https://lore.kernel.org/r/20221217030659.12577-1-JunASAKA@zzy040330.moe
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c
++++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c
+@@ -1629,6 +1629,11 @@ static void rtl8192e_enable_rf(struct rt
+       val8 = rtl8xxxu_read8(priv, REG_PAD_CTRL1);
+       val8 &= ~BIT(0);
+       rtl8xxxu_write8(priv, REG_PAD_CTRL1, val8);
++
++      /*
++       * Fix transmission failure of rtl8192e.
++       */
++      rtl8xxxu_write8(priv, REG_TXPAUSE, 0x00);
+ }
+ struct rtl8xxxu_fileops rtl8192eu_fops = {