]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 6.1
authorSasha Levin <sashal@kernel.org>
Thu, 19 Sep 2024 19:36:29 +0000 (15:36 -0400)
committerSasha Levin <sashal@kernel.org>
Thu, 19 Sep 2024 19:36:29 +0000 (15:36 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
63 files changed:
queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch [new file with mode: 0644]
queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-30958 [new file with mode: 0644]
queue-6.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch [new file with mode: 0644]
queue-6.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-25726 [new file with mode: 0644]
queue-6.1/asoc-allow-module-autoloading-for-table-board_ids.patch [new file with mode: 0644]
queue-6.1/asoc-allow-module-autoloading-for-table-board_ids.patch-3580 [new file with mode: 0644]
queue-6.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch [new file with mode: 0644]
queue-6.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch-6485 [new file with mode: 0644]
queue-6.1/asoc-intel-fix-module-autoloading.patch [new file with mode: 0644]
queue-6.1/asoc-intel-fix-module-autoloading.patch-15841 [new file with mode: 0644]
queue-6.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch [new file with mode: 0644]
queue-6.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-12345 [new file with mode: 0644]
queue-6.1/asoc-sof-mediatek-add-missing-board-compatible.patch [new file with mode: 0644]
queue-6.1/asoc-sof-mediatek-add-missing-board-compatible.patch-13794 [new file with mode: 0644]
queue-6.1/asoc-tda7419-fix-module-autoloading.patch [new file with mode: 0644]
queue-6.1/asoc-tda7419-fix-module-autoloading.patch-17758 [new file with mode: 0644]
queue-6.1/block-fix-where-bio-io-priority-gets-set.patch [new file with mode: 0644]
queue-6.1/block-fix-where-bio-io-priority-gets-set.patch-18105 [new file with mode: 0644]
queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch [new file with mode: 0644]
queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-19360 [new file with mode: 0644]
queue-6.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch [new file with mode: 0644]
queue-6.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-6195 [new file with mode: 0644]
queue-6.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch [new file with mode: 0644]
queue-6.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-17737 [new file with mode: 0644]
queue-6.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch [new file with mode: 0644]
queue-6.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-24263 [new file with mode: 0644]
queue-6.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch [new file with mode: 0644]
queue-6.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch-28512 [new file with mode: 0644]
queue-6.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch [new file with mode: 0644]
queue-6.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-11342 [new file with mode: 0644]
queue-6.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch [new file with mode: 0644]
queue-6.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-12187 [new file with mode: 0644]
queue-6.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch [new file with mode: 0644]
queue-6.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-32532 [new file with mode: 0644]
queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch [new file with mode: 0644]
queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch-9726 [new file with mode: 0644]
queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch [new file with mode: 0644]
queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch-20005 [new file with mode: 0644]
queue-6.1/series
queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch [new file with mode: 0644]
queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch-28047 [new file with mode: 0644]
queue-6.1/spi-bcm63xx-enable-module-autoloading.patch [new file with mode: 0644]
queue-6.1/spi-bcm63xx-enable-module-autoloading.patch-6357 [new file with mode: 0644]
queue-6.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch [new file with mode: 0644]
queue-6.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-11824 [new file with mode: 0644]
queue-6.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch [new file with mode: 0644]
queue-6.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-21867 [new file with mode: 0644]
queue-6.1/tools-hv-rm-.-.cmd-when-make-clean.patch [new file with mode: 0644]
queue-6.1/tools-hv-rm-.-.cmd-when-make-clean.patch-11044 [new file with mode: 0644]
queue-6.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch [new file with mode: 0644]
queue-6.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6929 [new file with mode: 0644]
queue-6.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch [new file with mode: 0644]
queue-6.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-31042 [new file with mode: 0644]
queue-6.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch [new file with mode: 0644]
queue-6.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-5725 [new file with mode: 0644]
queue-6.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch [new file with mode: 0644]
queue-6.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-32738 [new file with mode: 0644]
queue-6.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch [new file with mode: 0644]
queue-6.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-8139 [new file with mode: 0644]
queue-6.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch [new file with mode: 0644]
queue-6.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-24142 [new file with mode: 0644]
queue-6.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch [new file with mode: 0644]
queue-6.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-19340 [new file with mode: 0644]

diff --git a/queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch b/queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch
new file mode 100644 (file)
index 0000000..4797ce8
--- /dev/null
@@ -0,0 +1,126 @@
+From 3214874a2b44a60ff782d305cd69f8be5b3229de Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 22 Aug 2024 10:54:19 +0800
+Subject: ALSA: hda/realtek - Fixed ALC256 headphone no sound
+
+From: Kailang Yang <kailang@realtek.com>
+
+[ Upstream commit 9b82ff1362f50914c8292902e07be98a9f59d33d ]
+
+Dell platform, plug headphone or headset, it had a chance to get no
+sound from headphone.
+Replace depop procedure will solve this issue.
+
+Signed-off-by: Kailang Yang <kailang@realtek.com>
+Link: https://lore.kernel.org/bb8e2de30d294dc287944efa0667685a@realtek.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/pci/hda/patch_realtek.c | 50 ++++++++++++++++++++++++++---------
+ 1 file changed, 37 insertions(+), 13 deletions(-)
+
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index d869d6ba96f3d..784dfdf0cd6f4 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -4928,6 +4928,30 @@ static void alc269_fixup_hp_line1_mic1_led(struct hda_codec *codec,
+       }
+ }
++static void alc_hp_mute_disable(struct hda_codec *codec, unsigned int delay)
++{
++      if (delay <= 0)
++              delay = 75;
++      snd_hda_codec_write(codec, 0x21, 0,
++                  AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
++      msleep(delay);
++      snd_hda_codec_write(codec, 0x21, 0,
++                  AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
++      msleep(delay);
++}
++
++static void alc_hp_enable_unmute(struct hda_codec *codec, unsigned int delay)
++{
++      if (delay <= 0)
++              delay = 75;
++      snd_hda_codec_write(codec, 0x21, 0,
++                  AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
++      msleep(delay);
++      snd_hda_codec_write(codec, 0x21, 0,
++                  AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
++      msleep(delay);
++}
++
+ static const struct coef_fw alc225_pre_hsmode[] = {
+       UPDATE_COEF(0x4a, 1<<8, 0),
+       UPDATE_COEFEX(0x57, 0x05, 1<<14, 0),
+@@ -5029,6 +5053,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
+       case 0x10ec0236:
+       case 0x10ec0256:
+       case 0x19e58326:
++              alc_hp_mute_disable(codec, 75);
+               alc_process_coef_fw(codec, coef0256);
+               break;
+       case 0x10ec0234:
+@@ -5300,6 +5325,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
+               alc_write_coef_idx(codec, 0x45, 0xc089);
+               msleep(50);
+               alc_process_coef_fw(codec, coef0256);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       case 0x10ec0234:
+       case 0x10ec0274:
+@@ -5397,6 +5423,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
+       case 0x10ec0256:
+       case 0x19e58326:
+               alc_process_coef_fw(codec, coef0256);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       case 0x10ec0234:
+       case 0x10ec0274:
+@@ -5512,6 +5539,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
+       case 0x10ec0256:
+       case 0x19e58326:
+               alc_process_coef_fw(codec, coef0256);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       case 0x10ec0234:
+       case 0x10ec0274:
+@@ -5617,25 +5645,21 @@ static void alc_determine_headset_type(struct hda_codec *codec)
+               alc_write_coef_idx(codec, 0x06, 0x6104);
+               alc_write_coefex_idx(codec, 0x57, 0x3, 0x09a3);
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
+-              msleep(80);
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
+-
+               alc_process_coef_fw(codec, coef0255);
+               msleep(300);
+               val = alc_read_coef_idx(codec, 0x46);
+               is_ctia = (val & 0x0070) == 0x0070;
+-
++              if (!is_ctia) {
++                      alc_write_coef_idx(codec, 0x45, 0xe089);
++                      msleep(100);
++                      val = alc_read_coef_idx(codec, 0x46);
++                      if ((val & 0x0070) == 0x0070)
++                              is_ctia = false;
++                      else
++                              is_ctia = true;
++              }
+               alc_write_coefex_idx(codec, 0x57, 0x3, 0x0da3);
+               alc_update_coefex_idx(codec, 0x57, 0x5, 1<<14, 0);
+-
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
+-              msleep(80);
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
+               break;
+       case 0x10ec0234:
+       case 0x10ec0274:
+-- 
+2.43.0
+
diff --git a/queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-30958 b/queue-6.1/alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-30958
new file mode 100644 (file)
index 0000000..4797ce8
--- /dev/null
@@ -0,0 +1,126 @@
+From 3214874a2b44a60ff782d305cd69f8be5b3229de Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 22 Aug 2024 10:54:19 +0800
+Subject: ALSA: hda/realtek - Fixed ALC256 headphone no sound
+
+From: Kailang Yang <kailang@realtek.com>
+
+[ Upstream commit 9b82ff1362f50914c8292902e07be98a9f59d33d ]
+
+Dell platform, plug headphone or headset, it had a chance to get no
+sound from headphone.
+Replace depop procedure will solve this issue.
+
+Signed-off-by: Kailang Yang <kailang@realtek.com>
+Link: https://lore.kernel.org/bb8e2de30d294dc287944efa0667685a@realtek.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/pci/hda/patch_realtek.c | 50 ++++++++++++++++++++++++++---------
+ 1 file changed, 37 insertions(+), 13 deletions(-)
+
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index d869d6ba96f3d..784dfdf0cd6f4 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -4928,6 +4928,30 @@ static void alc269_fixup_hp_line1_mic1_led(struct hda_codec *codec,
+       }
+ }
++static void alc_hp_mute_disable(struct hda_codec *codec, unsigned int delay)
++{
++      if (delay <= 0)
++              delay = 75;
++      snd_hda_codec_write(codec, 0x21, 0,
++                  AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
++      msleep(delay);
++      snd_hda_codec_write(codec, 0x21, 0,
++                  AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
++      msleep(delay);
++}
++
++static void alc_hp_enable_unmute(struct hda_codec *codec, unsigned int delay)
++{
++      if (delay <= 0)
++              delay = 75;
++      snd_hda_codec_write(codec, 0x21, 0,
++                  AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
++      msleep(delay);
++      snd_hda_codec_write(codec, 0x21, 0,
++                  AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
++      msleep(delay);
++}
++
+ static const struct coef_fw alc225_pre_hsmode[] = {
+       UPDATE_COEF(0x4a, 1<<8, 0),
+       UPDATE_COEFEX(0x57, 0x05, 1<<14, 0),
+@@ -5029,6 +5053,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
+       case 0x10ec0236:
+       case 0x10ec0256:
+       case 0x19e58326:
++              alc_hp_mute_disable(codec, 75);
+               alc_process_coef_fw(codec, coef0256);
+               break;
+       case 0x10ec0234:
+@@ -5300,6 +5325,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
+               alc_write_coef_idx(codec, 0x45, 0xc089);
+               msleep(50);
+               alc_process_coef_fw(codec, coef0256);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       case 0x10ec0234:
+       case 0x10ec0274:
+@@ -5397,6 +5423,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
+       case 0x10ec0256:
+       case 0x19e58326:
+               alc_process_coef_fw(codec, coef0256);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       case 0x10ec0234:
+       case 0x10ec0274:
+@@ -5512,6 +5539,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
+       case 0x10ec0256:
+       case 0x19e58326:
+               alc_process_coef_fw(codec, coef0256);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       case 0x10ec0234:
+       case 0x10ec0274:
+@@ -5617,25 +5645,21 @@ static void alc_determine_headset_type(struct hda_codec *codec)
+               alc_write_coef_idx(codec, 0x06, 0x6104);
+               alc_write_coefex_idx(codec, 0x57, 0x3, 0x09a3);
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
+-              msleep(80);
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
+-
+               alc_process_coef_fw(codec, coef0255);
+               msleep(300);
+               val = alc_read_coef_idx(codec, 0x46);
+               is_ctia = (val & 0x0070) == 0x0070;
+-
++              if (!is_ctia) {
++                      alc_write_coef_idx(codec, 0x45, 0xe089);
++                      msleep(100);
++                      val = alc_read_coef_idx(codec, 0x46);
++                      if ((val & 0x0070) == 0x0070)
++                              is_ctia = false;
++                      else
++                              is_ctia = true;
++              }
+               alc_write_coefex_idx(codec, 0x57, 0x3, 0x0da3);
+               alc_update_coefex_idx(codec, 0x57, 0x5, 1<<14, 0);
+-
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
+-              msleep(80);
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
+               break;
+       case 0x10ec0234:
+       case 0x10ec0274:
+-- 
+2.43.0
+
diff --git a/queue-6.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch b/queue-6.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch
new file mode 100644 (file)
index 0000000..b76dc3c
--- /dev/null
@@ -0,0 +1,100 @@
+From 710f5c61b58b76832f39f1730d8a79471ac864d8 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 22 Aug 2024 16:46:56 +0800
+Subject: ALSA: hda/realtek - FIxed ALC285 headphone no sound
+
+From: Kailang Yang <kailang@realtek.com>
+
+[ Upstream commit 1fa7b099d60ad64f559bd3b8e3f0d94b2e015514 ]
+
+Dell platform with ALC215 ALC285 ALC289 ALC225 ALC295 ALC299, plug
+headphone or headset.
+It had a chance to get no sound from headphone.
+Replace depop procedure will solve this issue.
+
+Signed-off-by: Kailang Yang <kailang@realtek.com>
+Link: https://lore.kernel.org/d0de1b03fd174520945dde216d765223@realtek.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/pci/hda/patch_realtek.c | 26 ++++++++++++++------------
+ 1 file changed, 14 insertions(+), 12 deletions(-)
+
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index 784dfdf0cd6f4..277303cbe96de 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -5088,6 +5088,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
+       case 0x10ec0295:
+       case 0x10ec0289:
+       case 0x10ec0299:
++              alc_hp_mute_disable(codec, 75);
+               alc_process_coef_fw(codec, alc225_pre_hsmode);
+               alc_process_coef_fw(codec, coef0225);
+               break;
+@@ -5313,6 +5314,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
+       case 0x10ec0299:
+               alc_process_coef_fw(codec, alc225_pre_hsmode);
+               alc_process_coef_fw(codec, coef0225);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       case 0x10ec0255:
+               alc_process_coef_fw(codec, coef0255);
+@@ -5472,6 +5474,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
+                       alc_process_coef_fw(codec, coef0225_2);
+               else
+                       alc_process_coef_fw(codec, coef0225_1);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       case 0x10ec0867:
+               alc_update_coefex_idx(codec, 0x57, 0x5, 1<<14, 0);
+@@ -5577,6 +5580,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
+       case 0x10ec0289:
+       case 0x10ec0299:
+               alc_process_coef_fw(codec, coef0225);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       }
+       codec_dbg(codec, "Headset jack set to Nokia-style headset mode.\n");
+@@ -5736,12 +5740,6 @@ static void alc_determine_headset_type(struct hda_codec *codec)
+       case 0x10ec0295:
+       case 0x10ec0289:
+       case 0x10ec0299:
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
+-              msleep(80);
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
+-
+               alc_process_coef_fw(codec, alc225_pre_hsmode);
+               alc_update_coef_idx(codec, 0x67, 0xf000, 0x1000);
+               val = alc_read_coef_idx(codec, 0x45);
+@@ -5758,15 +5756,19 @@ static void alc_determine_headset_type(struct hda_codec *codec)
+                       val = alc_read_coef_idx(codec, 0x46);
+                       is_ctia = (val & 0x00f0) == 0x00f0;
+               }
++              if (!is_ctia) {
++                      alc_update_coef_idx(codec, 0x45, 0x3f<<10, 0x38<<10);
++                      alc_update_coef_idx(codec, 0x49, 3<<8, 1<<8);
++                      msleep(100);
++                      val = alc_read_coef_idx(codec, 0x46);
++                      if ((val & 0x00f0) == 0x00f0)
++                              is_ctia = false;
++                      else
++                              is_ctia = true;
++              }
+               alc_update_coef_idx(codec, 0x4a, 7<<6, 7<<6);
+               alc_update_coef_idx(codec, 0x4a, 3<<4, 3<<4);
+               alc_update_coef_idx(codec, 0x67, 0xf000, 0x3000);
+-
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
+-              msleep(80);
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
+               break;
+       case 0x10ec0867:
+               is_ctia = true;
+-- 
+2.43.0
+
diff --git a/queue-6.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-25726 b/queue-6.1/alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-25726
new file mode 100644 (file)
index 0000000..b76dc3c
--- /dev/null
@@ -0,0 +1,100 @@
+From 710f5c61b58b76832f39f1730d8a79471ac864d8 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 22 Aug 2024 16:46:56 +0800
+Subject: ALSA: hda/realtek - FIxed ALC285 headphone no sound
+
+From: Kailang Yang <kailang@realtek.com>
+
+[ Upstream commit 1fa7b099d60ad64f559bd3b8e3f0d94b2e015514 ]
+
+Dell platform with ALC215 ALC285 ALC289 ALC225 ALC295 ALC299, plug
+headphone or headset.
+It had a chance to get no sound from headphone.
+Replace depop procedure will solve this issue.
+
+Signed-off-by: Kailang Yang <kailang@realtek.com>
+Link: https://lore.kernel.org/d0de1b03fd174520945dde216d765223@realtek.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/pci/hda/patch_realtek.c | 26 ++++++++++++++------------
+ 1 file changed, 14 insertions(+), 12 deletions(-)
+
+diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
+index 784dfdf0cd6f4..277303cbe96de 100644
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -5088,6 +5088,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
+       case 0x10ec0295:
+       case 0x10ec0289:
+       case 0x10ec0299:
++              alc_hp_mute_disable(codec, 75);
+               alc_process_coef_fw(codec, alc225_pre_hsmode);
+               alc_process_coef_fw(codec, coef0225);
+               break;
+@@ -5313,6 +5314,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
+       case 0x10ec0299:
+               alc_process_coef_fw(codec, alc225_pre_hsmode);
+               alc_process_coef_fw(codec, coef0225);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       case 0x10ec0255:
+               alc_process_coef_fw(codec, coef0255);
+@@ -5472,6 +5474,7 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
+                       alc_process_coef_fw(codec, coef0225_2);
+               else
+                       alc_process_coef_fw(codec, coef0225_1);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       case 0x10ec0867:
+               alc_update_coefex_idx(codec, 0x57, 0x5, 1<<14, 0);
+@@ -5577,6 +5580,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
+       case 0x10ec0289:
+       case 0x10ec0299:
+               alc_process_coef_fw(codec, coef0225);
++              alc_hp_enable_unmute(codec, 75);
+               break;
+       }
+       codec_dbg(codec, "Headset jack set to Nokia-style headset mode.\n");
+@@ -5736,12 +5740,6 @@ static void alc_determine_headset_type(struct hda_codec *codec)
+       case 0x10ec0295:
+       case 0x10ec0289:
+       case 0x10ec0299:
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
+-              msleep(80);
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
+-
+               alc_process_coef_fw(codec, alc225_pre_hsmode);
+               alc_update_coef_idx(codec, 0x67, 0xf000, 0x1000);
+               val = alc_read_coef_idx(codec, 0x45);
+@@ -5758,15 +5756,19 @@ static void alc_determine_headset_type(struct hda_codec *codec)
+                       val = alc_read_coef_idx(codec, 0x46);
+                       is_ctia = (val & 0x00f0) == 0x00f0;
+               }
++              if (!is_ctia) {
++                      alc_update_coef_idx(codec, 0x45, 0x3f<<10, 0x38<<10);
++                      alc_update_coef_idx(codec, 0x49, 3<<8, 1<<8);
++                      msleep(100);
++                      val = alc_read_coef_idx(codec, 0x46);
++                      if ((val & 0x00f0) == 0x00f0)
++                              is_ctia = false;
++                      else
++                              is_ctia = true;
++              }
+               alc_update_coef_idx(codec, 0x4a, 7<<6, 7<<6);
+               alc_update_coef_idx(codec, 0x4a, 3<<4, 3<<4);
+               alc_update_coef_idx(codec, 0x67, 0xf000, 0x3000);
+-
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
+-              msleep(80);
+-              snd_hda_codec_write(codec, 0x21, 0,
+-                          AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
+               break;
+       case 0x10ec0867:
+               is_ctia = true;
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-allow-module-autoloading-for-table-board_ids.patch b/queue-6.1/asoc-allow-module-autoloading-for-table-board_ids.patch
new file mode 100644 (file)
index 0000000..b5b3d88
--- /dev/null
@@ -0,0 +1,36 @@
+From c393bf24750f2fad6cbb8685ba1dc88200de296f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 21 Aug 2024 14:19:55 +0800
+Subject: ASoC: allow module autoloading for table board_ids
+
+From: Hongbo Li <lihongbo22@huawei.com>
+
+[ Upstream commit 5f7c98b7519a3a847d9182bd99d57ea250032ca1 ]
+
+Add MODULE_DEVICE_TABLE(), so modules could be properly
+autoloaded based on the alias from platform_device_id table.
+
+Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
+Link: https://patch.msgid.link/20240821061955.2273782-3-lihongbo22@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/amd/acp/acp-sof-mach.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/sound/soc/amd/acp/acp-sof-mach.c b/sound/soc/amd/acp/acp-sof-mach.c
+index 972600d271586..c594af432b3ee 100644
+--- a/sound/soc/amd/acp/acp-sof-mach.c
++++ b/sound/soc/amd/acp/acp-sof-mach.c
+@@ -152,6 +152,8 @@ static const struct platform_device_id board_ids[] = {
+       },
+       { }
+ };
++MODULE_DEVICE_TABLE(platform, board_ids);
++
+ static struct platform_driver acp_asoc_audio = {
+       .driver = {
+               .name = "sof_mach",
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-allow-module-autoloading-for-table-board_ids.patch-3580 b/queue-6.1/asoc-allow-module-autoloading-for-table-board_ids.patch-3580
new file mode 100644 (file)
index 0000000..b5b3d88
--- /dev/null
@@ -0,0 +1,36 @@
+From c393bf24750f2fad6cbb8685ba1dc88200de296f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 21 Aug 2024 14:19:55 +0800
+Subject: ASoC: allow module autoloading for table board_ids
+
+From: Hongbo Li <lihongbo22@huawei.com>
+
+[ Upstream commit 5f7c98b7519a3a847d9182bd99d57ea250032ca1 ]
+
+Add MODULE_DEVICE_TABLE(), so modules could be properly
+autoloaded based on the alias from platform_device_id table.
+
+Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
+Link: https://patch.msgid.link/20240821061955.2273782-3-lihongbo22@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/amd/acp/acp-sof-mach.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/sound/soc/amd/acp/acp-sof-mach.c b/sound/soc/amd/acp/acp-sof-mach.c
+index 972600d271586..c594af432b3ee 100644
+--- a/sound/soc/amd/acp/acp-sof-mach.c
++++ b/sound/soc/amd/acp/acp-sof-mach.c
+@@ -152,6 +152,8 @@ static const struct platform_device_id board_ids[] = {
+       },
+       { }
+ };
++MODULE_DEVICE_TABLE(platform, board_ids);
++
+ static struct platform_driver acp_asoc_audio = {
+       .driver = {
+               .name = "sof_mach",
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch b/queue-6.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch
new file mode 100644 (file)
index 0000000..2aa046a
--- /dev/null
@@ -0,0 +1,35 @@
+From 56dc3089c406af8cda0d3159f78d87d4e86a7644 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 21 Aug 2024 14:19:54 +0800
+Subject: ASoC: allow module autoloading for table db1200_pids
+
+From: Hongbo Li <lihongbo22@huawei.com>
+
+[ Upstream commit 0e9fdab1e8df490354562187cdbb8dec643eae2c ]
+
+Add MODULE_DEVICE_TABLE(), so modules could be properly
+autoloaded based on the alias from platform_device_id table.
+
+Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
+Link: https://patch.msgid.link/20240821061955.2273782-2-lihongbo22@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/au1x/db1200.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/soc/au1x/db1200.c b/sound/soc/au1x/db1200.c
+index 400eaf9f8b140..f185711180cb4 100644
+--- a/sound/soc/au1x/db1200.c
++++ b/sound/soc/au1x/db1200.c
+@@ -44,6 +44,7 @@ static const struct platform_device_id db1200_pids[] = {
+       },
+       {},
+ };
++MODULE_DEVICE_TABLE(platform, db1200_pids);
+ /*-------------------------  AC97 PART  ---------------------------*/
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch-6485 b/queue-6.1/asoc-allow-module-autoloading-for-table-db1200_pids.patch-6485
new file mode 100644 (file)
index 0000000..2aa046a
--- /dev/null
@@ -0,0 +1,35 @@
+From 56dc3089c406af8cda0d3159f78d87d4e86a7644 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 21 Aug 2024 14:19:54 +0800
+Subject: ASoC: allow module autoloading for table db1200_pids
+
+From: Hongbo Li <lihongbo22@huawei.com>
+
+[ Upstream commit 0e9fdab1e8df490354562187cdbb8dec643eae2c ]
+
+Add MODULE_DEVICE_TABLE(), so modules could be properly
+autoloaded based on the alias from platform_device_id table.
+
+Signed-off-by: Hongbo Li <lihongbo22@huawei.com>
+Link: https://patch.msgid.link/20240821061955.2273782-2-lihongbo22@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/au1x/db1200.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/soc/au1x/db1200.c b/sound/soc/au1x/db1200.c
+index 400eaf9f8b140..f185711180cb4 100644
+--- a/sound/soc/au1x/db1200.c
++++ b/sound/soc/au1x/db1200.c
+@@ -44,6 +44,7 @@ static const struct platform_device_id db1200_pids[] = {
+       },
+       {},
+ };
++MODULE_DEVICE_TABLE(platform, db1200_pids);
+ /*-------------------------  AC97 PART  ---------------------------*/
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-intel-fix-module-autoloading.patch b/queue-6.1/asoc-intel-fix-module-autoloading.patch
new file mode 100644 (file)
index 0000000..d5fc586
--- /dev/null
@@ -0,0 +1,35 @@
+From a08b3b6378b5c561e1fa17c468f086d10d0baf49 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 26 Aug 2024 08:49:21 +0000
+Subject: ASoC: intel: fix module autoloading
+
+From: Liao Chen <liaochen4@huawei.com>
+
+[ Upstream commit ae61a3391088d29aa8605c9f2db84295ab993a49 ]
+
+Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded
+based on the alias from of_device_id table.
+
+Signed-off-by: Liao Chen <liaochen4@huawei.com>
+Link: https://patch.msgid.link/20240826084924.368387-2-liaochen4@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/intel/keembay/kmb_platform.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/soc/intel/keembay/kmb_platform.c b/sound/soc/intel/keembay/kmb_platform.c
+index b4893365d01d5..d5c48bed7a250 100644
+--- a/sound/soc/intel/keembay/kmb_platform.c
++++ b/sound/soc/intel/keembay/kmb_platform.c
+@@ -817,6 +817,7 @@ static const struct of_device_id kmb_plat_of_match[] = {
+       { .compatible = "intel,keembay-tdm", .data = &intel_kmb_tdm_dai},
+       {}
+ };
++MODULE_DEVICE_TABLE(of, kmb_plat_of_match);
+ static int kmb_plat_dai_probe(struct platform_device *pdev)
+ {
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-intel-fix-module-autoloading.patch-15841 b/queue-6.1/asoc-intel-fix-module-autoloading.patch-15841
new file mode 100644 (file)
index 0000000..d5fc586
--- /dev/null
@@ -0,0 +1,35 @@
+From a08b3b6378b5c561e1fa17c468f086d10d0baf49 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 26 Aug 2024 08:49:21 +0000
+Subject: ASoC: intel: fix module autoloading
+
+From: Liao Chen <liaochen4@huawei.com>
+
+[ Upstream commit ae61a3391088d29aa8605c9f2db84295ab993a49 ]
+
+Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded
+based on the alias from of_device_id table.
+
+Signed-off-by: Liao Chen <liaochen4@huawei.com>
+Link: https://patch.msgid.link/20240826084924.368387-2-liaochen4@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/intel/keembay/kmb_platform.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/soc/intel/keembay/kmb_platform.c b/sound/soc/intel/keembay/kmb_platform.c
+index b4893365d01d5..d5c48bed7a250 100644
+--- a/sound/soc/intel/keembay/kmb_platform.c
++++ b/sound/soc/intel/keembay/kmb_platform.c
+@@ -817,6 +817,7 @@ static const struct of_device_id kmb_plat_of_match[] = {
+       { .compatible = "intel,keembay-tdm", .data = &intel_kmb_tdm_dai},
+       {}
+ };
++MODULE_DEVICE_TABLE(of, kmb_plat_of_match);
+ static int kmb_plat_dai_probe(struct platform_device *pdev)
+ {
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch b/queue-6.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch
new file mode 100644 (file)
index 0000000..5cc2eee
--- /dev/null
@@ -0,0 +1,43 @@
+From 7329a028eba18c1155ac7ece6b41a12ff9ce418d Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 23 Aug 2024 09:43:05 +0200
+Subject: ASoC: Intel: soc-acpi-cht: Make Lenovo Yoga Tab 3 X90F DMI match less
+ strict
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+[ Upstream commit 839a4ec06f75cec8fec2cc5fc14e921d0c3f7369 ]
+
+There are 2G and 4G RAM versions of the Lenovo Yoga Tab 3 X90F and it
+turns out that the 2G version has a DMI product name of
+"CHERRYVIEW D1 PLATFORM" where as the 4G version has
+"CHERRYVIEW C0 PLATFORM". The sys-vendor + product-version check are
+unique enough that the product-name check is not necessary.
+
+Drop the product-name check so that the existing DMI match for the 4G
+RAM version also matches the 2G RAM version.
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Link: https://patch.msgid.link/20240823074305.16873-1-hdegoede@redhat.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/intel/common/soc-acpi-intel-cht-match.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/sound/soc/intel/common/soc-acpi-intel-cht-match.c b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
+index 5e2ec60e2954b..e4c3492a0c282 100644
+--- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c
++++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
+@@ -84,7 +84,6 @@ static const struct dmi_system_id lenovo_yoga_tab3_x90[] = {
+               /* Lenovo Yoga Tab 3 Pro YT3-X90, codec missing from DSDT */
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
+-                      DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"),
+               },
+       },
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-12345 b/queue-6.1/asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-12345
new file mode 100644 (file)
index 0000000..5cc2eee
--- /dev/null
@@ -0,0 +1,43 @@
+From 7329a028eba18c1155ac7ece6b41a12ff9ce418d Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 23 Aug 2024 09:43:05 +0200
+Subject: ASoC: Intel: soc-acpi-cht: Make Lenovo Yoga Tab 3 X90F DMI match less
+ strict
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+[ Upstream commit 839a4ec06f75cec8fec2cc5fc14e921d0c3f7369 ]
+
+There are 2G and 4G RAM versions of the Lenovo Yoga Tab 3 X90F and it
+turns out that the 2G version has a DMI product name of
+"CHERRYVIEW D1 PLATFORM" where as the 4G version has
+"CHERRYVIEW C0 PLATFORM". The sys-vendor + product-version check are
+unique enough that the product-name check is not necessary.
+
+Drop the product-name check so that the existing DMI match for the 4G
+RAM version also matches the 2G RAM version.
+
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
+Link: https://patch.msgid.link/20240823074305.16873-1-hdegoede@redhat.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/intel/common/soc-acpi-intel-cht-match.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/sound/soc/intel/common/soc-acpi-intel-cht-match.c b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
+index 5e2ec60e2954b..e4c3492a0c282 100644
+--- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c
++++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
+@@ -84,7 +84,6 @@ static const struct dmi_system_id lenovo_yoga_tab3_x90[] = {
+               /* Lenovo Yoga Tab 3 Pro YT3-X90, codec missing from DSDT */
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
+-                      DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"),
+                       DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"),
+               },
+       },
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-sof-mediatek-add-missing-board-compatible.patch b/queue-6.1/asoc-sof-mediatek-add-missing-board-compatible.patch
new file mode 100644 (file)
index 0000000..377cfbd
--- /dev/null
@@ -0,0 +1,40 @@
+From 6cc8bff7f641abb2ba8a31ea0a2ce0864e13ed17 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 9 Aug 2024 13:56:27 +0000
+Subject: ASoC: SOF: mediatek: Add missing board compatible
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Albert JakieÅ‚a <jakiela@google.com>
+
+[ Upstream commit c0196faaa927321a63e680427e075734ee656e42 ]
+
+Add Google Dojo compatible.
+
+Signed-off-by: Albert JakieÅ‚a <jakiela@google.com>
+Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
+Link: https://patch.msgid.link/20240809135627.544429-1-jakiela@google.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/sof/mediatek/mt8195/mt8195.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/sound/soc/sof/mediatek/mt8195/mt8195.c b/sound/soc/sof/mediatek/mt8195/mt8195.c
+index 53cadbe8a05cc..ac96ea07e591b 100644
+--- a/sound/soc/sof/mediatek/mt8195/mt8195.c
++++ b/sound/soc/sof/mediatek/mt8195/mt8195.c
+@@ -663,6 +663,9 @@ static struct snd_sof_of_mach sof_mt8195_machs[] = {
+       {
+               .compatible = "google,tomato",
+               .sof_tplg_filename = "sof-mt8195-mt6359-rt1019-rt5682.tplg"
++      }, {
++              .compatible = "google,dojo",
++              .sof_tplg_filename = "sof-mt8195-mt6359-max98390-rt5682.tplg"
+       }, {
+               .compatible = "mediatek,mt8195",
+               .sof_tplg_filename = "sof-mt8195.tplg"
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-sof-mediatek-add-missing-board-compatible.patch-13794 b/queue-6.1/asoc-sof-mediatek-add-missing-board-compatible.patch-13794
new file mode 100644 (file)
index 0000000..377cfbd
--- /dev/null
@@ -0,0 +1,40 @@
+From 6cc8bff7f641abb2ba8a31ea0a2ce0864e13ed17 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 9 Aug 2024 13:56:27 +0000
+Subject: ASoC: SOF: mediatek: Add missing board compatible
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Albert JakieÅ‚a <jakiela@google.com>
+
+[ Upstream commit c0196faaa927321a63e680427e075734ee656e42 ]
+
+Add Google Dojo compatible.
+
+Signed-off-by: Albert JakieÅ‚a <jakiela@google.com>
+Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
+Link: https://patch.msgid.link/20240809135627.544429-1-jakiela@google.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/sof/mediatek/mt8195/mt8195.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/sound/soc/sof/mediatek/mt8195/mt8195.c b/sound/soc/sof/mediatek/mt8195/mt8195.c
+index 53cadbe8a05cc..ac96ea07e591b 100644
+--- a/sound/soc/sof/mediatek/mt8195/mt8195.c
++++ b/sound/soc/sof/mediatek/mt8195/mt8195.c
+@@ -663,6 +663,9 @@ static struct snd_sof_of_mach sof_mt8195_machs[] = {
+       {
+               .compatible = "google,tomato",
+               .sof_tplg_filename = "sof-mt8195-mt6359-rt1019-rt5682.tplg"
++      }, {
++              .compatible = "google,dojo",
++              .sof_tplg_filename = "sof-mt8195-mt6359-max98390-rt5682.tplg"
+       }, {
+               .compatible = "mediatek,mt8195",
+               .sof_tplg_filename = "sof-mt8195.tplg"
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-tda7419-fix-module-autoloading.patch b/queue-6.1/asoc-tda7419-fix-module-autoloading.patch
new file mode 100644 (file)
index 0000000..eded6b3
--- /dev/null
@@ -0,0 +1,35 @@
+From 1b0a5b9f9cf036b66ca8424aae4d49cec360c8fa Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 26 Aug 2024 08:49:23 +0000
+Subject: ASoC: tda7419: fix module autoloading
+
+From: Liao Chen <liaochen4@huawei.com>
+
+[ Upstream commit 934b44589da9aa300201a00fe139c5c54f421563 ]
+
+Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded
+based on the alias from of_device_id table.
+
+Signed-off-by: Liao Chen <liaochen4@huawei.com>
+Link: https://patch.msgid.link/20240826084924.368387-4-liaochen4@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/codecs/tda7419.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/soc/codecs/tda7419.c b/sound/soc/codecs/tda7419.c
+index d964e5207569c..6010df2994c7b 100644
+--- a/sound/soc/codecs/tda7419.c
++++ b/sound/soc/codecs/tda7419.c
+@@ -623,6 +623,7 @@ static const struct of_device_id tda7419_of_match[] = {
+       { .compatible = "st,tda7419" },
+       { },
+ };
++MODULE_DEVICE_TABLE(of, tda7419_of_match);
+ static struct i2c_driver tda7419_driver = {
+       .driver = {
+-- 
+2.43.0
+
diff --git a/queue-6.1/asoc-tda7419-fix-module-autoloading.patch-17758 b/queue-6.1/asoc-tda7419-fix-module-autoloading.patch-17758
new file mode 100644 (file)
index 0000000..eded6b3
--- /dev/null
@@ -0,0 +1,35 @@
+From 1b0a5b9f9cf036b66ca8424aae4d49cec360c8fa Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 26 Aug 2024 08:49:23 +0000
+Subject: ASoC: tda7419: fix module autoloading
+
+From: Liao Chen <liaochen4@huawei.com>
+
+[ Upstream commit 934b44589da9aa300201a00fe139c5c54f421563 ]
+
+Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded
+based on the alias from of_device_id table.
+
+Signed-off-by: Liao Chen <liaochen4@huawei.com>
+Link: https://patch.msgid.link/20240826084924.368387-4-liaochen4@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/soc/codecs/tda7419.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/soc/codecs/tda7419.c b/sound/soc/codecs/tda7419.c
+index d964e5207569c..6010df2994c7b 100644
+--- a/sound/soc/codecs/tda7419.c
++++ b/sound/soc/codecs/tda7419.c
+@@ -623,6 +623,7 @@ static const struct of_device_id tda7419_of_match[] = {
+       { .compatible = "st,tda7419" },
+       { },
+ };
++MODULE_DEVICE_TABLE(of, tda7419_of_match);
+ static struct i2c_driver tda7419_driver = {
+       .driver = {
+-- 
+2.43.0
+
diff --git a/queue-6.1/block-fix-where-bio-io-priority-gets-set.patch b/queue-6.1/block-fix-where-bio-io-priority-gets-set.patch
new file mode 100644 (file)
index 0000000..dfee580
--- /dev/null
@@ -0,0 +1,109 @@
+From 870ae5fed46a06ed01dfde8c307a410209dd0662 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 30 Jan 2024 15:26:34 -0500
+Subject: block: Fix where bio IO priority gets set
+
+From: Hongyu Jin <hongyu.jin@unisoc.com>
+
+[ Upstream commit f3c89983cb4fc00be64eb0d5cbcfcdf2cacb965e ]
+
+Commit 82b74cac2849 ("blk-ioprio: Convert from rqos policy to direct
+call") pushed setting bio I/O priority down into blk_mq_submit_bio()
+-- which is too low within block core's submit_bio() because it
+skips setting I/O priority for block drivers that implement
+fops->submit_bio() (e.g. DM, MD, etc).
+
+Fix this by moving bio_set_ioprio() up from blk-mq.c to blk-core.c and
+call it from submit_bio().  This ensures all block drivers call
+bio_set_ioprio() during initial bio submission.
+
+Fixes: a78418e6a04c ("block: Always initialize bio IO priority on submit")
+Co-developed-by: Yibin Ding <yibin.ding@unisoc.com>
+Signed-off-by: Yibin Ding <yibin.ding@unisoc.com>
+Signed-off-by: Hongyu Jin <hongyu.jin@unisoc.com>
+Reviewed-by: Eric Biggers <ebiggers@google.com>
+Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
+[snitzer: revised commit header]
+Signed-off-by: Mike Snitzer <snitzer@kernel.org>
+Reviewed-by: Ming Lei <ming.lei@redhat.com>
+Link: https://lore.kernel.org/r/20240130202638.62600-2-snitzer@kernel.org
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ block/blk-core.c | 10 ++++++++++
+ block/blk-mq.c   | 10 ----------
+ 2 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/block/blk-core.c b/block/blk-core.c
+index a4155f123ab38..94941e3ce2194 100644
+--- a/block/blk-core.c
++++ b/block/blk-core.c
+@@ -49,6 +49,7 @@
+ #include "blk-pm.h"
+ #include "blk-cgroup.h"
+ #include "blk-throttle.h"
++#include "blk-ioprio.h"
+ struct dentry *blk_debugfs_root;
+@@ -799,6 +800,14 @@ void submit_bio_noacct(struct bio *bio)
+ }
+ EXPORT_SYMBOL(submit_bio_noacct);
++static void bio_set_ioprio(struct bio *bio)
++{
++      /* Nobody set ioprio so far? Initialize it based on task's nice value */
++      if (IOPRIO_PRIO_CLASS(bio->bi_ioprio) == IOPRIO_CLASS_NONE)
++              bio->bi_ioprio = get_current_ioprio();
++      blkcg_set_ioprio(bio);
++}
++
+ /**
+  * submit_bio - submit a bio to the block device layer for I/O
+  * @bio: The &struct bio which describes the I/O
+@@ -824,6 +833,7 @@ void submit_bio(struct bio *bio)
+               count_vm_events(PGPGOUT, bio_sectors(bio));
+       }
++      bio_set_ioprio(bio);
+       submit_bio_noacct(bio);
+ }
+ EXPORT_SYMBOL(submit_bio);
+diff --git a/block/blk-mq.c b/block/blk-mq.c
+index daf0e4f3444e7..542b28a2e6b0f 100644
+--- a/block/blk-mq.c
++++ b/block/blk-mq.c
+@@ -42,7 +42,6 @@
+ #include "blk-stat.h"
+ #include "blk-mq-sched.h"
+ #include "blk-rq-qos.h"
+-#include "blk-ioprio.h"
+ static DEFINE_PER_CPU(struct llist_head, blk_cpu_done);
+@@ -2949,14 +2948,6 @@ static bool blk_mq_can_use_cached_rq(struct request *rq, struct blk_plug *plug,
+       return true;
+ }
+-static void bio_set_ioprio(struct bio *bio)
+-{
+-      /* Nobody set ioprio so far? Initialize it based on task's nice value */
+-      if (IOPRIO_PRIO_CLASS(bio->bi_ioprio) == IOPRIO_CLASS_NONE)
+-              bio->bi_ioprio = get_current_ioprio();
+-      blkcg_set_ioprio(bio);
+-}
+-
+ /**
+  * blk_mq_submit_bio - Create and send a request to block device.
+  * @bio: Bio pointer.
+@@ -2980,7 +2971,6 @@ void blk_mq_submit_bio(struct bio *bio)
+       blk_status_t ret;
+       bio = blk_queue_bounce(bio, q);
+-      bio_set_ioprio(bio);
+       if (plug) {
+               rq = rq_list_peek(&plug->cached_rq);
+-- 
+2.43.0
+
diff --git a/queue-6.1/block-fix-where-bio-io-priority-gets-set.patch-18105 b/queue-6.1/block-fix-where-bio-io-priority-gets-set.patch-18105
new file mode 100644 (file)
index 0000000..dfee580
--- /dev/null
@@ -0,0 +1,109 @@
+From 870ae5fed46a06ed01dfde8c307a410209dd0662 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 30 Jan 2024 15:26:34 -0500
+Subject: block: Fix where bio IO priority gets set
+
+From: Hongyu Jin <hongyu.jin@unisoc.com>
+
+[ Upstream commit f3c89983cb4fc00be64eb0d5cbcfcdf2cacb965e ]
+
+Commit 82b74cac2849 ("blk-ioprio: Convert from rqos policy to direct
+call") pushed setting bio I/O priority down into blk_mq_submit_bio()
+-- which is too low within block core's submit_bio() because it
+skips setting I/O priority for block drivers that implement
+fops->submit_bio() (e.g. DM, MD, etc).
+
+Fix this by moving bio_set_ioprio() up from blk-mq.c to blk-core.c and
+call it from submit_bio().  This ensures all block drivers call
+bio_set_ioprio() during initial bio submission.
+
+Fixes: a78418e6a04c ("block: Always initialize bio IO priority on submit")
+Co-developed-by: Yibin Ding <yibin.ding@unisoc.com>
+Signed-off-by: Yibin Ding <yibin.ding@unisoc.com>
+Signed-off-by: Hongyu Jin <hongyu.jin@unisoc.com>
+Reviewed-by: Eric Biggers <ebiggers@google.com>
+Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
+[snitzer: revised commit header]
+Signed-off-by: Mike Snitzer <snitzer@kernel.org>
+Reviewed-by: Ming Lei <ming.lei@redhat.com>
+Link: https://lore.kernel.org/r/20240130202638.62600-2-snitzer@kernel.org
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ block/blk-core.c | 10 ++++++++++
+ block/blk-mq.c   | 10 ----------
+ 2 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/block/blk-core.c b/block/blk-core.c
+index a4155f123ab38..94941e3ce2194 100644
+--- a/block/blk-core.c
++++ b/block/blk-core.c
+@@ -49,6 +49,7 @@
+ #include "blk-pm.h"
+ #include "blk-cgroup.h"
+ #include "blk-throttle.h"
++#include "blk-ioprio.h"
+ struct dentry *blk_debugfs_root;
+@@ -799,6 +800,14 @@ void submit_bio_noacct(struct bio *bio)
+ }
+ EXPORT_SYMBOL(submit_bio_noacct);
++static void bio_set_ioprio(struct bio *bio)
++{
++      /* Nobody set ioprio so far? Initialize it based on task's nice value */
++      if (IOPRIO_PRIO_CLASS(bio->bi_ioprio) == IOPRIO_CLASS_NONE)
++              bio->bi_ioprio = get_current_ioprio();
++      blkcg_set_ioprio(bio);
++}
++
+ /**
+  * submit_bio - submit a bio to the block device layer for I/O
+  * @bio: The &struct bio which describes the I/O
+@@ -824,6 +833,7 @@ void submit_bio(struct bio *bio)
+               count_vm_events(PGPGOUT, bio_sectors(bio));
+       }
++      bio_set_ioprio(bio);
+       submit_bio_noacct(bio);
+ }
+ EXPORT_SYMBOL(submit_bio);
+diff --git a/block/blk-mq.c b/block/blk-mq.c
+index daf0e4f3444e7..542b28a2e6b0f 100644
+--- a/block/blk-mq.c
++++ b/block/blk-mq.c
+@@ -42,7 +42,6 @@
+ #include "blk-stat.h"
+ #include "blk-mq-sched.h"
+ #include "blk-rq-qos.h"
+-#include "blk-ioprio.h"
+ static DEFINE_PER_CPU(struct llist_head, blk_cpu_done);
+@@ -2949,14 +2948,6 @@ static bool blk_mq_can_use_cached_rq(struct request *rq, struct blk_plug *plug,
+       return true;
+ }
+-static void bio_set_ioprio(struct bio *bio)
+-{
+-      /* Nobody set ioprio so far? Initialize it based on task's nice value */
+-      if (IOPRIO_PRIO_CLASS(bio->bi_ioprio) == IOPRIO_CLASS_NONE)
+-              bio->bi_ioprio = get_current_ioprio();
+-      blkcg_set_ioprio(bio);
+-}
+-
+ /**
+  * blk_mq_submit_bio - Create and send a request to block device.
+  * @bio: Bio pointer.
+@@ -2980,7 +2971,6 @@ void blk_mq_submit_bio(struct bio *bio)
+       blk_status_t ret;
+       bio = blk_queue_bounce(bio, q);
+-      bio_set_ioprio(bio);
+       if (plug) {
+               rq = rq_list_peek(&plug->cached_rq);
+-- 
+2.43.0
+
diff --git a/queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch b/queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch
new file mode 100644 (file)
index 0000000..cb68862
--- /dev/null
@@ -0,0 +1,63 @@
+From 7a9e30a14ca54f144fc0aae0ac58651a37f8de67 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 5 Jul 2024 17:24:42 +0200
+Subject: can: mcp251xfd: mcp251xfd_ring_init(): check TX-coalescing
+ configuration
+
+From: Marc Kleine-Budde <mkl@pengutronix.de>
+
+[ Upstream commit ac2b81eb8b2d104033560daea886ee84531e3d0a ]
+
+When changing the interface from CAN-CC to CAN-FD mode the old
+coalescing parameters are re-used. This might cause problem, as the
+configured parameters are too big for CAN-FD mode.
+
+During testing an invalid TX coalescing configuration has been seen.
+The problem should be been fixed in the previous patch, but add a
+safeguard here to ensure that the number of TEF coalescing buffers (if
+configured) is exactly the half of all TEF buffers.
+
+Link: https://lore.kernel.org/all/20240805-mcp251xfd-fix-ringconfig-v1-2-72086f0ca5ee@pengutronix.de
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c b/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c
+index 0fde8154a649b..a894cb1fb9bfe 100644
+--- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c
++++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c
+@@ -280,7 +280,7 @@ int mcp251xfd_ring_init(struct mcp251xfd_priv *priv)
+       const struct mcp251xfd_rx_ring *rx_ring;
+       u16 base = 0, ram_used;
+       u8 fifo_nr = 1;
+-      int i;
++      int err = 0, i;
+       netdev_reset_queue(priv->ndev);
+@@ -376,10 +376,18 @@ int mcp251xfd_ring_init(struct mcp251xfd_priv *priv)
+               netdev_err(priv->ndev,
+                          "Error during ring configuration, using more RAM (%u bytes) than available (%u bytes).\n",
+                          ram_used, MCP251XFD_RAM_SIZE);
+-              return -ENOMEM;
++              err = -ENOMEM;
+       }
+-      return 0;
++      if (priv->tx_obj_num_coalesce_irq &&
++          priv->tx_obj_num_coalesce_irq * 2 != priv->tx->obj_num) {
++              netdev_err(priv->ndev,
++                         "Error during ring configuration, number of TEF coalescing buffers (%u) must be half of TEF buffers (%u).\n",
++                         priv->tx_obj_num_coalesce_irq, priv->tx->obj_num);
++              err = -EINVAL;
++      }
++
++      return err;
+ }
+ void mcp251xfd_ring_free(struct mcp251xfd_priv *priv)
+-- 
+2.43.0
+
diff --git a/queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-19360 b/queue-6.1/can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-19360
new file mode 100644 (file)
index 0000000..cb68862
--- /dev/null
@@ -0,0 +1,63 @@
+From 7a9e30a14ca54f144fc0aae0ac58651a37f8de67 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 5 Jul 2024 17:24:42 +0200
+Subject: can: mcp251xfd: mcp251xfd_ring_init(): check TX-coalescing
+ configuration
+
+From: Marc Kleine-Budde <mkl@pengutronix.de>
+
+[ Upstream commit ac2b81eb8b2d104033560daea886ee84531e3d0a ]
+
+When changing the interface from CAN-CC to CAN-FD mode the old
+coalescing parameters are re-used. This might cause problem, as the
+configured parameters are too big for CAN-FD mode.
+
+During testing an invalid TX coalescing configuration has been seen.
+The problem should be been fixed in the previous patch, but add a
+safeguard here to ensure that the number of TEF coalescing buffers (if
+configured) is exactly the half of all TEF buffers.
+
+Link: https://lore.kernel.org/all/20240805-mcp251xfd-fix-ringconfig-v1-2-72086f0ca5ee@pengutronix.de
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c b/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c
+index 0fde8154a649b..a894cb1fb9bfe 100644
+--- a/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c
++++ b/drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c
+@@ -280,7 +280,7 @@ int mcp251xfd_ring_init(struct mcp251xfd_priv *priv)
+       const struct mcp251xfd_rx_ring *rx_ring;
+       u16 base = 0, ram_used;
+       u8 fifo_nr = 1;
+-      int i;
++      int err = 0, i;
+       netdev_reset_queue(priv->ndev);
+@@ -376,10 +376,18 @@ int mcp251xfd_ring_init(struct mcp251xfd_priv *priv)
+               netdev_err(priv->ndev,
+                          "Error during ring configuration, using more RAM (%u bytes) than available (%u bytes).\n",
+                          ram_used, MCP251XFD_RAM_SIZE);
+-              return -ENOMEM;
++              err = -ENOMEM;
+       }
+-      return 0;
++      if (priv->tx_obj_num_coalesce_irq &&
++          priv->tx_obj_num_coalesce_irq * 2 != priv->tx->obj_num) {
++              netdev_err(priv->ndev,
++                         "Error during ring configuration, number of TEF coalescing buffers (%u) must be half of TEF buffers (%u).\n",
++                         priv->tx_obj_num_coalesce_irq, priv->tx->obj_num);
++              err = -EINVAL;
++      }
++
++      return err;
+ }
+ void mcp251xfd_ring_free(struct mcp251xfd_priv *priv)
+-- 
+2.43.0
+
diff --git a/queue-6.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch b/queue-6.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch
new file mode 100644 (file)
index 0000000..48749b9
--- /dev/null
@@ -0,0 +1,79 @@
+From 5d6467541a908c78d27b1d530393d259859c7b8c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 26 Aug 2024 10:45:17 +0800
+Subject: drm: komeda: Fix an issue related to normalized zpos
+
+From: hongchi.peng <hongchi.peng@siengine.com>
+
+[ Upstream commit 258905cb9a6414be5c9ca4aa20ef855f8dc894d4 ]
+
+We use komeda_crtc_normalize_zpos to normalize zpos of affected planes
+to their blending zorder in CU. If there's only one slave plane in
+affected planes and its layer_split property is enabled, order++ for
+its split layer, so that when calculating the normalized_zpos
+of master planes, the split layer of the slave plane is included, but
+the max_slave_zorder does not include the split layer and keep zero
+because there's only one slave plane in affacted planes, although we
+actually use two slave layers in this commit.
+
+In most cases, this bug does not result in a commit failure, but assume
+the following situation:
+    slave_layer 0: zpos = 0, layer split enabled, normalized_zpos =
+    0;(use slave_layer 2 as its split layer)
+    master_layer 0: zpos = 2, layer_split enabled, normalized_zpos =
+    2;(use master_layer 2 as its split layer)
+    master_layer 1: zpos = 4, normalized_zpos = 4;
+    master_layer 3: zpos = 5, normalized_zpos = 5;
+    kcrtc_st->max_slave_zorder = 0;
+When we use master_layer 3 as a input of CU in function
+komeda_compiz_set_input and check it with function
+komeda_component_check_input, the parameter idx is equal to
+normailzed_zpos minus max_slave_zorder, the value of idx is 5
+and is euqal to CU's max_active_inputs, so that
+komeda_component_check_input returns a -EINVAL value.
+
+To fix the bug described above, when calculating the max_slave_zorder
+with the layer_split enabled, count the split layer in this calculation
+directly.
+
+Signed-off-by: hongchi.peng <hongchi.peng@siengine.com>
+Acked-by: Liviu Dudau <liviu.dudau@arm.com>
+Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20240826024517.3739-1-hongchi.peng@siengine.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/arm/display/komeda/komeda_kms.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+index 451746ebbe713..89f3d6aa72b08 100644
+--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
++++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+@@ -163,6 +163,7 @@ static int komeda_crtc_normalize_zpos(struct drm_crtc *crtc,
+       struct drm_plane *plane;
+       struct list_head zorder_list;
+       int order = 0, err;
++      u32 slave_zpos = 0;
+       DRM_DEBUG_ATOMIC("[CRTC:%d:%s] calculating normalized zpos values\n",
+                        crtc->base.id, crtc->name);
+@@ -202,10 +203,13 @@ static int komeda_crtc_normalize_zpos(struct drm_crtc *crtc,
+                                plane_st->zpos, plane_st->normalized_zpos);
+               /* calculate max slave zorder */
+-              if (has_bit(drm_plane_index(plane), kcrtc->slave_planes))
++              if (has_bit(drm_plane_index(plane), kcrtc->slave_planes)) {
++                      slave_zpos = plane_st->normalized_zpos;
++                      if (to_kplane_st(plane_st)->layer_split)
++                              slave_zpos++;
+                       kcrtc_st->max_slave_zorder =
+-                              max(plane_st->normalized_zpos,
+-                                  kcrtc_st->max_slave_zorder);
++                              max(slave_zpos, kcrtc_st->max_slave_zorder);
++              }
+       }
+       crtc_st->zpos_changed = true;
+-- 
+2.43.0
+
diff --git a/queue-6.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-6195 b/queue-6.1/drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-6195
new file mode 100644 (file)
index 0000000..48749b9
--- /dev/null
@@ -0,0 +1,79 @@
+From 5d6467541a908c78d27b1d530393d259859c7b8c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 26 Aug 2024 10:45:17 +0800
+Subject: drm: komeda: Fix an issue related to normalized zpos
+
+From: hongchi.peng <hongchi.peng@siengine.com>
+
+[ Upstream commit 258905cb9a6414be5c9ca4aa20ef855f8dc894d4 ]
+
+We use komeda_crtc_normalize_zpos to normalize zpos of affected planes
+to their blending zorder in CU. If there's only one slave plane in
+affected planes and its layer_split property is enabled, order++ for
+its split layer, so that when calculating the normalized_zpos
+of master planes, the split layer of the slave plane is included, but
+the max_slave_zorder does not include the split layer and keep zero
+because there's only one slave plane in affacted planes, although we
+actually use two slave layers in this commit.
+
+In most cases, this bug does not result in a commit failure, but assume
+the following situation:
+    slave_layer 0: zpos = 0, layer split enabled, normalized_zpos =
+    0;(use slave_layer 2 as its split layer)
+    master_layer 0: zpos = 2, layer_split enabled, normalized_zpos =
+    2;(use master_layer 2 as its split layer)
+    master_layer 1: zpos = 4, normalized_zpos = 4;
+    master_layer 3: zpos = 5, normalized_zpos = 5;
+    kcrtc_st->max_slave_zorder = 0;
+When we use master_layer 3 as a input of CU in function
+komeda_compiz_set_input and check it with function
+komeda_component_check_input, the parameter idx is equal to
+normailzed_zpos minus max_slave_zorder, the value of idx is 5
+and is euqal to CU's max_active_inputs, so that
+komeda_component_check_input returns a -EINVAL value.
+
+To fix the bug described above, when calculating the max_slave_zorder
+with the layer_split enabled, count the split layer in this calculation
+directly.
+
+Signed-off-by: hongchi.peng <hongchi.peng@siengine.com>
+Acked-by: Liviu Dudau <liviu.dudau@arm.com>
+Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20240826024517.3739-1-hongchi.peng@siengine.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/arm/display/komeda/komeda_kms.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+index 451746ebbe713..89f3d6aa72b08 100644
+--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
++++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+@@ -163,6 +163,7 @@ static int komeda_crtc_normalize_zpos(struct drm_crtc *crtc,
+       struct drm_plane *plane;
+       struct list_head zorder_list;
+       int order = 0, err;
++      u32 slave_zpos = 0;
+       DRM_DEBUG_ATOMIC("[CRTC:%d:%s] calculating normalized zpos values\n",
+                        crtc->base.id, crtc->name);
+@@ -202,10 +203,13 @@ static int komeda_crtc_normalize_zpos(struct drm_crtc *crtc,
+                                plane_st->zpos, plane_st->normalized_zpos);
+               /* calculate max slave zorder */
+-              if (has_bit(drm_plane_index(plane), kcrtc->slave_planes))
++              if (has_bit(drm_plane_index(plane), kcrtc->slave_planes)) {
++                      slave_zpos = plane_st->normalized_zpos;
++                      if (to_kplane_st(plane_st)->layer_split)
++                              slave_zpos++;
+                       kcrtc_st->max_slave_zorder =
+-                              max(plane_st->normalized_zpos,
+-                                  kcrtc_st->max_slave_zorder);
++                              max(slave_zpos, kcrtc_st->max_slave_zorder);
++              }
+       }
+       crtc_st->zpos_changed = true;
+-- 
+2.43.0
+
diff --git a/queue-6.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch b/queue-6.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch
new file mode 100644 (file)
index 0000000..11b0c86
--- /dev/null
@@ -0,0 +1,36 @@
+From c4a84e38bcafbc0d3f7ca172e755a74364f876fe Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 30 Jul 2024 08:21:42 +0200
+Subject: hwmon: (asus-ec-sensors) remove VRM temp X570-E GAMING
+
+From: Ross Brown <true.robot.ross@gmail.com>
+
+[ Upstream commit 9efaebc0072b8e95505544bf385c20ee8a29d799 ]
+
+X570-E GAMING does not have VRM temperature sensor.
+
+Signed-off-by: Ross Brown <true.robot.ross@gmail.com>
+Signed-off-by: Eugene Shalygin <eugene.shalygin@gmail.com>
+Link: https://lore.kernel.org/r/20240730062320.5188-2-eugene.shalygin@gmail.com
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/hwmon/asus-ec-sensors.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/hwmon/asus-ec-sensors.c b/drivers/hwmon/asus-ec-sensors.c
+index b4d65916b3c00..d893cfd1cb829 100644
+--- a/drivers/hwmon/asus-ec-sensors.c
++++ b/drivers/hwmon/asus-ec-sensors.c
+@@ -369,7 +369,7 @@ static const struct ec_board_info board_info_strix_b550_i_gaming = {
+ static const struct ec_board_info board_info_strix_x570_e_gaming = {
+       .sensors = SENSOR_SET_TEMP_CHIPSET_CPU_MB |
+-              SENSOR_TEMP_T_SENSOR | SENSOR_TEMP_VRM |
++              SENSOR_TEMP_T_SENSOR |
+               SENSOR_FAN_CHIPSET | SENSOR_CURR_CPU |
+               SENSOR_IN_CPU_CORE,
+       .mutex_path = ASUS_HW_ACCESS_MUTEX_ASMX,
+-- 
+2.43.0
+
diff --git a/queue-6.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-17737 b/queue-6.1/hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-17737
new file mode 100644 (file)
index 0000000..11b0c86
--- /dev/null
@@ -0,0 +1,36 @@
+From c4a84e38bcafbc0d3f7ca172e755a74364f876fe Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 30 Jul 2024 08:21:42 +0200
+Subject: hwmon: (asus-ec-sensors) remove VRM temp X570-E GAMING
+
+From: Ross Brown <true.robot.ross@gmail.com>
+
+[ Upstream commit 9efaebc0072b8e95505544bf385c20ee8a29d799 ]
+
+X570-E GAMING does not have VRM temperature sensor.
+
+Signed-off-by: Ross Brown <true.robot.ross@gmail.com>
+Signed-off-by: Eugene Shalygin <eugene.shalygin@gmail.com>
+Link: https://lore.kernel.org/r/20240730062320.5188-2-eugene.shalygin@gmail.com
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/hwmon/asus-ec-sensors.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/hwmon/asus-ec-sensors.c b/drivers/hwmon/asus-ec-sensors.c
+index b4d65916b3c00..d893cfd1cb829 100644
+--- a/drivers/hwmon/asus-ec-sensors.c
++++ b/drivers/hwmon/asus-ec-sensors.c
+@@ -369,7 +369,7 @@ static const struct ec_board_info board_info_strix_b550_i_gaming = {
+ static const struct ec_board_info board_info_strix_x570_e_gaming = {
+       .sensors = SENSOR_SET_TEMP_CHIPSET_CPU_MB |
+-              SENSOR_TEMP_T_SENSOR | SENSOR_TEMP_VRM |
++              SENSOR_TEMP_T_SENSOR |
+               SENSOR_FAN_CHIPSET | SENSOR_CURR_CPU |
+               SENSOR_IN_CPU_CORE,
+       .mutex_path = ASUS_HW_ACCESS_MUTEX_ASMX,
+-- 
+2.43.0
+
diff --git a/queue-6.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch b/queue-6.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch
new file mode 100644 (file)
index 0000000..9e32031
--- /dev/null
@@ -0,0 +1,55 @@
+From 018e86f5fa0c842c225ff6ef3e3b59df72d5cdef Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 26 Aug 2024 23:11:32 +0800
+Subject: LoongArch: Define ARCH_IRQ_INIT_FLAGS as IRQ_NOPROBE
+
+From: Huacai Chen <chenhuacai@loongson.cn>
+
+[ Upstream commit 274ea3563e5ab9f468c15bfb9d2492803a66d9be ]
+
+Currently we call irq_set_noprobe() in a loop for all IRQs, but indeed
+it only works for IRQs below NR_IRQS_LEGACY because at init_IRQ() only
+legacy interrupts have been allocated.
+
+Instead, we can define ARCH_IRQ_INIT_FLAGS as IRQ_NOPROBE in asm/hwirq.h
+and the core will automatically set the flag for all interrupts.
+
+Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
+Signed-off-by: Tianyang Zhang <zhangtianyang@loongson.cn>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/loongarch/include/asm/hw_irq.h | 2 ++
+ arch/loongarch/kernel/irq.c         | 3 ---
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/arch/loongarch/include/asm/hw_irq.h b/arch/loongarch/include/asm/hw_irq.h
+index af4f4e8fbd858..8156ffb674159 100644
+--- a/arch/loongarch/include/asm/hw_irq.h
++++ b/arch/loongarch/include/asm/hw_irq.h
+@@ -9,6 +9,8 @@
+ extern atomic_t irq_err_count;
++#define ARCH_IRQ_INIT_FLAGS   IRQ_NOPROBE
++
+ /*
+  * interrupt-retrigger: NOP for now. This may not be appropriate for all
+  * machines, we'll see ...
+diff --git a/arch/loongarch/kernel/irq.c b/arch/loongarch/kernel/irq.c
+index 0524bf1169b74..4496649c9e68b 100644
+--- a/arch/loongarch/kernel/irq.c
++++ b/arch/loongarch/kernel/irq.c
+@@ -122,9 +122,6 @@ void __init init_IRQ(void)
+               panic("IPI IRQ request failed\n");
+ #endif
+-      for (i = 0; i < NR_IRQS; i++)
+-              irq_set_noprobe(i);
+-
+       for_each_possible_cpu(i) {
+               page = alloc_pages_node(cpu_to_node(i), GFP_KERNEL, order);
+-- 
+2.43.0
+
diff --git a/queue-6.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-24263 b/queue-6.1/loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-24263
new file mode 100644 (file)
index 0000000..9e32031
--- /dev/null
@@ -0,0 +1,55 @@
+From 018e86f5fa0c842c225ff6ef3e3b59df72d5cdef Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 26 Aug 2024 23:11:32 +0800
+Subject: LoongArch: Define ARCH_IRQ_INIT_FLAGS as IRQ_NOPROBE
+
+From: Huacai Chen <chenhuacai@loongson.cn>
+
+[ Upstream commit 274ea3563e5ab9f468c15bfb9d2492803a66d9be ]
+
+Currently we call irq_set_noprobe() in a loop for all IRQs, but indeed
+it only works for IRQs below NR_IRQS_LEGACY because at init_IRQ() only
+legacy interrupts have been allocated.
+
+Instead, we can define ARCH_IRQ_INIT_FLAGS as IRQ_NOPROBE in asm/hwirq.h
+and the core will automatically set the flag for all interrupts.
+
+Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
+Signed-off-by: Tianyang Zhang <zhangtianyang@loongson.cn>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/loongarch/include/asm/hw_irq.h | 2 ++
+ arch/loongarch/kernel/irq.c         | 3 ---
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/arch/loongarch/include/asm/hw_irq.h b/arch/loongarch/include/asm/hw_irq.h
+index af4f4e8fbd858..8156ffb674159 100644
+--- a/arch/loongarch/include/asm/hw_irq.h
++++ b/arch/loongarch/include/asm/hw_irq.h
+@@ -9,6 +9,8 @@
+ extern atomic_t irq_err_count;
++#define ARCH_IRQ_INIT_FLAGS   IRQ_NOPROBE
++
+ /*
+  * interrupt-retrigger: NOP for now. This may not be appropriate for all
+  * machines, we'll see ...
+diff --git a/arch/loongarch/kernel/irq.c b/arch/loongarch/kernel/irq.c
+index 0524bf1169b74..4496649c9e68b 100644
+--- a/arch/loongarch/kernel/irq.c
++++ b/arch/loongarch/kernel/irq.c
+@@ -122,9 +122,6 @@ void __init init_IRQ(void)
+               panic("IPI IRQ request failed\n");
+ #endif
+-      for (i = 0; i < NR_IRQS; i++)
+-              irq_set_noprobe(i);
+-
+       for_each_possible_cpu(i) {
+               page = alloc_pages_node(cpu_to_node(i), GFP_KERNEL, order);
+-- 
+2.43.0
+
diff --git a/queue-6.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch b/queue-6.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch
new file mode 100644 (file)
index 0000000..cf93b08
--- /dev/null
@@ -0,0 +1,51 @@
+From b071a874ac5a6a541127634169156fbbb6199425 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 29 Jul 2024 08:33:27 +0300
+Subject: microblaze: don't treat zero reserved memory regions as error
+
+From: Mike Rapoport <rppt@kernel.org>
+
+[ Upstream commit 0075df288dd8a7abfe03b3766176c393063591dd ]
+
+Before commit 721f4a6526da ("mm/memblock: remove empty dummy entry") the
+check for non-zero of memblock.reserved.cnt in mmu_init() would always
+be true either because  memblock.reserved.cnt is initialized to 1 or
+because there were memory reservations earlier.
+
+The removal of dummy empty entry in memblock caused this check to fail
+because now memblock.reserved.cnt is initialized to 0.
+
+Remove the check for non-zero of memblock.reserved.cnt because it's
+perfectly fine to have an empty memblock.reserved array that early in
+boot.
+
+Reported-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Mike Rapoport <rppt@kernel.org>
+Reviewed-by: Wei Yang <richard.weiyang@gmail.com>
+Tested-by: Guenter Roeck <linux@roeck-us.net>
+Link: https://lore.kernel.org/r/20240729053327.4091459-1-rppt@kernel.org
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/microblaze/mm/init.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c
+index 353fabdfcbc54..2a3248194d505 100644
+--- a/arch/microblaze/mm/init.c
++++ b/arch/microblaze/mm/init.c
+@@ -193,11 +193,6 @@ asmlinkage void __init mmu_init(void)
+ {
+       unsigned int kstart, ksize;
+-      if (!memblock.reserved.cnt) {
+-              pr_emerg("Error memory count\n");
+-              machine_restart(NULL);
+-      }
+-
+       if ((u32) memblock.memory.regions[0].size < 0x400000) {
+               pr_emerg("Memory must be greater than 4MB\n");
+               machine_restart(NULL);
+-- 
+2.43.0
+
diff --git a/queue-6.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch-28512 b/queue-6.1/microblaze-don-t-treat-zero-reserved-memory-regions-.patch-28512
new file mode 100644 (file)
index 0000000..cf93b08
--- /dev/null
@@ -0,0 +1,51 @@
+From b071a874ac5a6a541127634169156fbbb6199425 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 29 Jul 2024 08:33:27 +0300
+Subject: microblaze: don't treat zero reserved memory regions as error
+
+From: Mike Rapoport <rppt@kernel.org>
+
+[ Upstream commit 0075df288dd8a7abfe03b3766176c393063591dd ]
+
+Before commit 721f4a6526da ("mm/memblock: remove empty dummy entry") the
+check for non-zero of memblock.reserved.cnt in mmu_init() would always
+be true either because  memblock.reserved.cnt is initialized to 1 or
+because there were memory reservations earlier.
+
+The removal of dummy empty entry in memblock caused this check to fail
+because now memblock.reserved.cnt is initialized to 0.
+
+Remove the check for non-zero of memblock.reserved.cnt because it's
+perfectly fine to have an empty memblock.reserved array that early in
+boot.
+
+Reported-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Mike Rapoport <rppt@kernel.org>
+Reviewed-by: Wei Yang <richard.weiyang@gmail.com>
+Tested-by: Guenter Roeck <linux@roeck-us.net>
+Link: https://lore.kernel.org/r/20240729053327.4091459-1-rppt@kernel.org
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/microblaze/mm/init.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c
+index 353fabdfcbc54..2a3248194d505 100644
+--- a/arch/microblaze/mm/init.c
++++ b/arch/microblaze/mm/init.c
+@@ -193,11 +193,6 @@ asmlinkage void __init mmu_init(void)
+ {
+       unsigned int kstart, ksize;
+-      if (!memblock.reserved.cnt) {
+-              pr_emerg("Error memory count\n");
+-              machine_restart(NULL);
+-      }
+-
+       if ((u32) memblock.memory.regions[0].size < 0x400000) {
+               pr_emerg("Memory must be greater than 4MB\n");
+               machine_restart(NULL);
+-- 
+2.43.0
+
diff --git a/queue-6.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch b/queue-6.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch
new file mode 100644 (file)
index 0000000..e907101
--- /dev/null
@@ -0,0 +1,109 @@
+From 002b5ac1e2685291c81ff9791f87db9975d66b2e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 22 Aug 2024 15:30:06 +0800
+Subject: net: ftgmac100: Ensure tx descriptor updates are visible
+
+From: Jacky Chou <jacky_chou@aspeedtech.com>
+
+[ Upstream commit 4186c8d9e6af57bab0687b299df10ebd47534a0a ]
+
+The driver must ensure TX descriptor updates are visible
+before updating TX pointer and TX clear pointer.
+
+This resolves TX hangs observed on AST2600 when running
+iperf3.
+
+Signed-off-by: Jacky Chou <jacky_chou@aspeedtech.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/ethernet/faraday/ftgmac100.c | 26 ++++++++++++++++--------
+ 1 file changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
+index a03879a27b041..7adc46aa75e66 100644
+--- a/drivers/net/ethernet/faraday/ftgmac100.c
++++ b/drivers/net/ethernet/faraday/ftgmac100.c
+@@ -566,7 +566,7 @@ static bool ftgmac100_rx_packet(struct ftgmac100 *priv, int *processed)
+       (*processed)++;
+       return true;
+- drop:
++drop:
+       /* Clean rxdes0 (which resets own bit) */
+       rxdes->rxdes0 = cpu_to_le32(status & priv->rxdes0_edorr_mask);
+       priv->rx_pointer = ftgmac100_next_rx_pointer(priv, pointer);
+@@ -650,6 +650,11 @@ static bool ftgmac100_tx_complete_packet(struct ftgmac100 *priv)
+       ftgmac100_free_tx_packet(priv, pointer, skb, txdes, ctl_stat);
+       txdes->txdes0 = cpu_to_le32(ctl_stat & priv->txdes0_edotr_mask);
++      /* Ensure the descriptor config is visible before setting the tx
++       * pointer.
++       */
++      smp_wmb();
++
+       priv->tx_clean_pointer = ftgmac100_next_tx_pointer(priv, pointer);
+       return true;
+@@ -803,6 +808,11 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb,
+       dma_wmb();
+       first->txdes0 = cpu_to_le32(f_ctl_stat);
++      /* Ensure the descriptor config is visible before setting the tx
++       * pointer.
++       */
++      smp_wmb();
++
+       /* Update next TX pointer */
+       priv->tx_pointer = pointer;
+@@ -823,7 +833,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb,
+       return NETDEV_TX_OK;
+- dma_err:
++dma_err:
+       if (net_ratelimit())
+               netdev_err(netdev, "map tx fragment failed\n");
+@@ -845,7 +855,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb,
+        * last fragment, so we know ftgmac100_free_tx_packet()
+        * hasn't freed the skb yet.
+        */
+- drop:
++drop:
+       /* Drop the packet */
+       dev_kfree_skb_any(skb);
+       netdev->stats.tx_dropped++;
+@@ -1338,7 +1348,7 @@ static void ftgmac100_reset(struct ftgmac100 *priv)
+       ftgmac100_init_all(priv, true);
+       netdev_dbg(netdev, "Reset done !\n");
+- bail:
++bail:
+       if (priv->mii_bus)
+               mutex_unlock(&priv->mii_bus->mdio_lock);
+       if (netdev->phydev)
+@@ -1537,15 +1547,15 @@ static int ftgmac100_open(struct net_device *netdev)
+       return 0;
+- err_ncsi:
++err_ncsi:
+       napi_disable(&priv->napi);
+       netif_stop_queue(netdev);
+- err_alloc:
++err_alloc:
+       ftgmac100_free_buffers(priv);
+       free_irq(netdev->irq, netdev);
+- err_irq:
++err_irq:
+       netif_napi_del(&priv->napi);
+- err_hw:
++err_hw:
+       iowrite32(0, priv->base + FTGMAC100_OFFSET_IER);
+       ftgmac100_free_rings(priv);
+       return err;
+-- 
+2.43.0
+
diff --git a/queue-6.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-11342 b/queue-6.1/net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-11342
new file mode 100644 (file)
index 0000000..e907101
--- /dev/null
@@ -0,0 +1,109 @@
+From 002b5ac1e2685291c81ff9791f87db9975d66b2e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 22 Aug 2024 15:30:06 +0800
+Subject: net: ftgmac100: Ensure tx descriptor updates are visible
+
+From: Jacky Chou <jacky_chou@aspeedtech.com>
+
+[ Upstream commit 4186c8d9e6af57bab0687b299df10ebd47534a0a ]
+
+The driver must ensure TX descriptor updates are visible
+before updating TX pointer and TX clear pointer.
+
+This resolves TX hangs observed on AST2600 when running
+iperf3.
+
+Signed-off-by: Jacky Chou <jacky_chou@aspeedtech.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/ethernet/faraday/ftgmac100.c | 26 ++++++++++++++++--------
+ 1 file changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
+index a03879a27b041..7adc46aa75e66 100644
+--- a/drivers/net/ethernet/faraday/ftgmac100.c
++++ b/drivers/net/ethernet/faraday/ftgmac100.c
+@@ -566,7 +566,7 @@ static bool ftgmac100_rx_packet(struct ftgmac100 *priv, int *processed)
+       (*processed)++;
+       return true;
+- drop:
++drop:
+       /* Clean rxdes0 (which resets own bit) */
+       rxdes->rxdes0 = cpu_to_le32(status & priv->rxdes0_edorr_mask);
+       priv->rx_pointer = ftgmac100_next_rx_pointer(priv, pointer);
+@@ -650,6 +650,11 @@ static bool ftgmac100_tx_complete_packet(struct ftgmac100 *priv)
+       ftgmac100_free_tx_packet(priv, pointer, skb, txdes, ctl_stat);
+       txdes->txdes0 = cpu_to_le32(ctl_stat & priv->txdes0_edotr_mask);
++      /* Ensure the descriptor config is visible before setting the tx
++       * pointer.
++       */
++      smp_wmb();
++
+       priv->tx_clean_pointer = ftgmac100_next_tx_pointer(priv, pointer);
+       return true;
+@@ -803,6 +808,11 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb,
+       dma_wmb();
+       first->txdes0 = cpu_to_le32(f_ctl_stat);
++      /* Ensure the descriptor config is visible before setting the tx
++       * pointer.
++       */
++      smp_wmb();
++
+       /* Update next TX pointer */
+       priv->tx_pointer = pointer;
+@@ -823,7 +833,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb,
+       return NETDEV_TX_OK;
+- dma_err:
++dma_err:
+       if (net_ratelimit())
+               netdev_err(netdev, "map tx fragment failed\n");
+@@ -845,7 +855,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb,
+        * last fragment, so we know ftgmac100_free_tx_packet()
+        * hasn't freed the skb yet.
+        */
+- drop:
++drop:
+       /* Drop the packet */
+       dev_kfree_skb_any(skb);
+       netdev->stats.tx_dropped++;
+@@ -1338,7 +1348,7 @@ static void ftgmac100_reset(struct ftgmac100 *priv)
+       ftgmac100_init_all(priv, true);
+       netdev_dbg(netdev, "Reset done !\n");
+- bail:
++bail:
+       if (priv->mii_bus)
+               mutex_unlock(&priv->mii_bus->mdio_lock);
+       if (netdev->phydev)
+@@ -1537,15 +1547,15 @@ static int ftgmac100_open(struct net_device *netdev)
+       return 0;
+- err_ncsi:
++err_ncsi:
+       napi_disable(&priv->napi);
+       netif_stop_queue(netdev);
+- err_alloc:
++err_alloc:
+       ftgmac100_free_buffers(priv);
+       free_irq(netdev->irq, netdev);
+- err_irq:
++err_irq:
+       netif_napi_del(&priv->napi);
+- err_hw:
++err_hw:
+       iowrite32(0, priv->base + FTGMAC100_OFFSET_IER);
+       ftgmac100_free_rings(priv);
+       return err;
+-- 
+2.43.0
+
diff --git a/queue-6.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch b/queue-6.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch
new file mode 100644 (file)
index 0000000..4eab0d9
--- /dev/null
@@ -0,0 +1,85 @@
+From 0ea2014a17504389b4965a432a40e91f57162590 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 20 May 2024 10:40:23 +0800
+Subject: ocfs2: add bounds checking to ocfs2_xattr_find_entry()
+
+From: Ferry Meng <mengferry@linux.alibaba.com>
+
+[ Upstream commit 9e3041fecdc8f78a5900c3aa51d3d756e73264d6 ]
+
+Add a paranoia check to make sure it doesn't stray beyond valid memory
+region containing ocfs2 xattr entries when scanning for a match.  It will
+prevent out-of-bound access in case of crafted images.
+
+Link: https://lkml.kernel.org/r/20240520024024.1976129-1-joseph.qi@linux.alibaba.com
+Signed-off-by: Ferry Meng <mengferry@linux.alibaba.com>
+Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
+Reported-by: lei lu <llfamsec@gmail.com>
+Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
+Cc: Mark Fasheh <mark@fasheh.com>
+Cc: Joel Becker <jlbec@evilplan.org>
+Cc: Junxiao Bi <junxiao.bi@oracle.com>
+Cc: Changwei Ge <gechangwei@live.cn>
+Cc: Gang He <ghe@suse.com>
+Cc: Jun Piao <piaojun@huawei.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Stable-dep-of: af77c4fc1871 ("ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry()")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/ocfs2/xattr.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
+index 55699c5735413..61213b7e4dfbe 100644
+--- a/fs/ocfs2/xattr.c
++++ b/fs/ocfs2/xattr.c
+@@ -1066,7 +1066,7 @@ ssize_t ocfs2_listxattr(struct dentry *dentry,
+       return i_ret + b_ret;
+ }
+-static int ocfs2_xattr_find_entry(int name_index,
++static int ocfs2_xattr_find_entry(struct inode *inode, int name_index,
+                                 const char *name,
+                                 struct ocfs2_xattr_search *xs)
+ {
+@@ -1080,6 +1080,10 @@ static int ocfs2_xattr_find_entry(int name_index,
+       name_len = strlen(name);
+       entry = xs->here;
+       for (i = 0; i < le16_to_cpu(xs->header->xh_count); i++) {
++              if ((void *)entry >= xs->end) {
++                      ocfs2_error(inode->i_sb, "corrupted xattr entries");
++                      return -EFSCORRUPTED;
++              }
+               cmp = name_index - ocfs2_xattr_get_type(entry);
+               if (!cmp)
+                       cmp = name_len - entry->xe_name_len;
+@@ -1170,7 +1174,7 @@ static int ocfs2_xattr_ibody_get(struct inode *inode,
+       xs->base = (void *)xs->header;
+       xs->here = xs->header->xh_entries;
+-      ret = ocfs2_xattr_find_entry(name_index, name, xs);
++      ret = ocfs2_xattr_find_entry(inode, name_index, name, xs);
+       if (ret)
+               return ret;
+       size = le64_to_cpu(xs->here->xe_value_size);
+@@ -2702,7 +2706,7 @@ static int ocfs2_xattr_ibody_find(struct inode *inode,
+       /* Find the named attribute. */
+       if (oi->ip_dyn_features & OCFS2_INLINE_XATTR_FL) {
+-              ret = ocfs2_xattr_find_entry(name_index, name, xs);
++              ret = ocfs2_xattr_find_entry(inode, name_index, name, xs);
+               if (ret && ret != -ENODATA)
+                       return ret;
+               xs->not_found = ret;
+@@ -2837,7 +2841,7 @@ static int ocfs2_xattr_block_find(struct inode *inode,
+               xs->end = (void *)(blk_bh->b_data) + blk_bh->b_size;
+               xs->here = xs->header->xh_entries;
+-              ret = ocfs2_xattr_find_entry(name_index, name, xs);
++              ret = ocfs2_xattr_find_entry(inode, name_index, name, xs);
+       } else
+               ret = ocfs2_xattr_index_block_find(inode, blk_bh,
+                                                  name_index,
+-- 
+2.43.0
+
diff --git a/queue-6.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-12187 b/queue-6.1/ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-12187
new file mode 100644 (file)
index 0000000..4eab0d9
--- /dev/null
@@ -0,0 +1,85 @@
+From 0ea2014a17504389b4965a432a40e91f57162590 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 20 May 2024 10:40:23 +0800
+Subject: ocfs2: add bounds checking to ocfs2_xattr_find_entry()
+
+From: Ferry Meng <mengferry@linux.alibaba.com>
+
+[ Upstream commit 9e3041fecdc8f78a5900c3aa51d3d756e73264d6 ]
+
+Add a paranoia check to make sure it doesn't stray beyond valid memory
+region containing ocfs2 xattr entries when scanning for a match.  It will
+prevent out-of-bound access in case of crafted images.
+
+Link: https://lkml.kernel.org/r/20240520024024.1976129-1-joseph.qi@linux.alibaba.com
+Signed-off-by: Ferry Meng <mengferry@linux.alibaba.com>
+Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
+Reported-by: lei lu <llfamsec@gmail.com>
+Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
+Cc: Mark Fasheh <mark@fasheh.com>
+Cc: Joel Becker <jlbec@evilplan.org>
+Cc: Junxiao Bi <junxiao.bi@oracle.com>
+Cc: Changwei Ge <gechangwei@live.cn>
+Cc: Gang He <ghe@suse.com>
+Cc: Jun Piao <piaojun@huawei.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Stable-dep-of: af77c4fc1871 ("ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry()")
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/ocfs2/xattr.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
+index 55699c5735413..61213b7e4dfbe 100644
+--- a/fs/ocfs2/xattr.c
++++ b/fs/ocfs2/xattr.c
+@@ -1066,7 +1066,7 @@ ssize_t ocfs2_listxattr(struct dentry *dentry,
+       return i_ret + b_ret;
+ }
+-static int ocfs2_xattr_find_entry(int name_index,
++static int ocfs2_xattr_find_entry(struct inode *inode, int name_index,
+                                 const char *name,
+                                 struct ocfs2_xattr_search *xs)
+ {
+@@ -1080,6 +1080,10 @@ static int ocfs2_xattr_find_entry(int name_index,
+       name_len = strlen(name);
+       entry = xs->here;
+       for (i = 0; i < le16_to_cpu(xs->header->xh_count); i++) {
++              if ((void *)entry >= xs->end) {
++                      ocfs2_error(inode->i_sb, "corrupted xattr entries");
++                      return -EFSCORRUPTED;
++              }
+               cmp = name_index - ocfs2_xattr_get_type(entry);
+               if (!cmp)
+                       cmp = name_len - entry->xe_name_len;
+@@ -1170,7 +1174,7 @@ static int ocfs2_xattr_ibody_get(struct inode *inode,
+       xs->base = (void *)xs->header;
+       xs->here = xs->header->xh_entries;
+-      ret = ocfs2_xattr_find_entry(name_index, name, xs);
++      ret = ocfs2_xattr_find_entry(inode, name_index, name, xs);
+       if (ret)
+               return ret;
+       size = le64_to_cpu(xs->here->xe_value_size);
+@@ -2702,7 +2706,7 @@ static int ocfs2_xattr_ibody_find(struct inode *inode,
+       /* Find the named attribute. */
+       if (oi->ip_dyn_features & OCFS2_INLINE_XATTR_FL) {
+-              ret = ocfs2_xattr_find_entry(name_index, name, xs);
++              ret = ocfs2_xattr_find_entry(inode, name_index, name, xs);
+               if (ret && ret != -ENODATA)
+                       return ret;
+               xs->not_found = ret;
+@@ -2837,7 +2841,7 @@ static int ocfs2_xattr_block_find(struct inode *inode,
+               xs->end = (void *)(blk_bh->b_data) + blk_bh->b_size;
+               xs->here = xs->header->xh_entries;
+-              ret = ocfs2_xattr_find_entry(name_index, name, xs);
++              ret = ocfs2_xattr_find_entry(inode, name_index, name, xs);
+       } else
+               ret = ocfs2_xattr_index_block_find(inode, blk_bh,
+                                                  name_index,
+-- 
+2.43.0
+
diff --git a/queue-6.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch b/queue-6.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch
new file mode 100644 (file)
index 0000000..4fbca8d
--- /dev/null
@@ -0,0 +1,67 @@
+From 78bdc9d421a2ca3b7b16f748036d2bc153dff758 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 20 May 2024 10:40:24 +0800
+Subject: ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry()
+
+From: Ferry Meng <mengferry@linux.alibaba.com>
+
+[ Upstream commit af77c4fc1871847b528d58b7fdafb4aa1f6a9262 ]
+
+xattr in ocfs2 maybe 'non-indexed', which saved with additional space
+requested.  It's better to check if the memory is out of bound before
+memcmp, although this possibility mainly comes from crafted poisonous
+images.
+
+Link: https://lkml.kernel.org/r/20240520024024.1976129-2-joseph.qi@linux.alibaba.com
+Signed-off-by: Ferry Meng <mengferry@linux.alibaba.com>
+Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
+Reported-by: lei lu <llfamsec@gmail.com>
+Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
+Cc: Changwei Ge <gechangwei@live.cn>
+Cc: Gang He <ghe@suse.com>
+Cc: Joel Becker <jlbec@evilplan.org>
+Cc: Jun Piao <piaojun@huawei.com>
+Cc: Junxiao Bi <junxiao.bi@oracle.com>
+Cc: Mark Fasheh <mark@fasheh.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/ocfs2/xattr.c | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
+index 61213b7e4dfbe..3ba40f16ef056 100644
+--- a/fs/ocfs2/xattr.c
++++ b/fs/ocfs2/xattr.c
+@@ -1072,7 +1072,7 @@ static int ocfs2_xattr_find_entry(struct inode *inode, int name_index,
+ {
+       struct ocfs2_xattr_entry *entry;
+       size_t name_len;
+-      int i, cmp = 1;
++      int i, name_offset, cmp = 1;
+       if (name == NULL)
+               return -EINVAL;
+@@ -1087,10 +1087,15 @@ static int ocfs2_xattr_find_entry(struct inode *inode, int name_index,
+               cmp = name_index - ocfs2_xattr_get_type(entry);
+               if (!cmp)
+                       cmp = name_len - entry->xe_name_len;
+-              if (!cmp)
+-                      cmp = memcmp(name, (xs->base +
+-                                   le16_to_cpu(entry->xe_name_offset)),
+-                                   name_len);
++              if (!cmp) {
++                      name_offset = le16_to_cpu(entry->xe_name_offset);
++                      if ((xs->base + name_offset + name_len) > xs->end) {
++                              ocfs2_error(inode->i_sb,
++                                          "corrupted xattr entries");
++                              return -EFSCORRUPTED;
++                      }
++                      cmp = memcmp(name, (xs->base + name_offset), name_len);
++              }
+               if (cmp == 0)
+                       break;
+               entry += 1;
+-- 
+2.43.0
+
diff --git a/queue-6.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-32532 b/queue-6.1/ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-32532
new file mode 100644 (file)
index 0000000..4fbca8d
--- /dev/null
@@ -0,0 +1,67 @@
+From 78bdc9d421a2ca3b7b16f748036d2bc153dff758 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 20 May 2024 10:40:24 +0800
+Subject: ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry()
+
+From: Ferry Meng <mengferry@linux.alibaba.com>
+
+[ Upstream commit af77c4fc1871847b528d58b7fdafb4aa1f6a9262 ]
+
+xattr in ocfs2 maybe 'non-indexed', which saved with additional space
+requested.  It's better to check if the memory is out of bound before
+memcmp, although this possibility mainly comes from crafted poisonous
+images.
+
+Link: https://lkml.kernel.org/r/20240520024024.1976129-2-joseph.qi@linux.alibaba.com
+Signed-off-by: Ferry Meng <mengferry@linux.alibaba.com>
+Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com>
+Reported-by: lei lu <llfamsec@gmail.com>
+Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
+Cc: Changwei Ge <gechangwei@live.cn>
+Cc: Gang He <ghe@suse.com>
+Cc: Joel Becker <jlbec@evilplan.org>
+Cc: Jun Piao <piaojun@huawei.com>
+Cc: Junxiao Bi <junxiao.bi@oracle.com>
+Cc: Mark Fasheh <mark@fasheh.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/ocfs2/xattr.c | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
+index 61213b7e4dfbe..3ba40f16ef056 100644
+--- a/fs/ocfs2/xattr.c
++++ b/fs/ocfs2/xattr.c
+@@ -1072,7 +1072,7 @@ static int ocfs2_xattr_find_entry(struct inode *inode, int name_index,
+ {
+       struct ocfs2_xattr_entry *entry;
+       size_t name_len;
+-      int i, cmp = 1;
++      int i, name_offset, cmp = 1;
+       if (name == NULL)
+               return -EINVAL;
+@@ -1087,10 +1087,15 @@ static int ocfs2_xattr_find_entry(struct inode *inode, int name_index,
+               cmp = name_index - ocfs2_xattr_get_type(entry);
+               if (!cmp)
+                       cmp = name_len - entry->xe_name_len;
+-              if (!cmp)
+-                      cmp = memcmp(name, (xs->base +
+-                                   le16_to_cpu(entry->xe_name_offset)),
+-                                   name_len);
++              if (!cmp) {
++                      name_offset = le16_to_cpu(entry->xe_name_offset);
++                      if ((xs->base + name_offset + name_len) > xs->end) {
++                              ocfs2_error(inode->i_sb,
++                                          "corrupted xattr entries");
++                              return -EFSCORRUPTED;
++                      }
++                      cmp = memcmp(name, (xs->base + name_offset), name_len);
++              }
+               if (cmp == 0)
+                       break;
+               entry += 1;
+-- 
+2.43.0
+
diff --git a/queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch b/queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch
new file mode 100644 (file)
index 0000000..635165d
--- /dev/null
@@ -0,0 +1,51 @@
+From c60d909731e4c7cccc4ea663623cd0c66889ae3f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 31 Jul 2024 01:16:26 +0200
+Subject: pinctrl: at91: make it work with current gpiolib
+
+From: Thomas Blocher <thomas.blocher@ek-dev.de>
+
+[ Upstream commit 752f387faaae0ae2e84d3f496922524785e77d60 ]
+
+pinctrl-at91 currently does not support the gpio-groups devicetree
+property and has no pin-range.
+Because of this at91 gpios stopped working since patch
+commit 2ab73c6d8323fa1e ("gpio: Support GPIO controllers without pin-ranges")
+This was discussed in the patches
+commit fc328a7d1fcce263 ("gpio: Revert regression in sysfs-gpio (gpiolib.c)")
+commit 56e337f2cf132632 ("Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"")
+
+As a workaround manually set pin-range via gpiochip_add_pin_range() until
+a) pinctrl-at91 is reworked to support devicetree gpio-groups
+b) another solution as mentioned in
+commit 56e337f2cf132632 ("Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"")
+is found
+
+Signed-off-by: Thomas Blocher <thomas.blocher@ek-dev.de>
+Link: https://lore.kernel.org/5b992862-355d-f0de-cd3d-ff99e67a4ff1@ek-dev.de
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/pinctrl/pinctrl-at91.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
+index ff3b6a8a0b170..333f9d70c7f48 100644
+--- a/drivers/pinctrl/pinctrl-at91.c
++++ b/drivers/pinctrl/pinctrl-at91.c
+@@ -1420,8 +1420,11 @@ static int at91_pinctrl_probe(struct platform_device *pdev)
+       /* We will handle a range of GPIO pins */
+       for (i = 0; i < gpio_banks; i++)
+-              if (gpio_chips[i])
++              if (gpio_chips[i]) {
+                       pinctrl_add_gpio_range(info->pctl, &gpio_chips[i]->range);
++                      gpiochip_add_pin_range(&gpio_chips[i]->chip, dev_name(info->pctl->dev), 0,
++                              gpio_chips[i]->range.pin_base, gpio_chips[i]->range.npins);
++              }
+       dev_info(&pdev->dev, "initialized AT91 pinctrl driver\n");
+-- 
+2.43.0
+
diff --git a/queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch-9726 b/queue-6.1/pinctrl-at91-make-it-work-with-current-gpiolib.patch-9726
new file mode 100644 (file)
index 0000000..635165d
--- /dev/null
@@ -0,0 +1,51 @@
+From c60d909731e4c7cccc4ea663623cd0c66889ae3f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 31 Jul 2024 01:16:26 +0200
+Subject: pinctrl: at91: make it work with current gpiolib
+
+From: Thomas Blocher <thomas.blocher@ek-dev.de>
+
+[ Upstream commit 752f387faaae0ae2e84d3f496922524785e77d60 ]
+
+pinctrl-at91 currently does not support the gpio-groups devicetree
+property and has no pin-range.
+Because of this at91 gpios stopped working since patch
+commit 2ab73c6d8323fa1e ("gpio: Support GPIO controllers without pin-ranges")
+This was discussed in the patches
+commit fc328a7d1fcce263 ("gpio: Revert regression in sysfs-gpio (gpiolib.c)")
+commit 56e337f2cf132632 ("Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"")
+
+As a workaround manually set pin-range via gpiochip_add_pin_range() until
+a) pinctrl-at91 is reworked to support devicetree gpio-groups
+b) another solution as mentioned in
+commit 56e337f2cf132632 ("Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)"")
+is found
+
+Signed-off-by: Thomas Blocher <thomas.blocher@ek-dev.de>
+Link: https://lore.kernel.org/5b992862-355d-f0de-cd3d-ff99e67a4ff1@ek-dev.de
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/pinctrl/pinctrl-at91.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
+index ff3b6a8a0b170..333f9d70c7f48 100644
+--- a/drivers/pinctrl/pinctrl-at91.c
++++ b/drivers/pinctrl/pinctrl-at91.c
+@@ -1420,8 +1420,11 @@ static int at91_pinctrl_probe(struct platform_device *pdev)
+       /* We will handle a range of GPIO pins */
+       for (i = 0; i < gpio_banks; i++)
+-              if (gpio_chips[i])
++              if (gpio_chips[i]) {
+                       pinctrl_add_gpio_range(info->pctl, &gpio_chips[i]->range);
++                      gpiochip_add_pin_range(&gpio_chips[i]->chip, dev_name(info->pctl->dev), 0,
++                              gpio_chips[i]->range.pin_base, gpio_chips[i]->range.npins);
++              }
+       dev_info(&pdev->dev, "initialized AT91 pinctrl driver\n");
+-- 
+2.43.0
+
diff --git a/queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch b/queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch
new file mode 100644 (file)
index 0000000..b0028f0
--- /dev/null
@@ -0,0 +1,54 @@
+From 87d4d29885694f6d4074ee088f694aa33094a143 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 20 Aug 2024 23:51:31 -0700
+Subject: scsi: lpfc: Fix overflow build issue
+
+From: Sherry Yang <sherry.yang@oracle.com>
+
+[ Upstream commit 3417c9574e368f0330637505f00d3814ca8854d2 ]
+
+Build failed while enabling "CONFIG_GCOV_KERNEL=y" and
+"CONFIG_GCOV_PROFILE_ALL=y" with following error:
+
+BUILDSTDERR: drivers/scsi/lpfc/lpfc_bsg.c: In function 'lpfc_get_cgnbuf_info':
+BUILDSTDERR: ./include/linux/fortify-string.h:114:33: error: '__builtin_memcpy' accessing 18446744073709551615 bytes at offsets 0 and 0 overlaps 9223372036854775807 bytes at offset -9223372036854775808 [-Werror=restrict]
+BUILDSTDERR:   114 | #define __underlying_memcpy     __builtin_memcpy
+BUILDSTDERR:       |                                 ^
+BUILDSTDERR: ./include/linux/fortify-string.h:637:9: note: in expansion of macro '__underlying_memcpy'
+BUILDSTDERR:   637 |         __underlying_##op(p, q, __fortify_size);                        \
+BUILDSTDERR:       |         ^~~~~~~~~~~~~
+BUILDSTDERR: ./include/linux/fortify-string.h:682:26: note: in expansion of macro '__fortify_memcpy_chk'
+BUILDSTDERR:   682 | #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
+BUILDSTDERR:       |                          ^~~~~~~~~~~~~~~~~~~~
+BUILDSTDERR: drivers/scsi/lpfc/lpfc_bsg.c:5468:9: note: in expansion of macro 'memcpy'
+BUILDSTDERR:  5468 |         memcpy(cgn_buff, cp, cinfosz);
+BUILDSTDERR:       |         ^~~~~~
+
+This happens from the commit 06bb7fc0feee ("kbuild: turn on -Wrestrict by
+default"). Address this issue by using size_t type.
+
+Signed-off-by: Sherry Yang <sherry.yang@oracle.com>
+Link: https://lore.kernel.org/r/20240821065131.1180791-1-sherry.yang@oracle.com
+Reviewed-by: Justin Tee <justin.tee@broadcom.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/scsi/lpfc/lpfc_bsg.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c
+index 2373dad016033..fc300febe9140 100644
+--- a/drivers/scsi/lpfc/lpfc_bsg.c
++++ b/drivers/scsi/lpfc/lpfc_bsg.c
+@@ -5409,7 +5409,7 @@ lpfc_get_cgnbuf_info(struct bsg_job *job)
+       struct get_cgnbuf_info_req *cgnbuf_req;
+       struct lpfc_cgn_info *cp;
+       uint8_t *cgn_buff;
+-      int size, cinfosz;
++      size_t size, cinfosz;
+       int  rc = 0;
+       if (job->request_len < sizeof(struct fc_bsg_request) +
+-- 
+2.43.0
+
diff --git a/queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch-20005 b/queue-6.1/scsi-lpfc-fix-overflow-build-issue.patch-20005
new file mode 100644 (file)
index 0000000..b0028f0
--- /dev/null
@@ -0,0 +1,54 @@
+From 87d4d29885694f6d4074ee088f694aa33094a143 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 20 Aug 2024 23:51:31 -0700
+Subject: scsi: lpfc: Fix overflow build issue
+
+From: Sherry Yang <sherry.yang@oracle.com>
+
+[ Upstream commit 3417c9574e368f0330637505f00d3814ca8854d2 ]
+
+Build failed while enabling "CONFIG_GCOV_KERNEL=y" and
+"CONFIG_GCOV_PROFILE_ALL=y" with following error:
+
+BUILDSTDERR: drivers/scsi/lpfc/lpfc_bsg.c: In function 'lpfc_get_cgnbuf_info':
+BUILDSTDERR: ./include/linux/fortify-string.h:114:33: error: '__builtin_memcpy' accessing 18446744073709551615 bytes at offsets 0 and 0 overlaps 9223372036854775807 bytes at offset -9223372036854775808 [-Werror=restrict]
+BUILDSTDERR:   114 | #define __underlying_memcpy     __builtin_memcpy
+BUILDSTDERR:       |                                 ^
+BUILDSTDERR: ./include/linux/fortify-string.h:637:9: note: in expansion of macro '__underlying_memcpy'
+BUILDSTDERR:   637 |         __underlying_##op(p, q, __fortify_size);                        \
+BUILDSTDERR:       |         ^~~~~~~~~~~~~
+BUILDSTDERR: ./include/linux/fortify-string.h:682:26: note: in expansion of macro '__fortify_memcpy_chk'
+BUILDSTDERR:   682 | #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
+BUILDSTDERR:       |                          ^~~~~~~~~~~~~~~~~~~~
+BUILDSTDERR: drivers/scsi/lpfc/lpfc_bsg.c:5468:9: note: in expansion of macro 'memcpy'
+BUILDSTDERR:  5468 |         memcpy(cgn_buff, cp, cinfosz);
+BUILDSTDERR:       |         ^~~~~~
+
+This happens from the commit 06bb7fc0feee ("kbuild: turn on -Wrestrict by
+default"). Address this issue by using size_t type.
+
+Signed-off-by: Sherry Yang <sherry.yang@oracle.com>
+Link: https://lore.kernel.org/r/20240821065131.1180791-1-sherry.yang@oracle.com
+Reviewed-by: Justin Tee <justin.tee@broadcom.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/scsi/lpfc/lpfc_bsg.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c
+index 2373dad016033..fc300febe9140 100644
+--- a/drivers/scsi/lpfc/lpfc_bsg.c
++++ b/drivers/scsi/lpfc/lpfc_bsg.c
+@@ -5409,7 +5409,7 @@ lpfc_get_cgnbuf_info(struct bsg_job *job)
+       struct get_cgnbuf_info_req *cgnbuf_req;
+       struct lpfc_cgn_info *cp;
+       uint8_t *cgn_buff;
+-      int size, cinfosz;
++      size_t size, cinfosz;
+       int  rc = 0;
+       if (job->request_len < sizeof(struct fc_bsg_request) +
+-- 
+2.43.0
+
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a2b3d925c8ace2a003d3e5474a459106d721f7ef 100644 (file)
@@ -0,0 +1,62 @@
+asoc-sof-mediatek-add-missing-board-compatible.patch
+asoc-allow-module-autoloading-for-table-db1200_pids.patch
+asoc-allow-module-autoloading-for-table-board_ids.patch
+alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch
+alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch
+scsi-lpfc-fix-overflow-build-issue.patch
+pinctrl-at91-make-it-work-with-current-gpiolib.patch
+hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch
+microblaze-don-t-treat-zero-reserved-memory-regions-.patch
+net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch
+loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch
+wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch
+wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch
+wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch
+wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch
+wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch
+wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch
+can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch
+asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch
+asoc-intel-fix-module-autoloading.patch
+asoc-tda7419-fix-module-autoloading.patch
+spi-spidev-add-an-entry-for-elgin-jg10309-01.patch
+drm-komeda-fix-an-issue-related-to-normalized-zpos.patch
+spi-bcm63xx-enable-module-autoloading.patch
+smb-client-fix-hang-in-wait_for_response-for-negprot.patch
+x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch
+tools-hv-rm-.-.cmd-when-make-clean.patch
+block-fix-where-bio-io-priority-gets-set.patch
+spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch
+ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch
+ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch
+asoc-sof-mediatek-add-missing-board-compatible.patch-13794
+asoc-allow-module-autoloading-for-table-db1200_pids.patch-6485
+asoc-allow-module-autoloading-for-table-board_ids.patch-3580
+alsa-hda-realtek-fixed-alc256-headphone-no-sound.patch-30958
+alsa-hda-realtek-fixed-alc285-headphone-no-sound.patch-25726
+scsi-lpfc-fix-overflow-build-issue.patch-20005
+pinctrl-at91-make-it-work-with-current-gpiolib.patch-9726
+hwmon-asus-ec-sensors-remove-vrm-temp-x570-e-gaming.patch-17737
+microblaze-don-t-treat-zero-reserved-memory-regions-.patch-28512
+net-ftgmac100-ensure-tx-descriptor-updates-are-visib.patch-11342
+loongarch-define-arch_irq_init_flags-as-irq_noprobe.patch-24263
+wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-31042
+wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-32738
+wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-8139
+wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-5725
+wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-24142
+wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6929
+can-mcp251xfd-mcp251xfd_ring_init-check-tx-coalescin.patch-19360
+asoc-intel-soc-acpi-cht-make-lenovo-yoga-tab-3-x90f-.patch-12345
+asoc-intel-fix-module-autoloading.patch-15841
+asoc-tda7419-fix-module-autoloading.patch-17758
+spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-11824
+drm-komeda-fix-an-issue-related-to-normalized-zpos.patch-6195
+spi-bcm63xx-enable-module-autoloading.patch-6357
+smb-client-fix-hang-in-wait_for_response-for-negprot.patch-28047
+x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-19340
+tools-hv-rm-.-.cmd-when-make-clean.patch-11044
+block-fix-where-bio-io-priority-gets-set.patch-18105
+spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-21867
+ocfs2-add-bounds-checking-to-ocfs2_xattr_find_entry.patch-12187
+ocfs2-strict-bound-check-before-memcmp-in-ocfs2_xatt.patch-32532
diff --git a/queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch b/queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch
new file mode 100644 (file)
index 0000000..5a3eb5b
--- /dev/null
@@ -0,0 +1,61 @@
+From 169dc7d3c37753764a156cbfe06dcc30bdddcbc7 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 31 Aug 2024 21:40:28 -0300
+Subject: smb: client: fix hang in wait_for_response() for negproto
+
+From: Paulo Alcantara <pc@manguebit.com>
+
+[ Upstream commit 7ccc1465465d78e6411b7bd730d06e7435802b5c ]
+
+Call cifs_reconnect() to wake up processes waiting on negotiate
+protocol to handle the case where server abruptly shut down and had no
+chance to properly close the socket.
+
+Simple reproducer:
+
+  ssh 192.168.2.100 pkill -STOP smbd
+  mount.cifs //192.168.2.100/test /mnt -o ... [never returns]
+
+Cc: Rickard Andersson <rickaran@axis.com>
+Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
+Signed-off-by: Steve French <stfrench@microsoft.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/smb/client/connect.c | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
+index 21b344762d0f8..87ce71b39b771 100644
+--- a/fs/smb/client/connect.c
++++ b/fs/smb/client/connect.c
+@@ -673,6 +673,19 @@ allocate_buffers(struct TCP_Server_Info *server)
+ static bool
+ server_unresponsive(struct TCP_Server_Info *server)
+ {
++      /*
++       * If we're in the process of mounting a share or reconnecting a session
++       * and the server abruptly shut down (e.g. socket wasn't closed, packet
++       * had been ACK'ed but no SMB response), don't wait longer than 20s to
++       * negotiate protocol.
++       */
++      spin_lock(&server->srv_lock);
++      if (server->tcpStatus == CifsInNegotiate &&
++          time_after(jiffies, server->lstrp + 20 * HZ)) {
++              spin_unlock(&server->srv_lock);
++              cifs_reconnect(server, false);
++              return true;
++      }
+       /*
+        * We need to wait 3 echo intervals to make sure we handle such
+        * situations right:
+@@ -684,7 +697,6 @@ server_unresponsive(struct TCP_Server_Info *server)
+        * 65s kernel_recvmsg times out, and we see that we haven't gotten
+        *     a response in >60s.
+        */
+-      spin_lock(&server->srv_lock);
+       if ((server->tcpStatus == CifsGood ||
+           server->tcpStatus == CifsNeedNegotiate) &&
+           (!server->ops->can_echo || server->ops->can_echo(server)) &&
+-- 
+2.43.0
+
diff --git a/queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch-28047 b/queue-6.1/smb-client-fix-hang-in-wait_for_response-for-negprot.patch-28047
new file mode 100644 (file)
index 0000000..5a3eb5b
--- /dev/null
@@ -0,0 +1,61 @@
+From 169dc7d3c37753764a156cbfe06dcc30bdddcbc7 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 31 Aug 2024 21:40:28 -0300
+Subject: smb: client: fix hang in wait_for_response() for negproto
+
+From: Paulo Alcantara <pc@manguebit.com>
+
+[ Upstream commit 7ccc1465465d78e6411b7bd730d06e7435802b5c ]
+
+Call cifs_reconnect() to wake up processes waiting on negotiate
+protocol to handle the case where server abruptly shut down and had no
+chance to properly close the socket.
+
+Simple reproducer:
+
+  ssh 192.168.2.100 pkill -STOP smbd
+  mount.cifs //192.168.2.100/test /mnt -o ... [never returns]
+
+Cc: Rickard Andersson <rickaran@axis.com>
+Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
+Signed-off-by: Steve French <stfrench@microsoft.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/smb/client/connect.c | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
+index 21b344762d0f8..87ce71b39b771 100644
+--- a/fs/smb/client/connect.c
++++ b/fs/smb/client/connect.c
+@@ -673,6 +673,19 @@ allocate_buffers(struct TCP_Server_Info *server)
+ static bool
+ server_unresponsive(struct TCP_Server_Info *server)
+ {
++      /*
++       * If we're in the process of mounting a share or reconnecting a session
++       * and the server abruptly shut down (e.g. socket wasn't closed, packet
++       * had been ACK'ed but no SMB response), don't wait longer than 20s to
++       * negotiate protocol.
++       */
++      spin_lock(&server->srv_lock);
++      if (server->tcpStatus == CifsInNegotiate &&
++          time_after(jiffies, server->lstrp + 20 * HZ)) {
++              spin_unlock(&server->srv_lock);
++              cifs_reconnect(server, false);
++              return true;
++      }
+       /*
+        * We need to wait 3 echo intervals to make sure we handle such
+        * situations right:
+@@ -684,7 +697,6 @@ server_unresponsive(struct TCP_Server_Info *server)
+        * 65s kernel_recvmsg times out, and we see that we haven't gotten
+        *     a response in >60s.
+        */
+-      spin_lock(&server->srv_lock);
+       if ((server->tcpStatus == CifsGood ||
+           server->tcpStatus == CifsNeedNegotiate) &&
+           (!server->ops->can_echo || server->ops->can_echo(server)) &&
+-- 
+2.43.0
+
diff --git a/queue-6.1/spi-bcm63xx-enable-module-autoloading.patch b/queue-6.1/spi-bcm63xx-enable-module-autoloading.patch
new file mode 100644 (file)
index 0000000..a800c22
--- /dev/null
@@ -0,0 +1,35 @@
+From 751549c2202bc87c7c5fe7c5bbac8d320ac7a692 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 31 Aug 2024 09:42:31 +0000
+Subject: spi: bcm63xx: Enable module autoloading
+
+From: Liao Chen <liaochen4@huawei.com>
+
+[ Upstream commit 709df70a20e990d262c473ad9899314039e8ec82 ]
+
+Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded based
+on the alias from of_device_id table.
+
+Signed-off-by: Liao Chen <liaochen4@huawei.com>
+Link: https://patch.msgid.link/20240831094231.795024-1-liaochen4@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/spi/spi-bcm63xx.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/spi/spi-bcm63xx.c b/drivers/spi/spi-bcm63xx.c
+index 147199002df1e..a9921dcd6b797 100644
+--- a/drivers/spi/spi-bcm63xx.c
++++ b/drivers/spi/spi-bcm63xx.c
+@@ -482,6 +482,7 @@ static const struct of_device_id bcm63xx_spi_of_match[] = {
+       { .compatible = "brcm,bcm6358-spi", .data = &bcm6358_spi_reg_offsets },
+       { },
+ };
++MODULE_DEVICE_TABLE(of, bcm63xx_spi_of_match);
+ static int bcm63xx_spi_probe(struct platform_device *pdev)
+ {
+-- 
+2.43.0
+
diff --git a/queue-6.1/spi-bcm63xx-enable-module-autoloading.patch-6357 b/queue-6.1/spi-bcm63xx-enable-module-autoloading.patch-6357
new file mode 100644 (file)
index 0000000..a800c22
--- /dev/null
@@ -0,0 +1,35 @@
+From 751549c2202bc87c7c5fe7c5bbac8d320ac7a692 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 31 Aug 2024 09:42:31 +0000
+Subject: spi: bcm63xx: Enable module autoloading
+
+From: Liao Chen <liaochen4@huawei.com>
+
+[ Upstream commit 709df70a20e990d262c473ad9899314039e8ec82 ]
+
+Add MODULE_DEVICE_TABLE(), so modules could be properly autoloaded based
+on the alias from of_device_id table.
+
+Signed-off-by: Liao Chen <liaochen4@huawei.com>
+Link: https://patch.msgid.link/20240831094231.795024-1-liaochen4@huawei.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/spi/spi-bcm63xx.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/spi/spi-bcm63xx.c b/drivers/spi/spi-bcm63xx.c
+index 147199002df1e..a9921dcd6b797 100644
+--- a/drivers/spi/spi-bcm63xx.c
++++ b/drivers/spi/spi-bcm63xx.c
+@@ -482,6 +482,7 @@ static const struct of_device_id bcm63xx_spi_of_match[] = {
+       { .compatible = "brcm,bcm6358-spi", .data = &bcm6358_spi_reg_offsets },
+       { },
+ };
++MODULE_DEVICE_TABLE(of, bcm63xx_spi_of_match);
+ static int bcm63xx_spi_probe(struct platform_device *pdev)
+ {
+-- 
+2.43.0
+
diff --git a/queue-6.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch b/queue-6.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch
new file mode 100644 (file)
index 0000000..7373303
--- /dev/null
@@ -0,0 +1,38 @@
+From be45e6eda30bf297c6bc8f335f2b9e3842fd1883 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 28 Aug 2024 15:00:56 -0300
+Subject: spi: spidev: Add an entry for elgin,jg10309-01
+
+From: Fabio Estevam <festevam@gmail.com>
+
+[ Upstream commit 5f3eee1eef5d0edd23d8ac0974f56283649a1512 ]
+
+The rv1108-elgin-r1 board has an LCD controlled via SPI in userspace.
+The marking on the LCD is JG10309-01.
+
+Add the "elgin,jg10309-01" compatible string.
+
+Signed-off-by: Fabio Estevam <festevam@gmail.com>
+Reviewed-by: Heiko Stuebner <heiko@sntech.de>
+Link: https://patch.msgid.link/20240828180057.3167190-2-festevam@gmail.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/spi/spidev.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
+index 477c3578e7d9e..7ae032f8de63c 100644
+--- a/drivers/spi/spidev.c
++++ b/drivers/spi/spidev.c
+@@ -722,6 +722,7 @@ static int spidev_of_check(struct device *dev)
+ static const struct of_device_id spidev_dt_ids[] = {
+       { .compatible = "cisco,spi-petra", .data = &spidev_of_check },
+       { .compatible = "dh,dhcom-board", .data = &spidev_of_check },
++      { .compatible = "elgin,jg10309-01", .data = &spidev_of_check },
+       { .compatible = "lineartechnology,ltc2488", .data = &spidev_of_check },
+       { .compatible = "lwn,bk4", .data = &spidev_of_check },
+       { .compatible = "menlo,m53cpld", .data = &spidev_of_check },
+-- 
+2.43.0
+
diff --git a/queue-6.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-11824 b/queue-6.1/spi-spidev-add-an-entry-for-elgin-jg10309-01.patch-11824
new file mode 100644 (file)
index 0000000..7373303
--- /dev/null
@@ -0,0 +1,38 @@
+From be45e6eda30bf297c6bc8f335f2b9e3842fd1883 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 28 Aug 2024 15:00:56 -0300
+Subject: spi: spidev: Add an entry for elgin,jg10309-01
+
+From: Fabio Estevam <festevam@gmail.com>
+
+[ Upstream commit 5f3eee1eef5d0edd23d8ac0974f56283649a1512 ]
+
+The rv1108-elgin-r1 board has an LCD controlled via SPI in userspace.
+The marking on the LCD is JG10309-01.
+
+Add the "elgin,jg10309-01" compatible string.
+
+Signed-off-by: Fabio Estevam <festevam@gmail.com>
+Reviewed-by: Heiko Stuebner <heiko@sntech.de>
+Link: https://patch.msgid.link/20240828180057.3167190-2-festevam@gmail.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/spi/spidev.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
+index 477c3578e7d9e..7ae032f8de63c 100644
+--- a/drivers/spi/spidev.c
++++ b/drivers/spi/spidev.c
+@@ -722,6 +722,7 @@ static int spidev_of_check(struct device *dev)
+ static const struct of_device_id spidev_dt_ids[] = {
+       { .compatible = "cisco,spi-petra", .data = &spidev_of_check },
+       { .compatible = "dh,dhcom-board", .data = &spidev_of_check },
++      { .compatible = "elgin,jg10309-01", .data = &spidev_of_check },
+       { .compatible = "lineartechnology,ltc2488", .data = &spidev_of_check },
+       { .compatible = "lwn,bk4", .data = &spidev_of_check },
+       { .compatible = "menlo,m53cpld", .data = &spidev_of_check },
+-- 
+2.43.0
+
diff --git a/queue-6.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch b/queue-6.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch
new file mode 100644 (file)
index 0000000..671461f
--- /dev/null
@@ -0,0 +1,42 @@
+From bcb4b03946a4adb9f67d3899e034a906f63cc1ff Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 3 Sep 2024 14:32:27 +0200
+Subject: spi: spidev: Add missing spi_device_id for jg10309-01
+
+From: Geert Uytterhoeven <geert+renesas@glider.be>
+
+[ Upstream commit 5478a4f7b94414def7b56d2f18bc2ed9b0f3f1f2 ]
+
+When the of_device_id entry for "elgin,jg10309-01" was added, the
+corresponding spi_device_id was forgotten, causing a warning message
+during boot-up:
+
+    SPI driver spidev has no spi_device_id for elgin,jg10309-01
+
+Fix module autoloading and shut up the warning by adding the missing
+entry.
+
+Fixes: 5f3eee1eef5d0edd ("spi: spidev: Add an entry for elgin,jg10309-01")
+Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
+Link: https://patch.msgid.link/54bbb9d8a8db7e52d13e266f2d4a9bcd8b42a98a.1725366625.git.geert+renesas@glider.be
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/spi/spidev.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
+index 7ae032f8de63c..81a3cf9253452 100644
+--- a/drivers/spi/spidev.c
++++ b/drivers/spi/spidev.c
+@@ -694,6 +694,7 @@ static struct class *spidev_class;
+ static const struct spi_device_id spidev_spi_ids[] = {
+       { .name = "bh2228fv" },
+       { .name = "dh2228fv" },
++      { .name = "jg10309-01" },
+       { .name = "ltc2488" },
+       { .name = "sx1301" },
+       { .name = "bk4" },
+-- 
+2.43.0
+
diff --git a/queue-6.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-21867 b/queue-6.1/spi-spidev-add-missing-spi_device_id-for-jg10309-01.patch-21867
new file mode 100644 (file)
index 0000000..671461f
--- /dev/null
@@ -0,0 +1,42 @@
+From bcb4b03946a4adb9f67d3899e034a906f63cc1ff Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 3 Sep 2024 14:32:27 +0200
+Subject: spi: spidev: Add missing spi_device_id for jg10309-01
+
+From: Geert Uytterhoeven <geert+renesas@glider.be>
+
+[ Upstream commit 5478a4f7b94414def7b56d2f18bc2ed9b0f3f1f2 ]
+
+When the of_device_id entry for "elgin,jg10309-01" was added, the
+corresponding spi_device_id was forgotten, causing a warning message
+during boot-up:
+
+    SPI driver spidev has no spi_device_id for elgin,jg10309-01
+
+Fix module autoloading and shut up the warning by adding the missing
+entry.
+
+Fixes: 5f3eee1eef5d0edd ("spi: spidev: Add an entry for elgin,jg10309-01")
+Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
+Link: https://patch.msgid.link/54bbb9d8a8db7e52d13e266f2d4a9bcd8b42a98a.1725366625.git.geert+renesas@glider.be
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/spi/spidev.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
+index 7ae032f8de63c..81a3cf9253452 100644
+--- a/drivers/spi/spidev.c
++++ b/drivers/spi/spidev.c
+@@ -694,6 +694,7 @@ static struct class *spidev_class;
+ static const struct spi_device_id spidev_spi_ids[] = {
+       { .name = "bh2228fv" },
+       { .name = "dh2228fv" },
++      { .name = "jg10309-01" },
+       { .name = "ltc2488" },
+       { .name = "sx1301" },
+       { .name = "bk4" },
+-- 
+2.43.0
+
diff --git a/queue-6.1/tools-hv-rm-.-.cmd-when-make-clean.patch b/queue-6.1/tools-hv-rm-.-.cmd-when-make-clean.patch
new file mode 100644 (file)
index 0000000..2ac8fbf
--- /dev/null
@@ -0,0 +1,37 @@
+From b82500b63db6ea7005a1b0c31fa51f534fa51226 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 2 Sep 2024 12:21:03 +0800
+Subject: tools: hv: rm .*.cmd when make clean
+
+From: zhang jiao <zhangjiao2@cmss.chinamobile.com>
+
+[ Upstream commit 5e5cc1eb65256e6017e3deec04f9806f2f317853 ]
+
+rm .*.cmd when make clean
+
+Signed-off-by: zhang jiao <zhangjiao2@cmss.chinamobile.com>
+Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
+Link: https://lore.kernel.org/r/20240902042103.5867-1-zhangjiao2@cmss.chinamobile.com
+Signed-off-by: Wei Liu <wei.liu@kernel.org>
+Message-ID: <20240902042103.5867-1-zhangjiao2@cmss.chinamobile.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ tools/hv/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/hv/Makefile b/tools/hv/Makefile
+index fe770e679ae8f..5643058e2d377 100644
+--- a/tools/hv/Makefile
++++ b/tools/hv/Makefile
+@@ -47,7 +47,7 @@ $(OUTPUT)hv_fcopy_daemon: $(HV_FCOPY_DAEMON_IN)
+ clean:
+       rm -f $(ALL_PROGRAMS)
+-      find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete
++      find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete -o -name '\.*.cmd' -delete
+ install: $(ALL_PROGRAMS)
+       install -d -m 755 $(DESTDIR)$(sbindir); \
+-- 
+2.43.0
+
diff --git a/queue-6.1/tools-hv-rm-.-.cmd-when-make-clean.patch-11044 b/queue-6.1/tools-hv-rm-.-.cmd-when-make-clean.patch-11044
new file mode 100644 (file)
index 0000000..2ac8fbf
--- /dev/null
@@ -0,0 +1,37 @@
+From b82500b63db6ea7005a1b0c31fa51f534fa51226 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 2 Sep 2024 12:21:03 +0800
+Subject: tools: hv: rm .*.cmd when make clean
+
+From: zhang jiao <zhangjiao2@cmss.chinamobile.com>
+
+[ Upstream commit 5e5cc1eb65256e6017e3deec04f9806f2f317853 ]
+
+rm .*.cmd when make clean
+
+Signed-off-by: zhang jiao <zhangjiao2@cmss.chinamobile.com>
+Reviewed-by: Saurabh Sengar <ssengar@linux.microsoft.com>
+Link: https://lore.kernel.org/r/20240902042103.5867-1-zhangjiao2@cmss.chinamobile.com
+Signed-off-by: Wei Liu <wei.liu@kernel.org>
+Message-ID: <20240902042103.5867-1-zhangjiao2@cmss.chinamobile.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ tools/hv/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/hv/Makefile b/tools/hv/Makefile
+index fe770e679ae8f..5643058e2d377 100644
+--- a/tools/hv/Makefile
++++ b/tools/hv/Makefile
+@@ -47,7 +47,7 @@ $(OUTPUT)hv_fcopy_daemon: $(HV_FCOPY_DAEMON_IN)
+ clean:
+       rm -f $(ALL_PROGRAMS)
+-      find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete
++      find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete -o -name '\.*.cmd' -delete
+ install: $(ALL_PROGRAMS)
+       install -d -m 755 $(DESTDIR)$(sbindir); \
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch b/queue-6.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch
new file mode 100644 (file)
index 0000000..3383f68
--- /dev/null
@@ -0,0 +1,72 @@
+From 544ad8c06bd61a0510cd4bb714174fd1a8347cf9 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 25 Aug 2024 19:17:01 +0300
+Subject: wifi: iwlwifi: clear trans->state earlier upon error
+
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+
+[ Upstream commit 094513f8a2fbddee51b055d8035f995551f98fce ]
+
+When the firmware crashes, we first told the op_mode and only then,
+changed the transport's state. This is a problem if the op_mode's
+nic_error() handler needs to send a host command: it'll see that the
+transport's state still reflects that the firmware is alive.
+
+Today, this has no consequences since we set the STATUS_FW_ERROR bit and
+that will prevent sending host commands. iwl_fw_dbg_stop_restart_recording
+looks at this bit to know not to send a host command for example.
+
+To fix the hibernation, we needed to reset the firmware without having
+an error and checking STATUS_FW_ERROR to see whether the firmware is
+alive will no longer hold, so this change is necessary as well.
+
+Change the flow a bit.
+Change trans->state before calling the op_mode's nic_error() method and
+check trans->state instead of STATUS_FW_ERROR. This will keep the
+current behavior of iwl_fw_dbg_stop_restart_recording upon firmware
+error, and it'll allow us to call iwl_fw_dbg_stop_restart_recording
+safely even if STATUS_FW_ERROR is clear, but yet, the firmware is not
+alive.
+
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
+Link: https://patch.msgid.link/20240825191257.9d7427fbdfd7.Ia056ca57029a382c921d6f7b6a6b28fc480f2f22@changeid
+[I missed this was a dependency for the hibernation fix, changed
+ the commit message a bit accordingly]
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/intel/iwlwifi/fw/dbg.c    | 2 +-
+ drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
+index 3b0ed1cdfa11e..7fadaec777cea 100644
+--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
++++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
+@@ -3131,7 +3131,7 @@ void iwl_fw_dbg_stop_restart_recording(struct iwl_fw_runtime *fwrt,
+ {
+       int ret __maybe_unused = 0;
+-      if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status))
++      if (!iwl_trans_fw_running(fwrt->trans))
+               return;
+       if (fw_has_capa(&fwrt->fw->ucode_capa,
+diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
+index 70022cadee35b..ad29663a356be 100644
+--- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
++++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
+@@ -1472,8 +1472,8 @@ static inline void iwl_trans_fw_error(struct iwl_trans *trans, bool sync)
+       /* prevent double restarts due to the same erroneous FW */
+       if (!test_and_set_bit(STATUS_FW_ERROR, &trans->status)) {
+-              iwl_op_mode_nic_error(trans->op_mode, sync);
+               trans->state = IWL_TRANS_NO_FW;
++              iwl_op_mode_nic_error(trans->op_mode, sync);
+       }
+ }
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6929 b/queue-6.1/wifi-iwlwifi-clear-trans-state-earlier-upon-error.patch-6929
new file mode 100644 (file)
index 0000000..3383f68
--- /dev/null
@@ -0,0 +1,72 @@
+From 544ad8c06bd61a0510cd4bb714174fd1a8347cf9 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 25 Aug 2024 19:17:01 +0300
+Subject: wifi: iwlwifi: clear trans->state earlier upon error
+
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+
+[ Upstream commit 094513f8a2fbddee51b055d8035f995551f98fce ]
+
+When the firmware crashes, we first told the op_mode and only then,
+changed the transport's state. This is a problem if the op_mode's
+nic_error() handler needs to send a host command: it'll see that the
+transport's state still reflects that the firmware is alive.
+
+Today, this has no consequences since we set the STATUS_FW_ERROR bit and
+that will prevent sending host commands. iwl_fw_dbg_stop_restart_recording
+looks at this bit to know not to send a host command for example.
+
+To fix the hibernation, we needed to reset the firmware without having
+an error and checking STATUS_FW_ERROR to see whether the firmware is
+alive will no longer hold, so this change is necessary as well.
+
+Change the flow a bit.
+Change trans->state before calling the op_mode's nic_error() method and
+check trans->state instead of STATUS_FW_ERROR. This will keep the
+current behavior of iwl_fw_dbg_stop_restart_recording upon firmware
+error, and it'll allow us to call iwl_fw_dbg_stop_restart_recording
+safely even if STATUS_FW_ERROR is clear, but yet, the firmware is not
+alive.
+
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
+Link: https://patch.msgid.link/20240825191257.9d7427fbdfd7.Ia056ca57029a382c921d6f7b6a6b28fc480f2f22@changeid
+[I missed this was a dependency for the hibernation fix, changed
+ the commit message a bit accordingly]
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/intel/iwlwifi/fw/dbg.c    | 2 +-
+ drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
+index 3b0ed1cdfa11e..7fadaec777cea 100644
+--- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
++++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c
+@@ -3131,7 +3131,7 @@ void iwl_fw_dbg_stop_restart_recording(struct iwl_fw_runtime *fwrt,
+ {
+       int ret __maybe_unused = 0;
+-      if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status))
++      if (!iwl_trans_fw_running(fwrt->trans))
+               return;
+       if (fw_has_capa(&fwrt->fw->ucode_capa,
+diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
+index 70022cadee35b..ad29663a356be 100644
+--- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
++++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h
+@@ -1472,8 +1472,8 @@ static inline void iwl_trans_fw_error(struct iwl_trans *trans, bool sync)
+       /* prevent double restarts due to the same erroneous FW */
+       if (!test_and_set_bit(STATUS_FW_ERROR, &trans->status)) {
+-              iwl_op_mode_nic_error(trans->op_mode, sync);
+               trans->state = IWL_TRANS_NO_FW;
++              iwl_op_mode_nic_error(trans->op_mode, sync);
+       }
+ }
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch b/queue-6.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch
new file mode 100644 (file)
index 0000000..d9d6078
--- /dev/null
@@ -0,0 +1,41 @@
+From 6430255faec55353ed3fb5081b1fefde4039fb10 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 25 Aug 2024 19:17:13 +0300
+Subject: wifi: iwlwifi: lower message level for FW buffer destination
+
+From: Benjamin Berg <benjamin.berg@intel.com>
+
+[ Upstream commit f8a129c1e10256c785164ed5efa5d17d45fbd81b ]
+
+An invalid buffer destination is not a problem for the driver and it
+does not make sense to report it with the KERN_ERR message level. As
+such, change the message to use IWL_DEBUG_FW.
+
+Reported-by: Len Brown <lenb@kernel.org>
+Closes: https://lore.kernel.org/r/CAJvTdKkcxJss=DM2sxgv_MR5BeZ4_OC-3ad6tA40TYH2yqHCWw@mail.gmail.com
+Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
+Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
+Link: https://patch.msgid.link/20240825191257.20abf78f05bc.Ifbcecc2ae9fb40b9698302507dcba8b922c8d856@changeid
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c
+index 75fd386b048e9..35c60faf8e8fb 100644
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c
+@@ -68,7 +68,8 @@ iwl_pcie_ctxt_info_dbg_enable(struct iwl_trans *trans,
+               }
+               break;
+       default:
+-              IWL_ERR(trans, "WRT: Invalid buffer destination\n");
++              IWL_DEBUG_FW(trans, "WRT: Invalid buffer destination (%d)\n",
++                           le32_to_cpu(fw_mon_cfg->buf_location));
+       }
+ out:
+       if (dbg_flags)
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-31042 b/queue-6.1/wifi-iwlwifi-lower-message-level-for-fw-buffer-desti.patch-31042
new file mode 100644 (file)
index 0000000..d9d6078
--- /dev/null
@@ -0,0 +1,41 @@
+From 6430255faec55353ed3fb5081b1fefde4039fb10 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 25 Aug 2024 19:17:13 +0300
+Subject: wifi: iwlwifi: lower message level for FW buffer destination
+
+From: Benjamin Berg <benjamin.berg@intel.com>
+
+[ Upstream commit f8a129c1e10256c785164ed5efa5d17d45fbd81b ]
+
+An invalid buffer destination is not a problem for the driver and it
+does not make sense to report it with the KERN_ERR message level. As
+such, change the message to use IWL_DEBUG_FW.
+
+Reported-by: Len Brown <lenb@kernel.org>
+Closes: https://lore.kernel.org/r/CAJvTdKkcxJss=DM2sxgv_MR5BeZ4_OC-3ad6tA40TYH2yqHCWw@mail.gmail.com
+Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
+Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
+Link: https://patch.msgid.link/20240825191257.20abf78f05bc.Ifbcecc2ae9fb40b9698302507dcba8b922c8d856@changeid
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c
+index 75fd386b048e9..35c60faf8e8fb 100644
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c
+@@ -68,7 +68,8 @@ iwl_pcie_ctxt_info_dbg_enable(struct iwl_trans *trans,
+               }
+               break;
+       default:
+-              IWL_ERR(trans, "WRT: Invalid buffer destination\n");
++              IWL_DEBUG_FW(trans, "WRT: Invalid buffer destination (%d)\n",
++                           le32_to_cpu(fw_mon_cfg->buf_location));
+       }
+ out:
+       if (dbg_flags)
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch b/queue-6.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch
new file mode 100644 (file)
index 0000000..35b0d2a
--- /dev/null
@@ -0,0 +1,60 @@
+From 879ec4bc21ffaca3f9af137f0794e09ef0d96283 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 25 Aug 2024 19:17:04 +0300
+Subject: wifi: iwlwifi: mvm: don't wait for tx queues if firmware is dead
+
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+
+[ Upstream commit 3a84454f5204718ca5b4ad2c1f0bf2031e2403d1 ]
+
+There is a WARNING in iwl_trans_wait_tx_queues_empty() (that was
+recently converted from just a message), that can be hit if we
+wait for TX queues to become empty after firmware died. Clearly,
+we can't expect anything from the firmware after it's declared dead.
+
+Don't call iwl_trans_wait_tx_queues_empty() in this case. While it could
+be a good idea to stop the flow earlier, the flush functions do some
+maintenance work that is not related to the firmware, so keep that part
+of the code running even when the firmware is not running.
+
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
+Link: https://patch.msgid.link/20240825191257.a7cbd794cee9.I44a739fbd4ffcc46b83844dd1c7b2eb0c7b270f6@changeid
+[edit commit message]
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+index 4e8bdd3d701bf..bd4301857ba87 100644
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+@@ -4800,6 +4800,10 @@ static void iwl_mvm_flush_no_vif(struct iwl_mvm *mvm, u32 queues, bool drop)
+       int i;
+       if (!iwl_mvm_has_new_tx_api(mvm)) {
++              /* we can't ask the firmware anything if it is dead */
++              if (test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED,
++                           &mvm->status))
++                      return;
+               if (drop) {
+                       mutex_lock(&mvm->mutex);
+                       iwl_mvm_flush_tx_path(mvm,
+@@ -4881,8 +4885,11 @@ static void iwl_mvm_mac_flush(struct ieee80211_hw *hw,
+       /* this can take a while, and we may need/want other operations
+        * to succeed while doing this, so do it without the mutex held
++       * If the firmware is dead, this can't work...
+        */
+-      if (!drop && !iwl_mvm_has_new_tx_api(mvm))
++      if (!drop && !iwl_mvm_has_new_tx_api(mvm) &&
++          !test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED,
++                    &mvm->status))
+               iwl_trans_wait_tx_queues_empty(mvm->trans, msk);
+ }
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-5725 b/queue-6.1/wifi-iwlwifi-mvm-don-t-wait-for-tx-queues-if-firmwar.patch-5725
new file mode 100644 (file)
index 0000000..35b0d2a
--- /dev/null
@@ -0,0 +1,60 @@
+From 879ec4bc21ffaca3f9af137f0794e09ef0d96283 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 25 Aug 2024 19:17:04 +0300
+Subject: wifi: iwlwifi: mvm: don't wait for tx queues if firmware is dead
+
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+
+[ Upstream commit 3a84454f5204718ca5b4ad2c1f0bf2031e2403d1 ]
+
+There is a WARNING in iwl_trans_wait_tx_queues_empty() (that was
+recently converted from just a message), that can be hit if we
+wait for TX queues to become empty after firmware died. Clearly,
+we can't expect anything from the firmware after it's declared dead.
+
+Don't call iwl_trans_wait_tx_queues_empty() in this case. While it could
+be a good idea to stop the flow earlier, the flush functions do some
+maintenance work that is not related to the firmware, so keep that part
+of the code running even when the firmware is not running.
+
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
+Link: https://patch.msgid.link/20240825191257.a7cbd794cee9.I44a739fbd4ffcc46b83844dd1c7b2eb0c7b270f6@changeid
+[edit commit message]
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+index 4e8bdd3d701bf..bd4301857ba87 100644
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+@@ -4800,6 +4800,10 @@ static void iwl_mvm_flush_no_vif(struct iwl_mvm *mvm, u32 queues, bool drop)
+       int i;
+       if (!iwl_mvm_has_new_tx_api(mvm)) {
++              /* we can't ask the firmware anything if it is dead */
++              if (test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED,
++                           &mvm->status))
++                      return;
+               if (drop) {
+                       mutex_lock(&mvm->mutex);
+                       iwl_mvm_flush_tx_path(mvm,
+@@ -4881,8 +4885,11 @@ static void iwl_mvm_mac_flush(struct ieee80211_hw *hw,
+       /* this can take a while, and we may need/want other operations
+        * to succeed while doing this, so do it without the mutex held
++       * If the firmware is dead, this can't work...
+        */
+-      if (!drop && !iwl_mvm_has_new_tx_api(mvm))
++      if (!drop && !iwl_mvm_has_new_tx_api(mvm) &&
++          !test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED,
++                    &mvm->status))
+               iwl_trans_wait_tx_queues_empty(mvm->trans, msk);
+ }
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch b/queue-6.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch
new file mode 100644 (file)
index 0000000..9338436
--- /dev/null
@@ -0,0 +1,78 @@
+From ee050810cd87d4d3998bffe050ffe97b7fba828a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 25 Aug 2024 19:17:05 +0300
+Subject: wifi: iwlwifi: mvm: fix iwl_mvm_scan_fits() calculation
+
+From: Daniel Gabay <daniel.gabay@intel.com>
+
+[ Upstream commit d44162280899c3fc2c6700e21e491e71c3c96e3d ]
+
+The calculation should consider also the 6GHz IE's len, fix that.
+In addition, in iwl_mvm_sched_scan_start() the scan_fits helper is
+called only in case non_psc_incldued is true, but it should be called
+regardless, fix that as well.
+
+Signed-off-by: Daniel Gabay <daniel.gabay@intel.com>
+Reviewed-by: Ilan Peer <ilan.peer@intel.com>
+Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
+Link: https://patch.msgid.link/20240825191257.7db825442fd2.I99f4d6587709de02072fd57957ec7472331c6b1d@changeid
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 23 ++++++++++---------
+ 1 file changed, 12 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
+index b58441c2af730..20c5cc72e4269 100644
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
+@@ -824,8 +824,8 @@ static inline bool iwl_mvm_scan_fits(struct iwl_mvm *mvm, int n_ssids,
+       return ((n_ssids <= PROBE_OPTION_MAX) &&
+               (n_channels <= mvm->fw->ucode_capa.n_scan_channels) &
+               (ies->common_ie_len +
+-               ies->len[NL80211_BAND_2GHZ] +
+-               ies->len[NL80211_BAND_5GHZ] <=
++               ies->len[NL80211_BAND_2GHZ] + ies->len[NL80211_BAND_5GHZ] +
++               ies->len[NL80211_BAND_6GHZ] <=
+                iwl_mvm_max_scan_ie_fw_cmd_room(mvm)));
+ }
+@@ -2935,18 +2935,16 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
+               params.n_channels = j;
+       }
+-      if (non_psc_included &&
+-          !iwl_mvm_scan_fits(mvm, req->n_ssids, ies, params.n_channels)) {
+-              kfree(params.channels);
+-              return -ENOBUFS;
++      if (!iwl_mvm_scan_fits(mvm, req->n_ssids, ies, params.n_channels)) {
++              ret = -ENOBUFS;
++              goto out;
+       }
+       uid = iwl_mvm_build_scan_cmd(mvm, vif, &hcmd, &params, type);
+-
+-      if (non_psc_included)
+-              kfree(params.channels);
+-      if (uid < 0)
+-              return uid;
++      if (uid < 0) {
++              ret = uid;
++              goto out;
++      }
+       ret = iwl_mvm_send_cmd(mvm, &hcmd);
+       if (!ret) {
+@@ -2963,6 +2961,9 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
+               mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED;
+       }
++out:
++      if (non_psc_included)
++              kfree(params.channels);
+       return ret;
+ }
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-32738 b/queue-6.1/wifi-iwlwifi-mvm-fix-iwl_mvm_scan_fits-calculation.patch-32738
new file mode 100644 (file)
index 0000000..9338436
--- /dev/null
@@ -0,0 +1,78 @@
+From ee050810cd87d4d3998bffe050ffe97b7fba828a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 25 Aug 2024 19:17:05 +0300
+Subject: wifi: iwlwifi: mvm: fix iwl_mvm_scan_fits() calculation
+
+From: Daniel Gabay <daniel.gabay@intel.com>
+
+[ Upstream commit d44162280899c3fc2c6700e21e491e71c3c96e3d ]
+
+The calculation should consider also the 6GHz IE's len, fix that.
+In addition, in iwl_mvm_sched_scan_start() the scan_fits helper is
+called only in case non_psc_incldued is true, but it should be called
+regardless, fix that as well.
+
+Signed-off-by: Daniel Gabay <daniel.gabay@intel.com>
+Reviewed-by: Ilan Peer <ilan.peer@intel.com>
+Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
+Link: https://patch.msgid.link/20240825191257.7db825442fd2.I99f4d6587709de02072fd57957ec7472331c6b1d@changeid
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 23 ++++++++++---------
+ 1 file changed, 12 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
+index b58441c2af730..20c5cc72e4269 100644
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
+@@ -824,8 +824,8 @@ static inline bool iwl_mvm_scan_fits(struct iwl_mvm *mvm, int n_ssids,
+       return ((n_ssids <= PROBE_OPTION_MAX) &&
+               (n_channels <= mvm->fw->ucode_capa.n_scan_channels) &
+               (ies->common_ie_len +
+-               ies->len[NL80211_BAND_2GHZ] +
+-               ies->len[NL80211_BAND_5GHZ] <=
++               ies->len[NL80211_BAND_2GHZ] + ies->len[NL80211_BAND_5GHZ] +
++               ies->len[NL80211_BAND_6GHZ] <=
+                iwl_mvm_max_scan_ie_fw_cmd_room(mvm)));
+ }
+@@ -2935,18 +2935,16 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
+               params.n_channels = j;
+       }
+-      if (non_psc_included &&
+-          !iwl_mvm_scan_fits(mvm, req->n_ssids, ies, params.n_channels)) {
+-              kfree(params.channels);
+-              return -ENOBUFS;
++      if (!iwl_mvm_scan_fits(mvm, req->n_ssids, ies, params.n_channels)) {
++              ret = -ENOBUFS;
++              goto out;
+       }
+       uid = iwl_mvm_build_scan_cmd(mvm, vif, &hcmd, &params, type);
+-
+-      if (non_psc_included)
+-              kfree(params.channels);
+-      if (uid < 0)
+-              return uid;
++      if (uid < 0) {
++              ret = uid;
++              goto out;
++      }
+       ret = iwl_mvm_send_cmd(mvm, &hcmd);
+       if (!ret) {
+@@ -2963,6 +2961,9 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
+               mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED;
+       }
++out:
++      if (non_psc_included)
++              kfree(params.channels);
+       return ret;
+ }
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch b/queue-6.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch
new file mode 100644 (file)
index 0000000..11ccd27
--- /dev/null
@@ -0,0 +1,53 @@
+From 77a3713bb69dd649c271152c2ed2839c0829bcf3 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 25 Aug 2024 19:17:10 +0300
+Subject: wifi: iwlwifi: mvm: pause TCM when the firmware is stopped
+
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+
+[ Upstream commit 0668ebc8c2282ca1e7eb96092a347baefffb5fe7 ]
+
+Not doing so will make us send a host command to the transport while the
+firmware is not alive, which will trigger a WARNING.
+
+bad state = 0
+WARNING: CPU: 2 PID: 17434 at drivers/net/wireless/intel/iwlwifi/iwl-trans.c:115 iwl_trans_send_cmd+0x1cb/0x1e0 [iwlwifi]
+RIP: 0010:iwl_trans_send_cmd+0x1cb/0x1e0 [iwlwifi]
+Call Trace:
+ <TASK>
+ iwl_mvm_send_cmd+0x40/0xc0 [iwlmvm]
+ iwl_mvm_config_scan+0x198/0x260 [iwlmvm]
+ iwl_mvm_recalc_tcm+0x730/0x11d0 [iwlmvm]
+ iwl_mvm_tcm_work+0x1d/0x30 [iwlmvm]
+ process_one_work+0x29e/0x640
+ worker_thread+0x2df/0x690
+ ? rescuer_thread+0x540/0x540
+ kthread+0x192/0x1e0
+ ? set_kthread_struct+0x90/0x90
+ ret_from_fork+0x22/0x30
+
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
+Link: https://patch.msgid.link/20240825191257.5abe71ca1b6b.I97a968cb8be1f24f94652d9b110ecbf6af73f89e@changeid
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
+index 88b6d4e566c40..0a11ee347bf32 100644
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
+@@ -1366,6 +1366,8 @@ void iwl_mvm_stop_device(struct iwl_mvm *mvm)
+       clear_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status);
++      iwl_mvm_pause_tcm(mvm, false);
++
+       iwl_fw_dbg_stop_sync(&mvm->fwrt);
+       iwl_trans_stop_device(mvm->trans);
+       iwl_free_fw_paging(&mvm->fwrt);
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-8139 b/queue-6.1/wifi-iwlwifi-mvm-pause-tcm-when-the-firmware-is-stop.patch-8139
new file mode 100644 (file)
index 0000000..11ccd27
--- /dev/null
@@ -0,0 +1,53 @@
+From 77a3713bb69dd649c271152c2ed2839c0829bcf3 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 25 Aug 2024 19:17:10 +0300
+Subject: wifi: iwlwifi: mvm: pause TCM when the firmware is stopped
+
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+
+[ Upstream commit 0668ebc8c2282ca1e7eb96092a347baefffb5fe7 ]
+
+Not doing so will make us send a host command to the transport while the
+firmware is not alive, which will trigger a WARNING.
+
+bad state = 0
+WARNING: CPU: 2 PID: 17434 at drivers/net/wireless/intel/iwlwifi/iwl-trans.c:115 iwl_trans_send_cmd+0x1cb/0x1e0 [iwlwifi]
+RIP: 0010:iwl_trans_send_cmd+0x1cb/0x1e0 [iwlwifi]
+Call Trace:
+ <TASK>
+ iwl_mvm_send_cmd+0x40/0xc0 [iwlmvm]
+ iwl_mvm_config_scan+0x198/0x260 [iwlmvm]
+ iwl_mvm_recalc_tcm+0x730/0x11d0 [iwlmvm]
+ iwl_mvm_tcm_work+0x1d/0x30 [iwlmvm]
+ process_one_work+0x29e/0x640
+ worker_thread+0x2df/0x690
+ ? rescuer_thread+0x540/0x540
+ kthread+0x192/0x1e0
+ ? set_kthread_struct+0x90/0x90
+ ret_from_fork+0x22/0x30
+
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
+Link: https://patch.msgid.link/20240825191257.5abe71ca1b6b.I97a968cb8be1f24f94652d9b110ecbf6af73f89e@changeid
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
+index 88b6d4e566c40..0a11ee347bf32 100644
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
+@@ -1366,6 +1366,8 @@ void iwl_mvm_stop_device(struct iwl_mvm *mvm)
+       clear_bit(IWL_MVM_STATUS_FIRMWARE_RUNNING, &mvm->status);
++      iwl_mvm_pause_tcm(mvm, false);
++
+       iwl_fw_dbg_stop_sync(&mvm->fwrt);
+       iwl_trans_stop_device(mvm->trans);
+       iwl_free_fw_paging(&mvm->fwrt);
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch b/queue-6.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch
new file mode 100644 (file)
index 0000000..f464d89
--- /dev/null
@@ -0,0 +1,39 @@
+From 49042496cbf5fd418eb24a2bcae78cda05c01d89 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 5 Aug 2024 17:20:35 +0300
+Subject: wifi: mac80211: free skb on error path in ieee80211_beacon_get_ap()
+
+From: Dmitry Antipov <dmantipov@yandex.ru>
+
+[ Upstream commit 786c5be9ac29a39b6f37f1fdd2ea59d0fe35d525 ]
+
+In 'ieee80211_beacon_get_ap()', free allocated skb in case of error
+returned by 'ieee80211_beacon_protect()'. Compile tested only.
+
+Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
+Link: https://patch.msgid.link/20240805142035.227847-1-dmantipov@yandex.ru
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/mac80211/tx.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
+index 419baf8efddea..0685ae2ea64eb 100644
+--- a/net/mac80211/tx.c
++++ b/net/mac80211/tx.c
+@@ -5196,8 +5196,10 @@ ieee80211_beacon_get_ap(struct ieee80211_hw *hw,
+       if (beacon->tail)
+               skb_put_data(skb, beacon->tail, beacon->tail_len);
+-      if (ieee80211_beacon_protect(skb, local, sdata, link) < 0)
++      if (ieee80211_beacon_protect(skb, local, sdata, link) < 0) {
++              dev_kfree_skb(skb);
+               return NULL;
++      }
+       ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb,
+                                   chanctx_conf, csa_off_base);
+-- 
+2.43.0
+
diff --git a/queue-6.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-24142 b/queue-6.1/wifi-mac80211-free-skb-on-error-path-in-ieee80211_be.patch-24142
new file mode 100644 (file)
index 0000000..f464d89
--- /dev/null
@@ -0,0 +1,39 @@
+From 49042496cbf5fd418eb24a2bcae78cda05c01d89 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 5 Aug 2024 17:20:35 +0300
+Subject: wifi: mac80211: free skb on error path in ieee80211_beacon_get_ap()
+
+From: Dmitry Antipov <dmantipov@yandex.ru>
+
+[ Upstream commit 786c5be9ac29a39b6f37f1fdd2ea59d0fe35d525 ]
+
+In 'ieee80211_beacon_get_ap()', free allocated skb in case of error
+returned by 'ieee80211_beacon_protect()'. Compile tested only.
+
+Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
+Link: https://patch.msgid.link/20240805142035.227847-1-dmantipov@yandex.ru
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/mac80211/tx.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
+index 419baf8efddea..0685ae2ea64eb 100644
+--- a/net/mac80211/tx.c
++++ b/net/mac80211/tx.c
+@@ -5196,8 +5196,10 @@ ieee80211_beacon_get_ap(struct ieee80211_hw *hw,
+       if (beacon->tail)
+               skb_put_data(skb, beacon->tail, beacon->tail_len);
+-      if (ieee80211_beacon_protect(skb, local, sdata, link) < 0)
++      if (ieee80211_beacon_protect(skb, local, sdata, link) < 0) {
++              dev_kfree_skb(skb);
+               return NULL;
++      }
+       ieee80211_beacon_get_finish(hw, vif, link, offs, beacon, skb,
+                                   chanctx_conf, csa_off_base);
+-- 
+2.43.0
+
diff --git a/queue-6.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch b/queue-6.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch
new file mode 100644 (file)
index 0000000..08b7b71
--- /dev/null
@@ -0,0 +1,49 @@
+From 2b9b9241d9dcde22387a4869e2cd6e9986bef9ef Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 5 Jun 2024 19:55:59 -0700
+Subject: x86/hyperv: Set X86_FEATURE_TSC_KNOWN_FREQ when Hyper-V provides
+ frequency
+
+From: Michael Kelley <mhklinux@outlook.com>
+
+[ Upstream commit 8fcc514809de41153b43ccbe1a0cdf7f72b78e7e ]
+
+A Linux guest on Hyper-V gets the TSC frequency from a synthetic MSR, if
+available. In this case, set X86_FEATURE_TSC_KNOWN_FREQ so that Linux
+doesn't unnecessarily do refined TSC calibration when setting up the TSC
+clocksource.
+
+With this change, a message such as this is no longer output during boot
+when the TSC is used as the clocksource:
+
+[    1.115141] tsc: Refined TSC clocksource calibration: 2918.408 MHz
+
+Furthermore, the guest and host will have exactly the same view of the
+TSC frequency, which is important for features such as the TSC deadline
+timer that are emulated by the Hyper-V host.
+
+Signed-off-by: Michael Kelley <mhklinux@outlook.com>
+Reviewed-by: Roman Kisel <romank@linux.microsoft.com>
+Link: https://lore.kernel.org/r/20240606025559.1631-1-mhklinux@outlook.com
+Signed-off-by: Wei Liu <wei.liu@kernel.org>
+Message-ID: <20240606025559.1631-1-mhklinux@outlook.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/x86/kernel/cpu/mshyperv.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
+index 9b039e9635e40..542b818c0d20d 100644
+--- a/arch/x86/kernel/cpu/mshyperv.c
++++ b/arch/x86/kernel/cpu/mshyperv.c
+@@ -324,6 +324,7 @@ static void __init ms_hyperv_init_platform(void)
+           ms_hyperv.misc_features & HV_FEATURE_FREQUENCY_MSRS_AVAILABLE) {
+               x86_platform.calibrate_tsc = hv_get_tsc_khz;
+               x86_platform.calibrate_cpu = hv_get_tsc_khz;
++              setup_force_cpu_cap(X86_FEATURE_TSC_KNOWN_FREQ);
+       }
+       if (ms_hyperv.priv_high & HV_ISOLATION) {
+-- 
+2.43.0
+
diff --git a/queue-6.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-19340 b/queue-6.1/x86-hyperv-set-x86_feature_tsc_known_freq-when-hyper.patch-19340
new file mode 100644 (file)
index 0000000..08b7b71
--- /dev/null
@@ -0,0 +1,49 @@
+From 2b9b9241d9dcde22387a4869e2cd6e9986bef9ef Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 5 Jun 2024 19:55:59 -0700
+Subject: x86/hyperv: Set X86_FEATURE_TSC_KNOWN_FREQ when Hyper-V provides
+ frequency
+
+From: Michael Kelley <mhklinux@outlook.com>
+
+[ Upstream commit 8fcc514809de41153b43ccbe1a0cdf7f72b78e7e ]
+
+A Linux guest on Hyper-V gets the TSC frequency from a synthetic MSR, if
+available. In this case, set X86_FEATURE_TSC_KNOWN_FREQ so that Linux
+doesn't unnecessarily do refined TSC calibration when setting up the TSC
+clocksource.
+
+With this change, a message such as this is no longer output during boot
+when the TSC is used as the clocksource:
+
+[    1.115141] tsc: Refined TSC clocksource calibration: 2918.408 MHz
+
+Furthermore, the guest and host will have exactly the same view of the
+TSC frequency, which is important for features such as the TSC deadline
+timer that are emulated by the Hyper-V host.
+
+Signed-off-by: Michael Kelley <mhklinux@outlook.com>
+Reviewed-by: Roman Kisel <romank@linux.microsoft.com>
+Link: https://lore.kernel.org/r/20240606025559.1631-1-mhklinux@outlook.com
+Signed-off-by: Wei Liu <wei.liu@kernel.org>
+Message-ID: <20240606025559.1631-1-mhklinux@outlook.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/x86/kernel/cpu/mshyperv.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
+index 9b039e9635e40..542b818c0d20d 100644
+--- a/arch/x86/kernel/cpu/mshyperv.c
++++ b/arch/x86/kernel/cpu/mshyperv.c
+@@ -324,6 +324,7 @@ static void __init ms_hyperv_init_platform(void)
+           ms_hyperv.misc_features & HV_FEATURE_FREQUENCY_MSRS_AVAILABLE) {
+               x86_platform.calibrate_tsc = hv_get_tsc_khz;
+               x86_platform.calibrate_cpu = hv_get_tsc_khz;
++              setup_force_cpu_cap(X86_FEATURE_TSC_KNOWN_FREQ);
+       }
+       if (ms_hyperv.priv_high & HV_ISOLATION) {
+-- 
+2.43.0
+